- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5_工作流应用中经典问题的解决方案_20090211【荐】.pdf
5_
5_
55__工作流应用中经典问题的解决方案
作者:非也 QQEmail:nychen2000@163.com
目 录
1. 流程定义文件的存储与版本控制2
1) 题外话2
2) FireWorkflow流程定义文件的存储与版本控制2
2. 业务数据vs工作流数据3
1) 业务数据及工作流数据的划分和存储3
3) 必要的扩展4
3. 流程数据存取设计与事务一致性6
4. 与用户管理系统的接口7
5. 与业务表单的接口8
6. 退回与取回10
7. 工单签收与业务实际中的材料移交11
8. 流程“自定义”与“自调整”11
9. 工作流系统的性能问题11
1. 流程定义文件的存储与版本控制
1) 题外话
1) 题外话
11)) 题题外外话话
我们常常人为地将系统划分成所谓的“源代码(如java文件)”和“配置文件(或配置
数据)”;甚至认为开发“源代码”的工作才是编程工作,编写配置文件、调整配置数据的工
作是“免编程”。
对此,我非常不以为然!且不说二者本来就没实质区别,都需要开发人员去开发;如果
把“配置文件(或配置数据)”发挥至极端,复杂的不行,开发人员需要花更多的精力和时
间去学习的话,“免编程”就没有任何价值!
但是,并不能说java 文件和Xml配置文件(尤其是数据库中的配置数据)没有区别。Java
文件需要编译才能运行,xml配置文件和数据库中的配置数据修改后立即发挥作用。一般情
况,下修改Xml配置文件和配置数据下比修改java 文件简单。
因此,在我看来java 文件也好,xml 配置文件也好.,配置数据也好都是系统的代码。
对他们的开发活动都是“编程”。这几种代码都需要某种形式的版本控制。
2) Fire Workflow 流程定义文件的存储与版本控制
2) Fire Workflow 流程定义文件的存储与版本控制
22)) FFiirree WWoorrkkffllooww流流程程定定义义文文件件的的存存储储与与版版本本控控制制
FireWorkflow流程定义文件是整个业务系统代码的一部分,以xml 的形式表现,开发
时存放在/src目录下,运行时存放在classpath中(如/bin或者/WEB-INF/classes或者某个jar
包中)。在运行时通过“流程定义服务”的实现类 org.fireflow.engine.definition.
DefinitionService4FileSystem从classpath中读取定义文件。
这种流程文件的存储方案非常简单,但是没有照顾到如下需求:1)在系统上线运行后,
流程常常需要调整;在流程定义更新后,系统中仍然有旧版本的流程实例在运行。2)最终
用户有自行调整业务流程的需求,存储在classpath中的流程定义不能适应这种需求。
因此上述流程文件存储方案适合于系统开发阶段,方便开发人员快速地结合业务数据进
行系统测试。而且,FireWorkflow提供了和流行的IDE结合的很好的设计器,使得开发测
试业务流程就像开发测试一个java类一样简单。
Fire Workflow 流程定义文件还可以存储在后台数据库表 T_FF_DF_WORKFLOWDEF
中。该表可以记录同名流程的各个版本。FireWorkflow要求每个流程实例只能在自己的流
程版本上运行,不能“迁移”到同名流程的其他版本。这种规定不是FireWorkflow想“偷
懒”,而是由于FireWorkflow是基于比较严密的PetriNet流转算法,同名的流程不同版本间
很可能改变了网络拓扑结构,这种情况下流程实例“迁移”到新的流程版本后无法正确运行。
以我的经验看,FireWorkflow的这种规定适合绝大多数业务场合。
至于用户自行调整流程,将来可以通过FireWorkflow的WEB工具完成。(该Web工具
尚未实。
对于存储在T_FF_DF_WORKFLOWDEF中的流程定义文件,需要用“流程定义服务”
的另外一个实现类org.fireflow.engine.definition.DefinitionService4DBMS进行读取。该类
文档评论(0)