龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

osworkflow 小培训(2)

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
api-基本: sworkflow提供了集中工作流实现方式: BasicWorkflow EJBWorkflow Ofbizworkflow 创建新的工作流实例,执行action Workflow workflow = new BasicWorkflow("testuser"); DefaultConfiguration config = new DefaultCo

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


  
精彩图集

赞助商链接