服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

osworkflow 小培训(2)

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 的基本内容。

扫描关注微信公众号