欢迎来到天天文库
浏览记录
ID:2076447
大小:544.71 KB
页数:19页
时间:2017-11-14
《web工作流管理系统开发21-25》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、二十一巧用流程轨迹表主键ID 在工作流系统中,业务流程按流程引擎定义的模型规则,定义成流程的一个一个节点。当流程实例运行时,流转到流程的各个节点,通过执行动作之类的操作提交关联的业务表单,导向流程的下一个节点,同时修改流程实例的状态,达到流程的流转。流程实例每流转一次,都会将当前节点的信息写入一个历史轨迹表,同时将下一节点的信息写入当前步骤表。当流程实例流转多次后,根据历史轨迹表的记录,就能追踪到此流程实例的实际运行轨迹。 工作流系统的数据主要分为流程数据和业务数据,流程的历史轨迹表仅仅记录的是流程的数据,与业务数据业务表单无关,甚至是流程的上下文数据也记录不了。当流程实例在
2、追踪历史轨迹的时候,作为监控使用,或者是历史步骤的再现,经常需要将此轨迹节点上关联的业务表单重新装入,查看监控当时的流程状态和业务状态。但流程的轨迹表仅记录的是流程的节点步骤信息。业务表的信息是不记录的,业务表记录的再现,只能通过流程数据和业务数据的关联去查找。查找出的业务记录只有一个最后的状态,如果流程的多个节点对此业务数据做过修改,那么就很难在各个轨迹节点中还原出当时的状态。可能可以通过类似同一张单据在流程的多节点中流转的方式来达到,但如果多节点写了同一个字段的信息,就根本区别不出是流程的那个节点做的修改了,因为业务表没有记录轨迹。 总结一下,实际上流程系统中的历史轨迹表
3、,只记录的是流程实例运行的各节点的轨迹,没有记录业务数据的轨迹。 当流程监控的时候要求对业务表的记录也做出精确的监控,那肯定需要建立业务表的轨迹表(或叫日志表),此业务轨迹表当属于业务系统的表,不属于工作流系统表。并且在业务轨迹表中增加一个流程轨迹id字段,用于和流程的轨迹相关联。当流程流转时,产生流程的历史轨迹,同时也产生业务轨迹表的记录,并将流程的历史轨迹表记录id写入业务轨迹表中。当流程监控时,显示流程历史轨迹的同时,也可以通过轨迹表的id字段关联出业务轨迹表中的业务记录,再现出当时的业务数据状态。此为流程轨迹表主键ID的一种用法。 流程轨迹表的主
4、键id,是流程实例运行轨迹的一个唯一标志,与流程节点的id不一样,流程节点的id是流程定义节点中的唯一标识,流程实例运行时,同一个节点,通过回退,循环,主动取回等可能会多次运行。但轨迹表的主键id则肯定是唯一的,流程实例的每次流转都会生成轨迹表的新记录。当流程运行到节点上,关联的业务表单填写的是多条业务记录时,如主从表的录入,从表在流程的不同节点上多次填写。当流程监控时,需要再现出每个节点关联的从表业务记录时,就定位不了业务记录。如果在业务从表中增加一个流程轨迹主键id字段,在流程节点提交的时候,将此轨迹id写入业务从表中,就能将流程的轨迹和业务从表记录关联起来了。此处如果写入业务从表
5、的是流程节点id是不行的,流程回退,取回,一个节点重复执行时,就标识不了了。 此为流程轨迹主键id的另一种用法。 流程轨迹主键id还有一种更为巧妙的用法,作为流程主动取回后,再次发送,流程下一节点是否可执行的判断标志。流程实例的每次执行操作之前将流程轨迹id传递到前台,等待用户执行操作。提交操作时,取道页面传递回来的轨迹主键id,和流程轨迹表中当前步骤的轨迹id相比较,如果一致,则可以继续操作,如果不同,则表示流程轨迹已经发生了变化,需要再次打开链接重新执行此节点的操作。二十二dotnet版工作流引擎工作流管理系统为实现流程的自动化,必须包含一个工作流引擎,工作流引擎负责
6、流程的定义,解释和运转。流程引擎是对业务流程的一个抽象,因此工作流引擎的设计模型是决定流程功能的重中之重,将直接影像流程的各个环节。一套工作流管理系统还包含很多个必须要实现的部分,如:事件处理,任务处理,组织机构的适配,自定义表单等等。以及很多中国式的“动态会签,回退,自由流”等等变态需求。但抛开这些,只关注每个流程的最基本的部分,即解决一个过程运转的问题,从一个环节到另一个环节,使得流程能够运转起来。这应该就是流程引擎要实现要关注的基本问题,即流程引擎的抽象。工作流引擎模型有很多种,FSM、PetriNet、EPC、ActivityDiagram等等,不论采用那种流程引擎模型,最终都
7、需要能将业务流程用流程引擎的符号或元素表述出来。 我们公司的eworkflow自定义工作流系统dotnet版,流程引擎采用C#语言实现了FSM有限状态机的流程引擎模型。有限状态机是一种数学模型,广泛应用于流程引擎,rpg游戏等领域。是表示有限个状态以及通过执行动作使得状态发生转移的数学模型。状态转换图: 工作流引擎的模型正是利用这种定义的有限个状态和动作,动作的结果导向另外一个状态来达到流程的流转。工作流引擎的每一个状态=一个业务环节+业务环节
此文档下载收益归作者所有