The core of OSWORKFLOW is a descriptor file that uses XML definitions. Here is a descriptor file tag for OsWorkflow and the basic concept of OSWORKFLOW:
First, noun descriptions:
Workflow workflow
2. Step Step
3. Action action
4. Result execution result
5. Split Step Segmentation
6. JOIN Step Merge
7. Register register
8. Functions function
9. Conditions Conditions
10. Context context
11. State status
Second, labels and concepts:
1. A workflow (Workflow) can contain multiple steps.
2. A STEP can have multiple Actions. The Action can be set to be automated, or it can be performed by user intervention.
3. An Action To have at least one Unconditional Result and zero or more Conditional Result (Result refers to the results of the Action).
4. If you specify multiple Conditional Results, the first RESULT that meets the execution criteria will be executed, and if you do not specify Conditional Results or no Conditional Results meet the requirements of the execution, then UNCONDITIONAL RESULT will be performed.
5. A result can still reside the process in the current STEP, can point to a new STEP, can point to a split (step segmentation), can also point to a JOIN (step merging). In all cases described, Workflow
The status can also be changed (for example: Workflow is underway, queued, and finished).
6. If a result point to a split, the properties of the Split it point to the Split are described in the label of the splits.
7. A split can have one or more UNCONDITIONAL RESULTS, but there is no Conditional Results. Unconditional Results points to Steps from this split that is about to enter.
8. Register is a global variable that can be processed by each Workflow, and can also be used in functions (functions) and Conditions.
9. PropertySet is a MAP that stores persistent data, which can be used as a global call.
10. TransientVars is an MAP for storing temporary variables, all of Functions, Conditions can use it. It contains all Registers, User INPUTS, and CONTEXT (context) of the current Workflow and State. It only exists in a life period called in a Workflow.
Third, the descriptor file in the OSWORKFLOW example:
Below is a descriptor file in the OSWORKFLOW example, you can refer to the description of the above descriptor file comparison:
XML Version = "1.0" encoding = "UTF-8"?>
condition>
com.opensymphony.workflow.util.osusergroupCondition
arg>
condition>
conditions>
restrict-to>
function>
pre-functions>
Old-status = "finished" status = "underway" step = "1" Owner = "$ {CALLER}" /> results> action> initial-actions> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> permission> external-permissions> condition> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> String Caller = context.getcaller (); PropertySet.SetString ("Caller", Caller; Boolean Test = True; String yuck = NULL; String blah = "987654321"; System.out.println ("$$$$$$$$$$$$$$$$$$$$$$"); arg> function> pre-functions> PropertySet.getstring ("Caller"). Equals ("test") arg> condition> conditions> System.out.println ("111111111111"); arg> function> post-functions> result> results> System.out.Println ("22222222222222"); arg> function> post-functions> action> actions> step> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> permission> external-permissions> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.osusergroupCondition arg> conditions> restrict-to> com.opensymphony.workflow.util.caller arg> function> pre-functions> Old-status = "finished" status = "underway" step = "2" Owner = "$ {CALLER}" /> results> action> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> com.opensymphony.workflow.util.mostRecentowner arg> function> pre-functions> Old-status = "finished" status = "underway" step = "3" Owner = "$ {mostultowner}" /> results> action> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> results> action> actions> step> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> permission> external-permissions> com.opensymphony.workflow.util.statusconditio arg> condition> arg> condition> conditions> restrict-to> com.opensymphony.workflow.util.mostRecentowner arg> function> pre-functions> Old-status = "finished" status = "underway" step = "2" Owner = "$ {mostultower}" /> results> action> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> results> action> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> com.opensymphony.workflow.util.mostRecentowner arg> function> pre-functions> Old-status = "finished" status = "underway" step = "5" Owner = "$ {mostultowner}" /> results> action> actions> step> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> permission> external-permissions> com.opensymphony.workflow.util.statuscondition arg> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> com.opensymphony.workflow.util.mostRecentowner arg> function> pre-functions> Old-status = "finished" status = "underway" step = "3" Owner = "$ {mostultowner}" /> results> action> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.osusergroupCondition arg> condition> conditions> restrict-to> com.opensymphony.workflow.util.caller arg> function> pre-functions> Old-status = "finished" status = "underway" step = "4" OWNER = "$ {Caller}" /> results> action> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> results> action> actions> step> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> com.opensymphony.workflow.util.caller arg> function> pre-functions> Old-status = "finished" status = "finished" step = "5" Owner = "$ {CALLER}" /> results> action> actions> step> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> results> action> actions> step> com.opensymphony.workflow.util.statuscondition arg> condition> com.opensymphony.workflow.util.allowownergyLycondition arg> condition> conditions> restrict-to> Old-status = "finished" ooner = "test" status = "underway" step = "8" /> results> action> actions> step> com.opensymphony.workflow.util.statuscondition arg> com.opensymphony.workflow.util.allowownergyLycondition arg> results> action> actions> step> steps> split> splits>
&& "finished" .equals (jn.getstep (8) .GetStatus ())]]> arg> condition> conditions> join> joins> Workflow>