Activiti7实现知会功能

  • A+
所属分类:工作流引擎

所谓知会,就是在流程进行到某一个节点时,通知另一个人,这个人可以看到该流程的进展,但是不会影响整个流程。

activiti7中,虽然没有直接的方法实现,但是有一个createTask方法,用这个方法我们可以实现知会功能。因为createTask新建出来的任务,不管执行人完成或不完成任务,都不会影响到整个流程,这不正好和知会的需求是一样的吗?

整个思路如下:

  1. 用户在某个节点需要知会另一人时,调用createTask方法,assingee指定为要知会的人。
  2. 业务端维护一张知会表,把知会人和businessKey存和这张表中,代表这个人有权看到这个businessKey相对应的流程实例。
  3. 被知会人登录,查询知会表,如果有记录,则在前端显示有知会提示,这时想查看流程实例的具体信息时,通过businessKey来查询流程实例显示到页面。
  4. 如果被知会人不想老是有这个知会提示,则可以调用complete方法来完成任务,同时在知会表里更新状态,前端则不显示知会提示

 

整个过程看起来没什么问题,但是实际开发中发现一个严重的问题是,用createTask新建出来的任务里的businessKey是空的,这个就有点麻烦了,我们知道,activiti里业务表是通过businessKey来和流程实例相关联的,如果businessKey为空,而有两个实例都知会了某个人,那么这个人想看其中一个流程实例的具体信息就做不到了。

一个不是太好的解决方法就是,因为是在某一个节点知会另一个人, 这个节点的当前任务里是有businessKey的,那么在调用createTask方法时,把taskName的值设为businessKey,这样一来,下次查询知会记录时,就可以通过taskName拿到businessKey了。

ZPY

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: