Skip to main content
Version: 8.1


This function is used in Python Scripting.


Sets a variable inside a currently running SFC chart.

Client Permission Restrictions

Permission Type: SFC Management

Client access to this scripting function is blocked to users that do not meet the role/zone requirements for the above permission type. This function is unaffected when run in the Gateway scope.


system.sfc.setVariable(instanceId, [stepId], variableName, variableValue)


StringinstanceIdThe instance identifier of the chart.
StringstepIdThe id for a step inside of a chart. If omitted the function will target a chart scoped variable. [optional]
StringvariableNameThe name of the variable to set.
ObjectvariableValueThe value for the variable to be set to.




Gateway, Vision Client, Perspective Session


Omitting the stepId parameter will cause the function to target a chart scoped variable. If the variable is persistent to the whole chart, or used in multiple different steps, then this parameter should be omitted.

If a stepId parameter is used, then the function will target a step scoped variable. The step associated with the stepId must be the currently active step.

Code Examples

Code Snippet
# The following passes the chart instance ID and step ID to a client message Handler. The message handler can then wait
# for user input, and then write back to the step variables.

# The example assumes there is a chart scoped variable called confirmEndchart, and a step scoped variable called "messageSent".

# Get the instanceId of the current chart
chartID = chart.get("instanceId")

# Get the id of the step
stepID = step.get("id")

# Create a payload to pass to the client.
# Include the instanceId and stepId so the script from the message handler knows which
# chart and step to write to
payload = {"chartID" : chartID, "stepID" : stepID}

# Send the message
system.util.sendMessage(project = "SFC", messageHandler = "SFCMessage", payload = payload


# The following script would be placed on a client message handler. This receives the payload,
# and sets a variable on either the chart or step depending on user selection

# Read items out of the payload
id = payload['chartID']
stepId = payload['stepID']

# Ask the user to end the chart
if system.gui.confirm("Would you like to end the process"):
#If yes, end the chart. confirmEndChart is chart scoped, so only 3 parameters are passed
#If no, reset the step.messageSent variable so that the user will be prompted again
#messageSent is step scoped, so 4 parameters are passed


system sfc setVariable, sfc.setVariable