工作流简介:
§工作流是业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协同工作,以达到业务的整体目标。
§工作流管理系统是支持企业经营过程高效执行并监控其执行过程的计算机软件系统。
§典型的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)
§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)
核心概念图见银狐blog
osworkflow的GUI:
§Osworkflow在2.5.0版本就开始支持图形操作(designer),2.6.0和2.7.0做了许多改进。打算在3.0中正式推出。所以现在在使用GUI操作时候还是需要进行一些适当的预防手段的。
§可以把osworkflow看做一个低层次的工作流实现。在其他工作流系统中像loops和conditions这样的情况可以以图形图标形式展现出来,在osworkflow中必须进行编码。就是说最起码的脚本语言必须来如此设定。所以并不希望非技术人员来修改工作流。尽管一些系统提供了GUI操作来完成简单的工作流编辑,但是这种做法并不是十全十美的,如当这样改变流程后,此工作流周边的应用往往被破坏。所以osworkflow始终认为最好的变更控制办法就是以开发人员(前提:熟知每个变化)来做这些操作。
可以把osworkflow看做一个低层次的工作流实现。在其他工作流系统中像loops和conditions这样的情况可以以图形图标形式展现出来,在osworkflow中必须进行编码。就是说最起码的脚本语言必须来如此设定。所以并不希望非技术人员来修改工作流。尽管一些系统提供了GUI操作来完成简单的工作流编辑,但是这种做法并不是十全十美的,如当这样改变流程后,此工作流周边的应用往往被破坏。所以osworkflow始终认为最好的变更控制办法就是以开发人员(前提:熟知每个变化)来做这些操作。