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 的基本内容。
闽公网安备 35060202000074号