When a workflow is initiated by another existing workflow, the existing one pauses as the sub-workflow begins to run. Upon finishing the sub-workflow, it is then terminated while the first workflow resumes and becomes active again.
However, if the sub-workflow happens to be the root workflow, it cannot be terminated.
Identifier: finish_workflow
Minimal
<finish_workflow id="finish_without_error"/>
All options
<finish_workflow id="finish_without_error" delay="500" sound_feedback_enabled="false">
    <output>
        <param name="error" type="bool">false</param>
    </output>
</finish_workflow>
            Starts a transition from one step in a workflow to another step in the same workflow, if it exists.
Identifier: step_transition
Minimal
<step_transition id="start_login" to="login"/>
All options
<step_transition id="start_login" to="login" delay="2000" sound_feedback_enabled="false">
   <output>
      <param name="timeout_ms" type="long">5000</param>
      <param name="skip_scan" type="bool">1</param>
      <param name="area">#{location}</param>
      <param name="domain">#{client.USER_DOMAIN}</param>
   </output>
</step_transition>
            Starts a sub-workflow while putting your current workflow on pause. Once the sub-workflow finishes, the initial workflow becomes active again.
Usable within components by combining it with start_task_from_template.
Identifier: start_workflow
Minimal
<start_workflow id="start_login" wf="login"/>
All options
<start_workflow id="start_login" wf="login" start_step="login_area" delay="2000" sound_feedback_enabled="false" stop_current_workflow="true">
   <output>
      <param name="skip_scan" type="bool">1</param>
      <param name="area">#{location}</param>
   </output>
</start_workflow>
            Creates a new task based on a template you create for your workflow.
Identifier: start_task_from_template
This action can be used to start a sub-workflow from the current workflow. Try creating a new task based on a template you created for the sub-workflow in the Frontline Command Center:
<action id="start_task_from_template" type="start_task_from_template">
    <param name="wf">Templatename</param>
    <param name="cancel_ongoing" type="bool">false</param>
    <param name="close_ongoing" type="bool">false</param>
</action>
             The action will then give an event with the command "FOUND" or "NOT_FOUND" depending on whether the template name can be found on the server. Both cases need to be handled accordingly:
<rule id="template_not_found">
    <expression><![CDATA[ #{event(start_task_from_template):command} == 'NOT_FOUND' ]]> </expression>
    <actions>
        <action ref="finish_workflow_failed" />
    </actions>
</rule>
             If the template could be found the action will set a step context variable workflow containing the URI to pass to the start_workflow action.
<rule id="template_found">
    <expression><![CDATA[ #{event(start_task_from_template):command} == 'FOUND' ]]> </expression>
    <actions>
        <action id="startworkflow" type="start_workflow">
            <param name="wf">#{workflow}</param>
        </action>
    </actions>
</rule>
            Pauses a task and returns the user to the task list. The task state is not lost and can be finished later.
Identifier: pause_task
Minimal
<pause_task id="pause"/>