api-基本:
§sworkflow提供了集中工作流實現方式:
BasicWorkflow
EJBWorkflow
Ofbizworkflow
§創建新的工作流實例,執行action
Workflow workflow = new BasicWorkflow("testuser");
DefaultConfiguration config = new DefaultConfiguration();
workflow.setConfiguration(config);
long workflowId = workflow.initialize("mytest", 1, null);
workflow.doAction(workflowId, 1, null);
api-abstractworkflow:
§osworkflow中有關工作流流轉的所有核心代碼都在AbstractWorkflow中,BasicWorkflow就是派生自它,可以從AbstractWorkflow派生自己的Workflow類以加入擴展功能
§最重要的方法doAction
§其他主要功能:Initialize、executeFunction、眾多get方法、query、state相關、等等
api-配置文件相關:
§Configuration實例負責系統配置的加載。AbstractWorkflow會調用其load方法,該方法內部會查找一個名為osworkflow.xml的配置文件,并對其解析。
§WorkflowFactory包括XMLWorkflowFactory 、JDBCWorkflowFactory、URLWorkflowFactory,作用即是加載各個不同的工作流定義,維護一個map。
§WorkflowLoader的作用實現配置文件的讀取
§WorkflowDescriptor的作用將平面的xml流轉化為osworkflow內部所使用的具有真正意義的對象。
§其他不同的descriptor,如(step、action…………)之間的關系。
其他不同的descriptor,如(step、action…………)之間的關系。
api-查詢:
§目的:希望了解流程當前的運行狀況à查詢
§WorkflowQuery及其相關類(query包)
§ WorkflowQuery queryLeft = new WorkflowQuery(
WorkflowQuery.OWNER, WorkflowQuery.CURRENT, WorkflowQuery.EQUALS, “test");
WorkflowQuery queryRight = new WorkflowQuery(
WorkflowQuery.STATUS, WorkflowQuery.CURRENT, WorkflowQuery.EQUALS, “Underway");
WorkflowQuery query = new WorkflowQuery(
queryLeft, WorkflowQuery.AND, queryRight);
List workflows = wf.query(query);
for (Iterator iterator = workflows.iterator(); iterator.hasNext();)
Long wfId = (Long) iterator.next();
}
§AbstractWorkflow導向workflowstore進行實際查詢,最后將查詢結果存儲與arraylist中
§目的:希望了解流程當前的運行狀況à查詢
§WorkflowQuery及其相關類(query包)
§ WorkflowQuery queryLeft = new WorkflowQuery(
WorkflowQuery.OWNER, WorkflowQuery.CURRENT, WorkflowQuery.EQUALS, “test");
WorkflowQuery queryRight = new WorkflowQuery(
WorkflowQuery.STATUS, WorkflowQuery.CURRENT, WorkflowQuery.EQUALS, “Underway");
WorkflowQuery query = new WorkflowQuery(
queryLeft, WorkflowQuery.AND, queryRight);
List workflows = wf.query(query);
for (Iterator iterator = workflows.iterator(); iterator.hasNext();)
Long wfId = (Long) iterator.next();
}
§AbstractWorkflow導向workflowstore進行實際查詢,最后將查詢結果存儲與arraylist中
api-用戶治理:
§OSWorkflow在用戶治理方面所提供的功能,主要包括用戶的創建、群組的定義、用戶驗證、以及對step執行人的跟蹤記錄和執行權限的判定等等
§用戶/群組的治理是由UserManager來完成的
§代碼中具體講解
代碼中具體講解
osworkflow任務治理:
§OSWorkflow引擎只負責了“流程的運轉”,當然這個運轉會根據你所定義的Action和condtion來判定。
§Condition—條件判定
§Function(PRe and post)--Step、action、result執行過程需要調用的功能
§FunctionProvider接口、execute方法
§<step id="4" name="Assign">
§ <pre-functions>
§ <function type="class">
§ <arg name="class.name">nUCleus.assign.AssignmentFunction</arg>
§ <arg name="Participant">A</arg>
§ <arg name="ParticipantType">role</arg>
<arg name="actionID">22</arg>
§ </function>
§ </pre-functions>
§ <actions>
§ ······
§ </actions>
§ </step>
</step>
osworkflow的schedule:
§定時執行某項任務的功能,Quartz
§<function type="class">
<arg name="class.name">com.opensymphony.workflow.util.ScheduleJob</arg>
<arg name="triggerId">1</arg>
<arg name="jobName">testJob</arg>
<arg name="triggerName">testTrigger</arg>
<arg name="groupName">test</arg>
<arg name="repeat">10</arg>
<arg name="repeatDelay">2000</arg>
<arg name="cronEXPression">0,5,10,15,20,25,30,35,40,45,50,55 * * * * ?</arg>
<arg name="username">test</arg>
<arg name="passWord">test</arg>
<arg name="local">true</arg>
<arg name="schedulerStart">true</arg>
</function>
§Trigger和jobDetail,trigger觸發條件滿足后,則會激活真正的job實例,job實例真正執行的是trigger function(在配置文件中定義)
最后講解osworkflow自帶小例子,約1小時40分鐘講完。以上為PPT 的基本內容。
新聞熱點
疑難解答