osworkflow 小培训

本文深入介绍了OSWorkflow工作流管理系统,涵盖其核心理念、架构组件及API使用等关键信息,旨在帮助读者理解和掌握OSWorkflow的实施与定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作流简介:

 工作流是业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协同工作,以达到业务的整体目标。

工作流管理系统是支持企业经营过程高效执行并监控其执行过程的计算机软件系统。
典型的WFMS至少由如下几个模块组成:业务流程建模定义工具、过程定义、工作流执行环境(引擎)、任务管理。当然还会包括应用和IT工具。
目前开源工作流项目众多(shark、osworkflow、jbpm、ofbiz、werkflow、willow……)
规范问题

 
工作流参考模型(参见WMFC):
OSWorkflow简介:
 
所有相关的osworkflow的文档大家可以到http://wiki.opensymphony.com/space/OSWorkflow处得到
Osworkflow与目前绝大多数的工作流系统是不同的,而最大的不同点体现在它的韧性上和灵活程度上 。osworkflow所提供的解决方案能够提供足够的灵活度来满足一个大型各种应用的所有需求。
OSWorkflow是只是一个workflow engine的内核体。我们都说osworkflow非常的易扩展,但是这也同样说明了,用osworkflow去实现一个能够运行的工作流系统是非常繁琐的事情。 
Osworkflow 的api部分将会支持jdk1.3+
工作流的持久存储(memorystore(默认)自带的例子就是如此,SerializableStore,JDBCStore,ofbizstore,和EJBStore. )另外还可以自己实现。
工作流定义部分(核心)通过osworkflow自带例子理解
   主要是osworkflow.xml 、workflows.xml以及***.xml文件
osworkflow核心概念:
 
OSWorkflow是基于FSM(finite state machine,有限状态机)理论
理解state,理解doAction。
一个state到另一个state的转移(Transtion),依赖于action的发生。在一个workflow的生命周期中,总会存在至少一个或多个state:这就是osworkflow engine的最核心理念。和我们通常所理解的Engine并不是很一样 ,在一个访问请求中,一个Workfow对象负责维护一个流程实例的管理和操作。  
核心名词概念解释:
 
step,status,actions ,result,join,split,Functions ,Validators,Registers,Conditions
Common and global actions
Unconditional Result 和conditional Result
pre function、post function和Trigger Functions
Validators (不符合条件,抛InvalidInputException)
TransientVars和PropertySet
Register
Permissions and Restrictions
Auto actions
Workflow Instance State(CREATED, ACTIVATED, SUSPENDED, KILLED 和 COMPLETED)
 
osworkflow的GUI:
 
Osworkflow在2.5.0版本就开始支持图形操作(designer),2.6.0和2.7.0做了许多改进。打算在3.0中正式推出。所以现在在使用GUI操作时候还是需要进行一些适当的预防手段的。
可以把osworkflow看做一个低层次的工作流实现。在其他工作流系统中像loops和conditions这样的情况可以以图形图标形式展现出来,在osworkflow中必须进行编码。就是说最起码的脚本语言必须来如此设定。所以并不希望非技术人员来修改工作流。尽管一些系统提供了GUI操作来完成简单的工作流编辑,但是这种做法并不是十全十美的,如当这样改变流程后,此工作流周边的应用往往被破坏。所以osworkflow始终认为最好的变更控制办法就是以开发人员(前提:熟知每个变化)来做这些操作。 

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…………)之间的关系。 
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中
 
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 的基本内容。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值