流程自定义的彭氏JSON表达式之四

实现一个工作流引擎的核心是利用数据库的触发器。注意,这是数据库的触发器,而不是电工电路里的触发器!在这里给不熟悉的人简单做一个脑补。

触发器(trigger)是SQL server或者MYSQL等提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。 触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求 。

简单的说,触发器就是一个内置的存储过程(各位去问度娘),可以高效的处理的某些业务逻辑。

在这里,我们将实现一个提供微服务的工作流引擎平台。这个微服务实现要同步消费者系统的部门、角色、流程,任务动作,任务动作选项、及具体的任务。简单的说,就是在JSON表达式里对应的数据,都要同步过来(只同步ID即可)。这个微服务提供一个同步接口,一个获取代办任务接口,一个处理任务结果接口,接口为Restful风格。

这个微服务可以在线用图像化设计工作流模板,可以生成手写的流程自定义的彭氏JSON表达式)。

举例来说,一个部门,有若干个流程,用于处理不同的业务,流转过程中分别是委托方、业务审核人、测试室、测试审核、业务接收方、归档等等。我们需要定义出这几个流程类型,定义几个角色,几个动作,动作的选项,同步到工作流引擎微服务。这些数据,是用于工作流的设计。而具体的任务,都对应着一个流程类型,

消费方获取代办任务接口需要传入至少一个参数,即是roleid(角色ID), 通过这个角色ID,来查询其代办任务和对应动作,还有代办任务ID

消费方对应角色处理完任务后,要调用工作流引擎微服务的处理任务结果接口,至少传入代办任务ID,动作选项D, ,修改该条代办任务对应的状态,并插入下一步动作。

我们事先建立五张表,一个是Flow(流程表),一个Role(角色表),一个是Action(动作表),一个是AcitonOption(动作选项表)。一个是Task(任务表,有一个字段是标示属于哪个流程),一个是TaskWaiting(代办任务)表。

其中Flow(流程表),Role(角色表),Action(动作表), ActionOption(动作选项表)是用于设计工作流模板。

Task(任务表)和TaskWaiting(代办任务)表用于具体的业务。

在Task和TaskWaiting表中各有一个触发器,Task的触发器,在task表增删改后,触发下一步动作到TaskWaiting(代办任务)表。

TaskWaiting表的触发器,在修改了TaskWaiting的状态后,触发下一步动作。

未完待续。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180610G0CONI00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券