`
sunlujing
  • 浏览: 179852 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

工作流系统的历史记录(ZZ)

 
阅读更多

博客园上的一个工作流系统的构建,个人觉得写得很好! 

http://www.cnblogs.com/webreport/tag/java%E5%B7%A5%E4%BD%9C%E6%B5%81/

在工作流系统中,业务流程按流程引擎定义的模型规则,定义成流程的一个一个节点。当流程实例运行时,流转到流程的各个节点,通过执行动作之类的操作提交关联的业务表单,导向流程的下一个节点,同时修改流程实例的状态,达到流程的流转。流程实例每流转一次,都会将当前节点的信息写入一个历史轨迹表,同时将下一节点的信息写入当前步骤表。当流程实例流转多次后,根据历史轨迹表的记录,就能追踪到此流程实例的实际运行轨迹。

      工作流系统的数据主要分为流程数据和业务数据,流程的历史轨迹表仅仅记录的是流程的数据,与业务数据业务表单无关,甚至是流程的上下文数据也记录不了。当流程实例在追踪历史轨迹的时候,作为监控使用,或者是历史步骤的再现,经常需要将此轨迹节点上关联的业务表单重新装入,查看监控当时的流程状态和业务状态。但流程的轨迹表仅记录的是流程的节点步骤信息。业务表的信息是不记录的,业务表记录的再现,只能通过流程数据和业务数据的关联去查找。查找出的业务记录只有一个最后的状态,如果流程的多个节点对此业务数据做过修改,那么就很难在各个轨迹节点中还原出当时的状态。可能可以通过类似同一张单据在流程的多节点中流转的方式来达到,但如果多节点写了同一个字段的信息,就根本区别不出是流程的那个节点做的修改了,因为业务表没有记录轨迹。
   
      总结一下,实际上流程系统中的历史轨迹表,只记录的是流程实例运行的各节点的轨迹,没有记录业务数据的轨迹。
   
      当流程监控的时候要求对业务表的记录也做出精确的监控,那肯定需要建立业务表的轨迹表(或叫日志表),此业务轨迹表当属于业务系统的表,不属于工作流系统表。并且在业务轨迹表中增加一个 流程轨迹id字段 ,用于和流程的轨迹相关联。当流程流转时,产生流程的历史轨迹,同时也产生业务轨迹表的记录,并将流程的历史轨迹表记录id写入业务轨迹表中。当流程监控时,显示流程历史轨迹的同时,也可以通过轨迹表的id字段 关联出业务轨迹表中的业务记录,再现出当时的业务数据状态。此为流程轨迹表主键ID的一种用法。
   
      流程轨迹表的主键id,是流程实例运行轨迹的一个唯一标志,与流程节点的id不一样,流程节点的id是流程定义节点中的唯一标识,流程实例运行时,同一个节点,通过回退,循环,主动取回等可能会多次运行。但轨迹表的主键id则肯定是唯一的,流程实例的每次流转都会生成轨迹表的新记录。当流程运行到节点上,关联的业务表单填写的是多条业务记录时,如主从表的录入,从表在流程的不同节点上多次填写。当流程监控时,需要再现出每个节点关联的从表业务记录时,就定位不了业务记录。如果在业务从表中增加一个 流程轨迹主键id 字段,在流程节点提交的时候,将此轨迹id写入 业务从表中,就能将流程的轨迹和业务从表记录关联起来了。此处如果写入业务从表的是流程节点id是不行的,流程回退,取回,一个节点重复执行时,就标识不了了。  此为流程轨迹主键id的另一种用法。
   
       流程轨迹主键id 还有一种更为巧妙的用法,作为流程主动取回后,再次发送,流程下一节点是否可执行的判断标志。流程实例的每次执行操作之前将流程轨迹id传递到前台,等待用户执行操作。提交操作时,取道页面传递回来的轨迹主键id,和流程轨迹表中当前步骤的轨迹id相比较,如果一致,则可以继续操作,如果不同,则表示流程轨迹已经发生了变化,需要再次打开链接重新执行此节点的操作。

分享到:
评论

相关推荐

    base zz zz zz zz

    base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz

    中医大夫助理信息系统 zz-doctor

    《中医大夫助理信息系统 zz-doctor 深度解析》 中医大夫助理信息系统“zz-doctor”是一款基于Android平台的应用程序,旨在为中医医生提供智能化、便捷化的诊疗辅助工具。通过深入剖析这款应用的源码,我们可以了解...

    ZZ-2022006 建筑智能化系统安装与调试赛项赛题.zip

    《ZZ-2022006 建筑智能化系统安装与调试赛项赛题》 本赛题主要针对中职学生,旨在提升他们在建筑智能化领域的专业技能和实践能力。建筑智能化系统安装与调试赛项是现代建筑业的重要组成部分,随着科技的发展,智能...

    中医大夫助理信息系统zz-doctor.rar

    综上所述,中医大夫助理信息系统zz-doctor是一款集患者管理、病历记录、方剂推荐和药材查询等功能于一体的综合性工具,旨在提升中医诊疗工作的专业化和智能化水平。尽管系统可能存在部分未验证的功能,但其核心模块...

    应用广泛的嵌入式操作系统——ZZ-Linux.pdf

    应用广泛的嵌入式操作系统——ZZ-Linux.pdf

    android应用源码zz-doctor中医大夫助理信息系统.rar

    【标题】"android应用源码zz-doctor中医大夫助理信息系统.rar"揭示了这是一份针对Android平台开发的应用程序源代码,专门设计用于辅助中医大夫进行日常工作。这个系统可能集成了病症诊断、处方建议、病例记录等多种...

    精典源码之zz-doctor中医大夫助理信息系统(简化版).rar

    医生可以根据病情为患者开出个性化的处方,系统能自动检查药物间的配伍禁忌,并能记录历史处方以便复用或参考。 3. **药材库管理**:包含药材的名称、性味归经、功效、用法用量等信息,方便医生查询和选择药材。...

    ZZ561401.CAB

    ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB

    zz-doctor中医大夫助理信息系统(简化版)

    总的来说,"zz-doctor中医大夫助理信息系统(简化版)"是中医领域的一次技术创新,它将信息技术与传统医学紧密结合,旨在提高诊疗效率,提升服务质量,同时也为中医大夫提供了强大的工具支持,让他们的工作更加便捷、...

    综采面回撤三角区ZZ7200/18/36型支架电液系统设计

    《综采面回撤三角区ZZ7200/18/36型支架电液系统设计》一文探讨了为了提升煤炭开采中综采工作面的搬家速度和工作效率而研发的ZZ7200/18/36型三角区液压支架。这种支架专门应用于综采快速搬家工作面端头三角区的支护,...

    ZZ其他非流动资产.xls

    ZZ其他非流动资产

    wincc AX NF ZZ

    wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。

    制造业数据治理主数据管理系统建设方案 zz.pptx

    制造业数据治理主数据管理系统建设方案 zz.pptx

    zz-doctor中医大夫助理信息系统.zip

    "zz-doctor中医大夫助理信息系统.zip" 是一个包含源代码的压缩文件,旨在提供一个用于辅助中医大夫工作的信息系统。从标题来看,我们可以推测这个系统可能是为中医诊所或个人医生设计的,目的是通过数字化的方式优化...

    ZZ-2022010 机器人技术应用赛项赛题.zip

    5. **机械臂控制**:对于涉及到机械臂的任务,参赛者需要理解其工作原理,学会如何编程控制机械臂完成精确的动作,如抓取、搬运等。 6. **实时控制系统**:机器人常常需要在实时环境下运行,因此参赛者需要理解实时...

    ZZ-2022015 液压与气动系统装调与维护赛项赛题.zip

    与液压系统相比,气动系统使用压缩空气作为工作介质,具有成本低、反应快、维护简便等特点。主要元件有压缩机、气缸、阀、气源处理组件等。熟悉气动元件的性能参数和应用场合是装调与维护的关键。 三、系统设计与装...

    Android应用源码之zz-doctor中医大夫助理信息系统

    《Android应用源码解析:zz-doctor中医大夫助理信息系统》 在移动开发领域,Android操作系统以其开源、灵活的特性,成为开发者们的重要选择。本文将深入探讨一款名为"zz-doctor"的中医大夫助理信息系统的Android...

    ZZ-其他非流动资产.xls

    ZZ-其他非流动资产

    ZZ-2022027 分布式光伏系统的装调与运维赛项赛题.zip

    "ZZ-2022027 分布式光伏系统的装调与运维赛项赛题.zip"这个压缩包文件,显然包含了关于这一赛项的详细资料,为参赛者提供了宝贵的参考资源。 分布式光伏系统,顾名思义,是指在用户侧或小型电站级别的光伏发电系统...

    ZZ其他非流动资产.zip

    标题中的“ZZ其他非流动资产.zip”表明这是一个与财务会计相关的压缩文件,特别是涉及到企业资产的分类和管理。在会计领域,非流动资产是指企业持有的、预期在一个财政年度以上才能转换为现金或消耗的资产。这类资产...

Global site tag (gtag.js) - Google Analytics