Creating sub-scenarios
The scenario block create operation creates a new sub-scenario with the current values of the scenario block’s input-variables parameters. A sub-scenario is an instance of the source scenario. Call this operation for each sub-scenario you want to create.
You can have any number of sub-scenarios running in parallel. You do not need to wait for one sub-scenario to complete processing before you create another sub-scenario. When you invoke the create operation, the scenario block immediately sends an update event to its output feed. The fields in this event have the following values:
instance id — This field provides the instance ID of the sub-scenario being created. This is either the instance ID you specified as the value of the
instance id parameter before you called the
create operation, or it is the instance ID generated by the scenario block if the value of the
instance id parameter was an empty string. For the format of a generated instance ID, see
Descriptions of scenario block parameters.
instance created — This field is false because the scenario block has not yet created the new sub-scenario.
instance ended — This field is also false.
instance status — This field has a value of
UNKNOWN because, again, the scenario block has not yet created the new sub-scenario.
In addition, the output feed contains a field for each variable that the source scenario defines.
As soon as the scenario block actually creates the new sub-scenario, it sends another event to the output feed. This time, if creation was successful, the instance created field is true, and the instance status field is RUNNING. For example, you might want to do something like this:
State: Step 1
When true
Then create [MyScenarioBlock]
Then move to state [Step 2]
State: Step 2
When instance created from MyScenarioBlock (output)
Then status = "Instance created successfully"
When the scenario block sends the first event after you invoke the create operation, that event indicates that the sub-scenario you are creating is the context sub-scenario. For example, to issue two orders in sequence you can specify the following:
State 1
When true
Then Symbol from MyScenarioBlock = "APMA"
Then create [MyScenarioBlock]
Then continue
When instance status from MyScenarioBlock(output) = "ENDED"
Then Quantity = Quantity + Quantity from MyScenarioBlock(output)
Then Symbol from MyScenarioBlock = "MSFT"
Then create [MyScenarioBlock]
Then move to state [State 2]
State 2
When instance status from MyScenarioBlock(output) = "ENDED"
(Note that this now reflects the second sub-scenario created.)
Then Quantity = Quantity + Quantity from MyScenarioBlock(output)
Alternatively, you can do it this way:
When true
Then Symbol from MyScenarioBlock = "APMA"
Then create [MyScenarioBlock]
Then Symbol from MyScenarioBlock = "MSFT"
Then create [MyScenarioBlock]
Then Symbol from MyScenarioBlock = "ORCL"
Then create [MyScenarioBlock]
To operate on a sub-scenario that you just created, you must wait for the value of the instance status field to be RUNNING.