osworkflow

调用接口中的参数和方法详解 
Input Map 
workflow的initialize、doAction,还有wf.getAvailableActions(id, map)方法都有一个HashMap
类型的参数,是用来传递工作流中所需要的数据或者对象的,其有效范围只包括当前步骤或
者下一步的 pre-function。可应用在function,condition,validator等当中。 
Workflow接口里面的主要方法 
getAvailableActions(id, null) 
得到当前工作流实例所有有效动作. 
第一个参数:工作流实例ID 
第二个参数:要传递的对象 
getCurrentSteps(id) 
根据工作流实例ID得到所有当前步骤. 
getEntryState(id) 
根据工作流实例ID得到所有当前实例状态. 
getHistorySteps(id) 
根据工作流实例ID得到所有历史步骤. 
getPropertySet(id) 
根据工作流实例ID得到PropertySet对象. 
getSecurityPermissions(id) 
根据工作流实例ID得到当前状态权限列表. 
getWorkflowDescriptor(id) 
根据工作流实例ID得到工作流XML描述文件对象. 
getWorkflowName(id) 
根据工作流实例ID得到当前实例名称. 
getWorkflowNames() 
得到所有的工作流程名称 
 
WorkflowDescriptor对象里面的主要方法 
getAction(id) 
根据动作ID得到当前动作描述信息.有三种类型:初始
化动作;全局动作;步骤中的一般动作。 
getCommonActions() 
得到通用动作列表. 
getGlobalActions() 
得到全局动作列表.3 
getGlobalConditions() 
得到全局条件列表. 
getInitialAction(id) 
根据初始动作ID得到初始动作描述信息. 
getInitialActions() 
得到所有初始动作描述信息. 
getJoin(id) 
根据Join ID得到相应Join描述信息. 
getJoins() 
得到所有Join描述信息. 
getName() 
得到工作流程描述文件名称. 
getRegisters() 
得到所有的注册器. 
getSplit(id) 
根据Split ID得到相应Split描述信息. 
getSplits() 
得到所有Split描述信息. 
getStep(id) 
根据Step ID得到相应Step描述信息. 
getSteps() 
得到所有Step描述信息. 
getTriggerFunction(id) 
根据TriggerFunction ID得到相应TriggerFunction描述
信息. 
getTriggerFunctions() 
得到所有TriggerFunction描述信息. 

调用接口中的参数和方法详解 
Input Map 
workflow的initialize、doAction,还有wf.getAvailableActions(id, map)方法都有一个HashMap类型的参数,是用来传递工作流中所需要的数据或者对象的,其有效范围只包括当前步骤或者下一步的 pre-function。可应用在function,condition,validator等当中。 
Workflow接口里面的主要方法 
getAvailableActions(id, null) 
得到当前工作流实例所有有效动作. 
第一个参数:工作流实例ID 
第二个参数:要传递的对象 
getCurrentSteps(id) 
根据工作流实例ID得到所有当前步骤. 
getEntryState(id) 
根据工作流实例ID得到所有当前实例状态. 
getHistorySteps(id) 
根据工作流实例ID得到所有历史步骤. 
getPropertySet(id) 
根据工作流实例ID得到PropertySet对象. 
getSecurityPermissions(id) 
根据工作流实例ID得到当前状态权限列表. 
getWorkflowDescriptor(id) 
根据工作流实例ID得到工作流XML描述文件对象. 
getWorkflowName(id) 
根据工作流实例ID得到当前实例名称. 
getWorkflowNames() 
得到所有的工作流程名称 


 
WorkflowDescriptor对象里面的主要方法 
getAction(id) 
根据动作ID得到当前动作描述信息.有三种类型:初始化动作;全局动作;步骤中的一般动作。 
getCommonActions() 
得到通用动作列表. 
getGlobalActions() 
得到全局动作列表.3 
getGlobalConditions() 
得到全局条件列表. 
getInitialAction(id) 
根据初始动作ID得到初始动作描述信息. 
getInitialActions() 
得到所有初始动作描述信息. 
getJoin(id) 
根据Join ID得到相应Join描述信息. 
getJoins() 
得到所有Join描述信息. 
getName() 
得到工作流程描述文件名称. 
getRegisters() 
得到所有的注册器. 
getSplit(id) 
根据Split ID得到相应Split描述信息. 
getSplits() 
得到所有Split描述信息. 
getStep(id) 
根据Step ID得到相应Step描述信息. 
getSteps() 
得到所有Step描述信息. 

getTriggerFunction(id) 
根据TriggerFunction ID得到相应TriggerFunction描述信息. 
getTriggerFunctions() 
得到所有TriggerFunction描述信息. 

的位置没有先后顺序,可以放在其前,也可放在其后,也可放在中间。

<common-actions>

<action id="1001" name="发布通知">

<results>

<unconditional-result old-status="Finished" status="Underway" step="-1">

<post-functions>

<function type="beanshell">

<arg name="script"> 47

System.out.println("发布通知。。。");

OSWorkflow 开发指南 Version 1.0

October 15, 2007 So many open source projects. Why not Open your Documents?

</arg>

</function>

</post-functions>

</unconditional-result>

</results>

</action>

</common-actions>

………………………………………..

<actions>

<common-action id="1001"/>

……………………………………….

</actions>

自动动作

只要满足条件,动作将会自动执行(auto action)。如果有两个自动动作都符合条件,优先执行配置在前面的自动动作;如果说上下两个相连的步骤里都有符合条件的自动动作,且上一步骤里面自动动作的结果指向下一步骤,将连续执行;如果自动动作执行以后步骤不发生改变,可以手动执行其它未执行的非自动动作;如果自动动作执行以后步骤发生改变,将直接跳到结果里所指向的相应步骤。

以下是一个典型的例子:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE workflow PUBLIC "-//OpenSymphony Group//DTD OSWorkflow 2.6//EN" "http://www.opensymphony.com/osworkflow/workflow_2_6.dtd">

<workflow>

<initial-actions>

<action id="100" name="Start Workflow">

<pre-functions>

<function type="class">

<arg name="class.name">

com.opensymphony.workflow.util.Caller

</arg>

</function>

</pre-functions>

<results>

<unconditional-result old-status="Finished" status="Underway" step="1" owner="${caller}"/>

</results>

</action>

</initial-actions>

<steps>

<step id="1" name="First Step">

<actions> 48

<action id="1" name="The first action">

OSWorkflow 开发指南 Version 1.0

October 15, 2007 So many open source projects. Why not Open your Documents?

<results>

<unconditional-result old-status="Finished" status="Queued" step="2"/>

</results>

</action>

<action id="2" name="The second action" auto="true">

<restrict-to>

<conditions type="AND">

<condition type="class">

<arg name="status">Underway</arg>

<arg name="class.name">

com.opensymphony.workflow.util.StatusCondition

</arg>

</condition>

</conditions>

</restrict-to>

<results>

<unconditional-result old-status="Finished" status="Queued" step="1"/>

</results>

</action>

</actions>

</step>

<step id="2" name="Sencond Step">

<actions>

<action id="3" name="The third action">

<restrict-to>

<conditions type="AND">

<condition type="class">

<arg name="status">Queued</arg>

<arg name="class.name">

com.opensymphony.workflow.util.StatusCondition

</arg>

</condition>

</conditions>

</restrict-to>

<results>

<unconditional-result old-status="Finished" status="Finished" step="2"/>

</results>

</action>

</actions>

</step> 49

</steps>

</workflow>

原文地址:https://www.cnblogs.com/yangy608/p/1778653.html