工作流引擎核心调度算法与PetriNet
Petri网的建模与分析

Petri网的建模与分析作者:毛子剑来源:《无线互联科技》2021年第23期摘要:Petri网具有一种系统的数学建模能力,广泛地应用于具有同步、并发、冲突的离散事件系统的建模,可以用来描述较为复杂的业务过程。
随着业务过程管理的复杂程度不断增加,使得业务过程建模的难度也逐渐提高,是当前业务过程建模中需要解决的主要问题。
首先,文章介绍了Petri网的基本概念及其形式化描述,其次描述了在业务过程建模中常用的4种工作流模型的基本结构并结合Petri网构成了工作流Petri网的基本模型,以此完成对业务过程的建模。
最后,运用Petri网对索赔处理过程进行建模,并对其可达状态进行分析,进而提高业务过程管理质量。
关键词:Petri网;业务过程;工作流;过程管理;可达状态0 引言Petri网一种是离散事件系统建模的通用分析工具,在系统建模领域有着广泛的应用[1],且具有严格的形式化定义、丰富的表达能力和直观的图像化描述等特点[2]。
Petri网适用于描述异步并发系统的网状模型,既能描述系统的结构,又可以模拟系统的运行状态。
它没有任何形式的全局控制,是一个异步系统,即按照事件间的依赖关系建立业务过程模型。
随着业务过程管理水平的不断提高,业务过程的复杂化程度也不断增加,一般的业务流程建模不具备异步并发的特点,而Petri网作为一种建模工具,不仅可以较好地描述业务过程的动态性特征,而且可以模拟过程模型的运行状态。
Petri网的基本组成元素包括库所、变迁、托肯以及流关系等,在Petri网的图形化描述中,库所、变迁和托肯分别使用圆圈、矩形块和小黑点表示,使用有向弧连接库所和变迁,从而共同构成一个基本的Petri网模型。
其中,有向弧只能由库所指向变迁或者由变迁指向库所,不存在流关系由库所指向库所或者由变迁指向变迁,即变迁之间使用库所连接。
库所表示建模过程的可能状态,变迁表示建模过程的事件活动,库所中的托肯表示资源,托肯个数则表示资源个数。
航天复杂系统测发控流程仿真引擎设计与评价

第45卷 第12期2023年12月系统工程与电子技术SystemsEngineeringandElectronicsVol.45 No.12December2023文章编号:1001 506X(2023)12 3866 09 网址:www.sys ele.com收稿日期:20220921;修回日期:20230201;网络优先出版日期:20230220。
网络优先出版地址:http:∥kns.cnki.net/kcms/detail/11.2422.TN.20230220.1027.004.html 通讯作者.引用格式:胡涛,申立群,田宇阳,等.航天复杂系统测发控流程仿真引擎设计与评价[J].系统工程与电子技术,2023,45(12):3866 3874.犚犲犳犲狉犲狀犮犲犳狅狉犿犪狋:HUT,SHENLQ,TIANYY,etal.Designandevaluationofsimulationenginefortest firingcontrolprocessofaero spacecomplexsystem[J].SystemsEngineeringandElectronics,2023,45(12):3866 3874.航天复杂系统测发控流程仿真引擎设计与评价胡 涛,申立群 ,田宇阳,董伟锋(哈尔滨工业大学仪器科学与工程学院,黑龙江哈尔滨150001) 摘 要:航天复杂系统约束多,测试指令和测试数据庞大,其测发控流程设计成本高,可靠性难以保证。
为提高航天复杂系统测发控流程的测试效率,规范设计步骤,结合工作流技术、仿真技术,设计一款测发控流程并行仿真引擎,实现流程的定制化、可视化绘制,对测发控流程进行并行仿真模拟。
基于Petri网提出一种测发控流程逻辑评价方法来验证流程中逻辑的正确性,对其中的问题节点进行定位,为后续流程的优化和调整提供更为可靠的依据。
实验结果表明,并行仿真引擎的开发和流程逻辑评价算法的建立,极大程度上减少了流程设计人员的工作量,可以准确验证出流程存在的逻辑问题,提高了流程设计的可靠性和效率。
基于微信企业平台的校园移动OA系统设计与实现

技术与应用APPLICATION编辑 李 真文 / 邵富明基于微信企业平台的校园移动OA 系统设计与实现摘 要:本文以研究移动APP开发和校园OA系统为方向,引入“基于微信企业平台的校园移动OA系统”的设计思路,介绍了如何以移动混合开发框架为核心,利用可执行业务模型驱动设计方法,将微信公众平台企业号开发技术与移动OA技术相结合,构建跨端的业务架构平台的实践做法以及根据系统需求将平台的功能设计为组织权限管理、校务工作管理、学生德育管理、教学教研管理、班主任考核管理、技能竞赛管理六大模块,最终实现了基于微信企业平台的校园移动OA系统,达到轻开发、可重用的效果。
关键词:校园移动OA 微信企业平台 移动混合开发框架 业务模型驱动一、项目概述该项目来源于为广州市技师学院建立的一个基于微信企业平台的校园移动OA 系统。
该系统是以《技工教育“十三五”规划》为依据,以全面推进技工院校信息化建设为目标,面向学校内部员工的服务群体,依托移动业务和便携设备,在移动互联网和移动开发技术的环境下,彻底解决校园信息服务的实时性问题,有效消除校园信息孤岛现象,并为全体教职工提供高效安全、灵活便捷的校园移动办公平台。
该项目开发的动机是在“广州市高级技工学校办公自动化系统”和“广州市高级技工学校微信订阅号”的应用基础上,研究分析校园办公系统的移动业务需求,对微信企业平台和移动OA 进行定制开发,重点解决校园移动办公一体化应用和信息资源灵活整合的问题。
二、核心技术该项目系统的构建主要从业务架构信息系统、移动混合开发框架、微信企业平台三个技术层面进行移动校园OA 系统整体设计,系统开发核心技术包含如下。
1.业务模型体系业务模型体系包含数据模型、流程模型、界面模型、组织模型等四个部分。
业务模型体系能够全面、精确地描述用户需求,具有提升和保障管理软件的能力,能满足管理软件设计的基本规范,是管理软件自动化、质量控制和保障的基础。
2.Justep X5技术框架该项目采用Justep X5业务架构平台(简称X5)进行业务架构信息系统开发,利用其企业级应用开发工具定制设计应用模块,节约项目经济成本,消除企业信息化孤岛。
工作流引擎介绍工作流引擎技术架构

工作流引擎介绍工作流引擎技术架构工作流引擎是指一个管理、自动化和实施企业业务流程的系统,它的核心任务是将一系列步骤或环节相连,按照正确的顺序来完成一些任务。
一个工作流引擎可以为用户提供一个可供多个角色使用的场景,允许用户自定义业务流程,并且能够根据不同的业务规则,按照业务流程完成各种任务。
一个工作流引擎技术架构可以分为四个层次:应用程序层、BPM引擎层、工作流引擎层和数据存储层。
应用程序层提供一个基于Web或移动端的系统界面,供用户管理业务流程,并完成各种任务。
这一层是工作流引擎最直接面向用户的接口,用户可以通过这一层实现业务流程的定制。
BPM引擎层是工作流引擎架构的核心,它能够实现业务流程的定义、流程实例的创建和管理,以及与应用程序层的交互,负责按照业务流程指定的步骤和次序执行任务,因此,BPM引擎层需要拥有具有丰富的规则引擎和校验逻辑。
基于Petri网的工作流建模与分析

基于Petri网的工作流建模与分析邹海;储德新;高顺利【摘要】The modeling was a key to workflow. Based on to the structure, formal definition and process modeling of Petri net, the modeling was established for the mapping from the route mode of workflow to Petri net. The experimental results showed that this method was brief and direct in modeling and analyzing of workflow.%工作流建模是工作流研究中的关键问题.论文在对当前工作流中的主要路由模型分析的基础上,结合Petri网的结构、形式化定义和流程建模方法,建立了从工作流到Petri网的路由映射模型.通过对贷款处理流程的工作流建模分析表明,基于Petri网的工作流建模方法具有直观、简洁等优点.【期刊名称】《安徽大学学报(自然科学版)》【年(卷),期】2011(035)002【总页数】4页(P33-36)【关键词】Petri网;工作流;过程建模【作者】邹海;储德新;高顺利【作者单位】安徽大学计算机科学与技术学院,安徽合肥,230039;安徽大学计算机科学与技术学院,安徽合肥,230039;安徽华圆烟草有限责任公司技术部,安徽亳州,233606【正文语种】中文【中图分类】TP311工作流是多个参与者之间按照某种预定义的规则传递文档、信息或任务的自动进行过程,以实现某个预期的业务目标[1],而表单传递应用系统可以看成是工作流系统的初级阶段[2].工作流管理是企业管理领域的一个研究热点,而工作流建模是工作流技术在应用过程中必须解决的一个关键所在[3].工作流模式以工作流的表达形式提出了业务过程建模的基本需求[4-6],其在研究了目前流行的大多数商用工作流产品的基础上,总结了最基本和最常用的业务过程需求[7-8].模式中既包含了基本的控制流模块,也包括了一些复杂的路由逻辑.Petri网是一种可用图形表示的组合模型,具有直观、易懂和易用的优点,对描述和分析并发现象有独到的优越之处;它同时又是严格定义的数学对象,借助数学开发的Petri网分析方法和技术,既可用于静态的结构分析,又可用于动态的行为分析[9-10].在对工作流选择建模工具时,必须要考察其模型的分析能力[11].所以,Petri网自然地成为构建工作流模型的理想语言[12].Petri网主要由库所和变迁组成,通常用圆圈表示库所,用矩形表示变迁,用黑点表示标记且库所可以容纳标记.Petri网中的库所和变迁采用有向弧连接,共有两种类型的弧:从库所到变迁、从变迁到库所.从库所到库所,或从变迁到变迁的弧都是不允许的.变迁是Petri网中的主动元素,在工作流模型中经常表示事件、操作、转换或传输.库所是Petri网中的被动元素,不能改变网的状态,在工作流模型中通常表示媒介、缓冲器、地理位置、状态、阶段或条件.标记在工作流中通常表示每步操作所针对的操作对象,它是一种计算机化的文档,用来激活一个工作流实例,使其开始运转,并记录最终结果.在通用工作流规范的基础上,结合企业管理中的流程特点,形成了基于Petri网的工作流模型.在企业的流程化管理模式中,分类提取了几种工作流的路由模型,根据不同的业务特点,可以选择相应的路由模型来进行业务的流程化处理.任务是可选的,即可能有仅为某些案例执行的任务.案例不同,任务执行的顺序也不相同.通过确定案例的任务执行路由,能确定任务的执行情况.2.1 顺序路由模型顺序路由是最基本的工作流路由方式,也是最为容易理解的模型.当两个或更多任务间存在依赖关系时需用顺序模式——在前一任务完成之前,本任务不能执行(调度),例如,第一个的结果是第二个执行所必需的输入.在Petri网中,这种路由通过在两个任务间添加一个库所进行链接的方式来建模,如图l所示.变迁2表示的任务,仅当变迁1对应的任务完成后,才被执行,这由库所2决定,是库所2对应于变迁2执行时须满足的前提条件.2.2 并行路由模型当多个任务要同时执行或以任意次序执行,就称之为并行路由.图2给出了为这种情形建模的Petri网模型.当插入两个人为添加的管理变迁t1和t2帮助建模,一般其不对应任何具体的工作,作用在于能够使变迁1和变迁2并行执行.但有的案例中t1和t2也可能被指定为实际的工作.在图2中,变迁t1是一个AND-split任务.当库所1中有标记时它就实施,并且为库所2、库所3各产生一个标记.当案例的条件库所2、库所3被满足,变迁1、变迁2就被执行.实施t1使变迁1、变迁2能被并行执行,而t2的实施前提是必须两任务都被完成,它是一个AND-join 任务,即为同步两个或两个以上并行流而添加的任务,在某一案例满足库所4、库所5时,该任务可以被执行.2.3 选择路由模型一个过程可以决定某个案例的路由.但不同的案例之间的路由可能相同也可能不同,称在两个或多个任务中进行选择的路由为选择路由.图3给出了一个用Petri网对其建模的例子.把由变迁t11、t12和库所2、库所3构成的网称作OR-split,把由变迁t21、变迁t22和库所4、库所5构成的网称作OR-join.如果案例的条件库所1满足,变迁t11和库所t12之一就可以实施,如果是前者,变迁1就绪;如果是后者,变迁2就绪.可以看到其在两个变迁1、变迁2之间存在选择.在这种情形下,OR-split选择两个分支中的一个,OR-join将它们汇合在一起.2.4 循环路由模型循环路由指某个任务的反复执行.一般情况下,一个案例的一个任务只需要执行一次.但当某项任务需要重复执行直至检测通过,这时这种路由形式显得理所当然,图4给出了循环路由的建模.图中变迁1、变迁2被顺序执行,当变迁2被完成后,OR-split将决定是否需要被重复执行,所以在变迁2被执行一次或多次后,案例才会进行到变迁3.2.5 高级路由模型常见的高级路由模型一般有回退路由模型和跳转路由模型,分别如图5、图6所示.由图5所示可知,有变迁A到变迁B属于正常发送,但从变迁B到变迁A,则出现两种情况:1)正常发送,如图中实线;2)可能因为某些特殊原因被变迁B退回,要求变迁A重新办理,如图中虚线.虽然都是B到A,代表的意义却完全不同.在现实生活中这种应用比较多.由图6所示可见,原先预定的流程是按照 A—→ B —→C顺序执行,但是执行变迁A之后,人为地让流程沿A→C方向运转,直接跳过了原先的变迁B.现给出某银行发放信用贷款的全过程模型,如图7所示.该模型选取了几个典型的发放贷款流程环节,选取Petri网模式结构来详细描述.银行方面先查阅贷款客户的信贷申请,检查客户的贷款信用等级记录确认诚信资格(有无不良贷款记录),同时确认此笔贷款是否符合政策法规.如果此客户无不良贷款记录且此笔贷款符合政策法规规定则通过,否则被拒绝.接着信贷员实地调查贷款项目前期筹备情况,若筹备工作到位,可支出贷款;否则敦促客户完成前期筹备工作,接着准备发放贷款支出贷款资金;最后贷款关闭归档.通过该建模实例不难看出,使用论文所提供的工作流模式的Petri网描述,能够便于为各种复杂的实际应用建模,对各种复杂的应用要求提供直接的支持,显示出较强的模型描述能力.Petri网在很多领域都获得了成功应用,论文以Petri网为建模工具深入研究了工作流模式,建立了从工作流路由模型到Petri网路由模型的映射机制,充分利用Petri网能够对各种模式进行形式化描述和图形化表示等方面的优势.实例表明,基于Petri网的工作流模式与分析,具有直观、简洁等特点.【相关文献】[1]Workflow Management Coalition.Workflow management coalition terminology and glossary[S].Technical Report,Brussels:Workflow Management Coalition,1996.[2]罗海滨,范玉顺,吴澄.工作流技术综述[J].软件学报,2000,11(7):899-907.[3]Haake J,Wang W.Flexible support for business process:Extending cooperative hypermedia with process support[J].In:Proceedings of ACMSIG Group Group’97,Arizona,USA,1997:341 -350.[4]Kiepuszewski B.Expressiveness and suitability of languages for control flow modeling in workflows[D].Brisbane,Queensland,Australia:The Faculty of Information Technology Queensland University of Technology,2002.[5]余鹏,周国富,屈婉玲,等.基于Petri网的工作流模式-工作流模式分析研究[J].系统仿真学报,2003,15:119-122.[6]Kobielus J G.Workflow strategies[C].Foster:IDG Books World Wide,Inc,1997. [7]范玉顺,吴澄.工作流管理技术研究与产品现状及发展趋势[J].计算机集成制造系统,2000,6(1):1-8.[8]Davulcu H,Kifer M,Ramakrishman C,et al.Logic based modeling and analysis of workflows[J].In:Proceedingsof the ACMSymposium in PODS’98,Seattle,USA,1998:25 -23.[9]范玉顺,李慧芳.基于时间Petri网的工作流模型分析[J].软件学报,2004,15(1);20-29. [10]Zaidi AK.On temporallogic programming using petri nets[J].IEEE Transactions on Systems,Man and Cybernetics,1999,29(3):245 -254.[11]袁世伦,李胜利,袁平鹏,等.一种基于规则的工作流模型互操作的实现方法[J].计算机应用,2007,27(2):400-402.[12]周万坤,朱剑英,孙志俊.基于工作流技术的作业车间调度研究[J].南京航空航天大学学报,2004,36(1):125-129.。
《深入Activiti流程引擎:核心原理与高阶实战》札记

《深入Activiti流程引擎:核心原理与高阶实战》读书笔记目录一、流程引擎概述 (2)1.1 流程引擎的定义 (4)1.2 流程引擎的作用 (5)1.3 流程引擎的发展历程 (6)二、Activiti核心原理 (7)三、Activiti高阶实战 (9)3.1 案例介绍 (10)3.1.1 电商订单处理流程 (11)3.1.2 供应链协同流程 (13)3.2 高阶特性与应用场景 (15)3.2.1 全局异步任务处理 (17)3.2.2 事件子系统的扩展性 (19)3.2.3 分布式事务处理 (20)3.3 实战中的问题与解决方案 (21)3.3.1 数据一致性保证 (22)3.3.2 性能优化策略 (24)3.3.3 安全性与权限控制 (25)四、总结与展望 (27)4.1 本书总结 (28)4.2 展望未来 (29)4.2.1 Activiti的发展趋势 (30)4.2.2 对流程引擎技术的未来思考 (32)一、流程引擎概述流程引擎(Process Engine)是Activiti工作流引擎的核心组件,负责处理和执行业务流程。
在《深入Activiti流程引擎:核心原理与高阶实战》作者详细介绍了Activiti流程引擎的基本概念、架构以及关键组件,帮助读者更好地理解和使用这一强大的工作流引擎。
流程引擎主要用于管理、执行和监控业务流程。
它可以将业务流程定义为一系列任务和事件,并根据这些任务和事件的执行顺序来驱动整个流程的运行。
通过流程引擎,企业可以实现对业务流程的可视化管理、自动化执行和监控,从而提高工作效率、降低运营成本和提升客户满意度。
进程定义(Process Definition):用于描述业务流程的结构和规则,包括任务、事件、网关等元素。
一个进程定义可以对应一个或多个流程实例。
流程实例(Process Instance):表示一个正在执行的业务流程,由一个或多个任务组成。
每个任务都有一个唯一的ID,用于在后续处理中引用。
基于Petri网的工作流建模合理性验证算法

i g a d Ap l ain 2 0 4 ( 3 :2 — 3 . n n pi t s,0 8.4 1 ) 2 8 2 1 c o
A b tac : P ti— t s a r phc nd sr t e r ne i g a i a m ah m aial mo ln to tat c n be a ple t te t c dei g o ] h a p i d o,v rey y t a i t s semsI a di o i c n . n d t n.t a i p o i e he e hn q e a d o l fr he r v d t tc i u s n t os o t wo k o r f w mo e sr t r l nay i a d l d l tuc u a a lss n pef r a e v l t n. s d n he n lss f ro m nc e auai Ba e ng k w r t a i v ldai n he rm s n a g rt l ai lt ai to t oe a d l o hms, r to aiy ai a in l oihm i pe e t d on y i a ai n lt v ld to a g rt s f r c e an m e d d n ed, nd a a l tt e or c n s o h s l o t t as h c re t e s f t i ag r hm i v rfe b a e mp e i s e i d y n xa l . i K e wor y ds: wo k o r f w mod l p ti e ;ai n lt v ldai n l o i l e ; er-n t r to aiy; a i to ag rt hm
时间约束工作流的可调度性分析

时间约束工作流的可调度性分析冯复剑【摘要】A schedulability analysis approach of timing constraint workflows is proposed. According to the deficiency of Timing Constraint PetriNets(TCPN for short)which is ordinary Petri net that can’t be used to model multiple resources, extended Timing Constraint Petri Nets(w-TCPN for short) is defined. Then, based on the topological structure of w-TCPN, from the two levels of model and case, the verification method for the schedulability of w-TCPN is presented in the form of theorems. In the end, the adjustment strategy of timing constraint is proposed. The research of w-TCPN makes the modeling and schedulability analysis of timing constraint workflows more reasonable.%提出一种时间约束工作流的可调度性分析方法。
针对时间约束Petri网(Timing Constraint Petri Nets, TCPN)为普通Petri网无法建模多参与资源的不足,给出了扩展的时间约束Petri网(w-TCPN)的定义;结合w-TCPN的拓扑结构,从模型和实例两个层次,给出了w-TCPN变迁可调度的判定定理;提出了时间约束的调整策略。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PN 的算法描述本身是很简单的:任何一次 Token 的转移,都会引起对整个流程(在 PN 中叫 Case)的重新使能(enabled)遍历。—— 就像“蝴蝶效应”。
如果上面这句 PN 算法的描述,您并不是很清楚,那么建议你暂停往下阅读。先去查阅一 下有关 PN 的资料,看看先。
接下来,就让我们看看这些开源引擎的核心调度算法。—— 呵呵,没办法了,我只能拿 开源的咚咚来跟大家说说了。这样一不涉及保密,二不涉及泄密。
注:严重 bs 那些修改或一心想着修改开源引擎代码的家伙。
先说说四个非 PetriNet 调度算法的开源引擎
主要说几个大家都比较熟悉的:OBE,Shark,OSWorkflow,jBpm。分析一下他们的调度 算法,就基本上可以知道其能力有多强。
OBE 的引擎调度机制..........................................................................................................4 Shark 的引擎调度机制 ........................................................................................................5 OSWorkflow 的引擎执行机制 ............................................................................................6 JBpm 的引擎执行机制 ........................................................................................................6 再说说两个 PetriNet 调度算法的开源引擎 ...............................................................................9 YAWL 的引擎调度机制 ....................................................................................................10 Bossa 的引擎调度机制(标准的 PN 机) .......................................................................12 结尾 ............................................................................................................................................15
第2页
工作流引擎核心调度算法与 PetriNet
by 胡长城(银狐 999)
前不久,公司这边不得不对工作流引擎进行重构,这个“烫手的山芋”也不得不落在了 我身上。从理论上说,这是一件让我兴奋得事情;但是,从现实角度上,这又是一件让我头 疼的事情(虽然来了有几个月了,但是毕竟这个产品早期不是我做的,很多部分我也不是很 清楚,更烦得是,并没有多少文档):重构已有的产品,是一件危险的事情,成则为王,败为 寇。
声明
此篇并不是针对 workflow 的初学者。如果你对 workflow 不了解,或对篇中的几个 workflow engine(OBE,Shark,OSWorkflow,jBpm,YAWL,Bossa)都不了解的话,那么不 建议您阅读此篇文章。
如果您对 workflow 感兴趣,那么建议你在阅读此篇文档的时候,一边打开这几个开源引 擎的源码,跟着文中的演示片断分析。
对于接手引擎重构这个任务,我并没有百分百的自信能够做好,毕竟短时间内重构一个 自己并不十分了解的引擎,并且涉及到核心的调度算法和调度机制,实在是一个危险的事情。 ——但是最终也不得不这么做,有时候由不得自己。这一个多月来,甚至在深夜入睡的时候, 躺在床上,都在想第二天的重构放案。—— 感觉自己那些日子,真像破釜沉舟。
OBE 的引擎运转调度算法是很简单的,其所有的调度规则都是依据于 WorkflowRunner 类 的 run 方法。采用遍历循环的方式,这个遍历机制就是:
/***** 摘自 WorkflowRunner 类的 run 方法 ****/
while (!_activityStack.isEmpty()) { //_activityStack 中暂存着需要被激活的活动实例 ActivityContext ap = (ActivityContext)_activityStack.pop(); _ctx.setActivityContext(ap.activity, ap.instance); //虽然叫 execute,但是其实际上是一个激活活动实例的行为 executeActivityInstance(ap.activity, ap.instance);
一个月之后,终于给自己了一个较为满意的答复,虽然功能上还有些细节未完善,但是 整个引擎的框架布局、对外接口、内核调度算法和调度机制都基本上重构了一遍。—— 在重 构的时候,更多的压力是来源自“重构出一个良好而又让自己满意的引擎内核”。
当重构基本完结的那天下午,心里也是非常的兴奋。兴奋的实在是不想再写第二行代码, 哈哈。只想坐在电脑前,哼着小曲,悠然自得;当然现实是不允许的。—— 这种兴奋,似乎 压抑了两三年,如今终于让自己重构出一个让自己满意的引擎内核。至少现在,可以对得起 自己这几年在 workflow 上扎下的功夫了。
那么“内核”到底代表什么呢?这内核就是支撑整个引擎运转的内部调度算法、执行推 进机制,以及围绕调度算法的一些 Context、Runner 类,及 kernel 的框架。这内核才是一个引 擎的灵魂。
进入正题
既然说的是调度算法和 PetriNet,那么就有必要先从 PetriNet 说起。 这次重构,将 Petri Net 的算法调度的应用和 XPDL 模型结合起来了。受这边产品早期引 擎建模结构的影响,模型采用的还是扩展 XPDL。其实我对 XPDL 没有多少好感,但是也不得 不承认,XPDL 中有些思想是很不错——还好,模型对引擎的影响并不是很大,真正影响引擎 的是上面所说的“内核”。 重构之前的一些修炼,还有赖于在早先在 Justep 公司的学习。虽然离开有好几个月了, 虽然也只 Jjustep 中待了两个多月,但是在老宋的逼迫下,倒是对 Petri Net 的算法研究的了一 番。依着我自己的性子,是很难自己去深入探索 PetriNet 的(至少之前,我对 PN 不感冒)。
OBE 的引擎调度机制
说到开源引擎,首先就要说一下 OBE,这是最早一款支持 XPDL 的开源工作流引擎。可 惜由于没有良好的持续维护,到如今,虽然 Adrian 依然还在对其进行一些补充和修改,但已 经掩饰不出其“落寞”的容颜了(/james999/category/57982.aspx)。
本文为个人所言,难免会有疏忽遗漏错误之处,望斧正。如有疑问,可来信探讨,我的 信箱:james-fly@ 。
注:转载文章,请注明作者信息。
前言废话
过年之后,一直忙公司这边平台的重构,忙得我连自己的 blog 和主页都很久没有更新, 这两天竟然还发现,我那《工作流之星光》【/mywf/bright】竟然 快两个月未更新了。直到这几日有个小小阶段性的成果,但接下来又将是一轮新的研发。于 是赶紧抓住这宝贵的还不算非常忙的几天,写写心得。
但是,估计绝大多是人,所熟悉的开源引擎的调度机制都不是采用 PN 算法的。比如 OBE, Shark,OSWorkflow,jBpm。—— 当然,有没有采用,对很多人来说,并不关心,他们只关 心如何去用。
第3页
工作流引擎核Biblioteka 调度算法与 PetriNetby 胡长城(银狐 999)
如果你对 workflow 的调度算法不关心,或者只是想去篡改那些开源引擎的代码(这样的 人,大有人在),那么请您停止阅读本篇。因为这篇文章,对你是毫无意义的。
此篇并不是针对 workflow 的初学者,如果您刚刚接触工作流,本人不建议您阅读本篇 更多工作流参考文档,请访问在 注:转载文章,请注明作者信息。
第1页
工作流引擎核心调度算法与 PetriNet
by 胡长城(银狐 999)
目录
声明 ..............................................................................................................................................2 前言废话 ......................................................................................................................................2 进入正题 ......................................................................................................................................3 先说说四个非 PetriNet 调度算法的开源引擎 ...........................................................................4
这一个多月以来,最主要的工作就是把早先这边的工作流产品彻底的“翻”了一把。重 构整个工作流引擎的组件框架和调度算法。也算是对自己这几年来,研究工作流的结果的一 个“挑战性”钻研。