• jxTMS设计思想之流程追溯


    jxTMS是以低成本快速定制为核心诉求的、SaaS模式的二次开发平台,详见:jxTMS简介。本文是讲述jxTMS平台中流程部分是如何设计的,整个系列请访问:jxTMS设计思想

    流程追溯

    在管理信息系统看来,流程就是通过分工配合,将各成员锁定在组织需要他担负的职责上。所以对于流程,jxTMS关注的核心就两条:

    • 如何分工、如何操作、如何配合,这是管理方根据业务需要来设计的,jxTMS要能低成本的来实现企业方的流程设计

    • 在发生问题后,如何提供足够的信息来明确责任

    如何实现,我们下一篇文章来说,本文讲如何明确责任。

    作为工具,jxTMS自身只能确保提供完整的、不可篡改的、带场景界面的记录集合,供在必要时由企业方组织审计人员从头开始一步步查看、分析、判断、评价各环节操作人员的操作,最终锁定问题点、判明问题原因、理清问题过程、裁定问题责任

    这就要求流程的记录不但要完整、还要具有过程性,即每一步的变化都要能捕捉的到。

    现场数据和快照

    针对流程追溯的要求,jxTMS实现了流程最基础的数据捕获机制:现场数据。

    我们之前在讲web界面时,曾说到由于jxTMS采用的是异步数据交换模式,所以数据输入输出不是直接的,而是要通过一个缓存进行中转的。

    所以现场数据的思路非常简单,就是每次流程操作都只需要将这个数据缓存中的数据保存起来就好了。jxTMS将这个操作完成时保存起来的数据集称为:快照。

    这样一来,从流程启动到最后流程结束,各环节不同用户的每步操作都会产生一个当时的快照,这一系列快照,就完整的记录了各用户每步操作的输入。

    当我们把快照结合流程界面,依次显示给管理人员或审计人员时,就能直观的看到该用户看到了什么、输入了什么,就能更深刻的理解其为何要如此操作了。

    数据变动

    当流程非常复杂时,流程界面中的数据就会很多,加上打回等可以反复修改,所以只通过快照,审计人员就很难直观的看到每一步用户都操作了什么。

    因此,jxTMS还支持对用户两快照之间的差【即当前用户对之前数据的修改】进行记录,然后提示给查看者,让其直观的看到每一步的用户都输入了什么内容。

    对需要记录变动的数据,在web界面定义其输入控件时,只需增加一个属性:logChangedDisp。用来说明该数据的名字或用途。

    然后在必要时,调用logDataChange函数,即可将所有定义了logChangedDisp属性的数据的变动情况加以保存。

    注:jxTMS的流程会自动调用logDataChange函数来保存数据变动,所以开发者只需要在流程中针对需要保存数据变动的输入控件增加logChangedDisp属性即可

    补充说明

    流程是多人、多专业、多部门之间的协作,但大家看问题的层次不同、角度不同、立场不同,所以也会出现理解的不同。

    针对各自理解的不同,jxTMS提供了一种称之为补充说明的手段,即当处理某个环节的成员存疑时,不需要将该流程打回,而是要求之前的某个环节的处理成员做出补充说明。

    打回,是意味着对方重做,是一种行为的改变。而补充说明则是信息不够完整,要求对方补充信息来增加理解、辅助判断。

    打回有打回的好处:被打回那自然是中间有问题,那就会引起所有再次处理本流程的工作人员的警惕,对该流程的处理会更仔细。这就有助于问题的解决。

    但打回也有打回的坏处:如果只是信息的补充,那就意味着所有中间的成员全部都要再过一遍。如某费用报销流程,有7个环节,如果最后的总经理将其打回到申请人处,那中间这5人都要再过一遍,那就是很大的浪费。

    所以,补充说明类似于本流程的信息说明板,当有疑问时,可以让相关人员做出额外的说明。

    流程追溯的工具

    通过上面的讨论,可看到jxTMS针对流程追溯提供了三种手段:

    • 由所有操作步骤和每步的快照所组成的流程日志。日志完整的记录了各环节相应用户的操作信息,同时还包括各用户的快照,是流程追溯的基础

    • 数据变动记录,用户每一次操作所修改的关键数据

    • 补充说明记录,用来帮助补充信息,帮助理解各方做出业务判断的立场

    这三个工具是jxTMS内置的通用的流程追溯工具,用户自己开发的流程也只需要在op.py文件中,将这三个工具分别链接到自己的查看流程详情入口上,用户自己开发的流程就可以使用这三个工具来执行流程追溯了。如:

    @biz.OPDescr
    def op1(json):
        #给自己开发的费用报销链接【日志】入口
        json.setBtnList('disp.你的流程查看界面', 'affair.mgr.disp.dispAffairLog')
    
    @biz.OPDescr
    def op1(json):
        #给自己开发的费用报销链接【补充说明】入口
        json.setBtnList('disp.你的流程查看界面', 'affair.mgr.disp.dispReplenish')
    
    @biz.OPDescr
    def op1(json):
        #给自己开发的费用报销链接【数据变动】入口
        json.setBtnList('disp.你的流程查看界面', 'affair.mgr.disp.dispDataChangeLog')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    形如【图中未链接补充说明】:

    企业微信应用

    其中的日志点击后形如:

    企业微信应用

    其中的【查看】就是各环节的快照,点击就会显示用户输入完毕准备点击本环节的【同意】或【否决】按钮时所看到的界面,也就是该用户做了决定后准备按下相应按钮时的界面。

    前一个快照是用户打开流程时所看到的情况,按下前的快照是用户决定时的快照,两个快照之间的差【变动】就是用户的输入,也就是本次的数据变动。

    目前jxTMS已经开放个人注册试用,欢迎大家注册试用:

    注册到jxTMS

    下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

    如何用jxTMS开发一个功能

    下面的系列文章讲述了jxTMS的一些基本功能:

    jxTMS的HelloWorld

  • 相关阅读:
    Linux系统中rpm命令用法详解
    java毕业设计恩施茶多芬网店系统设计与实现2021Mybatis+系统+数据库+调试部署
    LeetCode 0670. 最大交换
    11、综合应用案例
    ubuntu 安装jdk21开发环境
    Java.lang.Class类 getDeclaredAnnotations()方法有什么功能呢?
    vue中的网络请求
    【云原生】一文带你吃透FlexManager数据传入华为云IOT
    Spring之更便捷的读取和存储对象
    电脑重装系统u盘文件被隐藏要怎么找出来
  • 原文地址:https://blog.csdn.net/jxandrew/article/details/126300454