工作流在小项目中的思考

        高能预警:本篇博文不适合阅读,只是记录了我在设计数据库表的期间,全部的思考过程。看迷糊了大宇概不负责。

        对于审批人员有当前需要操作的任务,其任务在act_ru_task任务表里面,通过assignee字段获取其名字。可以作为“我的待办”。

       “我的已办”可以查询act_hi_taskinst表,通过查询自己的名字,以及EXECUTION_ID_这个流程实例的id,去我们的自己的“请假表(存放大量请假信息的表)T_LEAVE表”中查询。另外,我们自己的请假表中也维护了流程实例的id。所以能够对应的上。

        对于当前用户来说,如何才能知道当前的审批状态呢?在act_ru_execution流程实例表中,只能记录当前任务执行到了什么地方,其ACT_ID_指明了 任务表act_ru_task表 中的指定记录。如下图ACT_ID_指明了当前任务表的数据是"主管审批"任务。

        

                

        这其实并不重要,我们去查看任务表act_ru_task表的时候,发现有与之对应的字段。如下图所示,任务表共有两个字段与流程定义表对应。一个是Task_DEF_KEY_字段与定义表的 ACT_ID_一致,这个字段会随着流程的执行而不断变化,正如主管审批后,换成部门经理审批。而EXECUTION_ID_字段就不会改变,因为这个系列的任务都是 id=55001 的流程实例里面的一部分。让我们来验证一下,完成55004任务后,此字段是否变化。

        

        

        下图是完成55004任务后,数据库的样子。首先看流程实例表act_ru_execution表。ACT_ID_的值已经变化,说明现在执行到了另外一个任务“经理审批”,很明显,现在执行到了jinglishenpi 任务节点。当前流程实例表的id是55001。

        

    


        再来看任务表act_ru_task表,任务的ID已经变成了57502,而不是55004。另外,TASK_DEF_KEY_字段的值也与 流程实例表中一致。最重要的是,当前 部门经理审批 任务节点的EXECUTION_ID_字段的值,仍然是55001,这说明“任务的推进不会改变流程实例的id,因为它就是这个流程实例中的一个环节”。

        


        因此可以得到启发,只要开启指定的流程定义后,也就是 创建了一个流程实例,这个流程实例是一系列任务的组合。如果用户要想知道当前任务的状态,只需要获取到当前流程实例的id即可。获取到流程实例的id,拿着它去任务表act_ru_task表去查询Name_字段就知道了。

        另外一个问题,在通过流程定义开启流程实例的时候,流程实例的id应该怎么记录呢?我想到一种方法,将其作为流程变量进行记录。但是很快就被我否决了,为什么呢?因为获取流程变量的时候,需要提供 流程实例 的id,这好比把钥匙放到了家里,门又锁上了。现在,解决这个问题的办法只能是:创建新的表,用于方法流程实例的id。此表里面要存放当前用户的信息,不然怎么知道是谁请的假。所以,结论是:请假表中维系着流程实例的id。

        最终的结果是,新建了一张请假表T_LEAVE表,它记录着对应的流程实例的id号。

                

     

        然后呢,我要请假里面遍历出它们,当然了,上述的图片里面的数据早就被我删除了。只剩下“我要上王者!”。   

        诶,ExtJs啊,工作流啊。。。。

        下图是这个星期4天来的成果,前端使用的ExtJs6.0.2版本,听项目经理说,新项目要来了,你要赶紧去学。所以我只能弄个小demo练练手了。

        

        

        

    然后登上主管的帐号。找到主管的待办事项,进行审批。


    

猜你喜欢

转载自blog.csdn.net/yanluandai1985/article/details/80847541