工作流开发之任务回收--童亚斋

       工作流技术起源于上世纪七十年代中期,兴起于九十年代,那时候一系列的规范和工作流原型系统从实验室开发出来,到今天工作流已经盛行。随着信息技术的发展和企业的发展,企业利用信息化对企业进行流程再造,进行精细化管理已经成为企业的核心竞争力之一。所以企业开发过程中工作流引擎必不可少。但是工作流引擎的技术门槛很高,一些中小软件企业不得不购买第三方软件平台,或者硬着头皮开发,但是随着JBPM的到来,给中小企业带来了利好消息。JBPM是一款基于PetriNet的工作流引擎,它可以通过可视化的建模来大大提高工作效率和流程的灵活定制。但毕竟JBPM只是一个框架或者说是一个应用平台的半成品,如果想达到我们应用到实际项目中,我们还需要对它进行大量包装,实现串签,并签,回退,跳转,并发子流程等等。可能回退和回收在国外不太使用,但在国内是非常有用的。这和我们的国情是分不开的。由于我国计算机起步比较晚,加之在企业中好多老员工还是公司骨干,但他们对计算机不是很熟悉,所以在办理任务时难免出错,这时回收就很重要了。因为他们不小心出错后可以及时收回,及时修改,这样就不会把错误往下传递,所以回收就尤为重要了。

      把在这几年的平台架构开发中的得失和大家分享一下,不足之处欢迎大家拍砖:),这里首先与大家分享一下回收这个功能。以后会陆续介绍串签,并签,回退,跳转以及与短信,邮件的结合,与单位组织结构的结合,门户的结合等等。

 JBPM回收分为以下几种情况:

 回收的一个大原则是要回收任务的下一个任务还没有被办理,因为你发出去了任务,并且下一个人已经办理了这时就不能回收了。就好像你把烤鸭送给人家,如果人家还没吃你可以要回来,如果人家都吃到肚子里了你就不能要了。

      1. 要回收的任务,与处于待办状态的任务处于同一节点。这时也分为两种情况此节点为串签节点或者此节点为并签节点。

      此处稍微解释一下串签节点和并签节点:

      串签节点:A节点在办理人中输入了“张三,李四,王五”,做为B(串签节点)的串签办理人,那么流程节点A结束后进入B,即B  节点依次创建张三,李四,王五任务,也就是说A节点点击办理以后,B节点目前只生成“张三”的一个任务,当张三的任务办理后才生成李四的任务,以此类推。

    并签节点:A个节点在办理人中输入了“张三,李四,王五”,做为B(并签节点)的并签办理人,那么流程节点A结束后进入BB节点同时生成张三,李四,王五三个任务。他们三者登录都能看到任务已经创建了。

      1.1回收节点为并签节点

       如果B为并签节点,那么只需直接将要回收的任务激活即可。

       1.2回收节点为串签节点

  如果B为串签节点,那么就需要将当前处于活动状态的任务取消,此时的取消不是通常的taskend,因为这样会触发一系列的后续任务的产生。因为这是串签节点(串签节点任务的依次产生就是通过taskend触发器来触发的)。所以我们用其他任何方法将当前活动任务置于非活动状态即可。然后将要回收的任务置于活动状态就可以了。

       2. 要回收的任务,与处于待办状态的任务处于不同节点。此时的回收分为两种情况一种是流程中含有并发子流程即含有fork节    点,另一种是不含有fork节点。

       2.1不含fork节点

       比如A节点办理完任务了,发送到了B

       不含有fork节点的情况相对简单,只要把当前处于待办任务节点的任务全部取消。当然当前待办任务节点可能又分成两种情况

        a. 此任务节点为并签任务节点

        b. 此任务为串签任务节点

        如果为a的情况,那么将此任务节点所有的任务结束掉,并将其标注为此节点的任务为回收而不是由当前办理人办理即可,然后将token转到回收的任务节点即可。

        如果为b的情况。参考1.2中的方法将任务终止。并且还要标明这个节点的串签任务是回收的而不是当前办理人办理的,因为每个公司或者个人开发串签功能的action都有所不同,所以这里只是讲公共的理论因素。保证了任务全部结束,然后这时转向到回收节点就可以了。

        2.2fork节点的

        如果流程中含有fork节点,那么就要注意你要回收的一定只是回收节点发出去的节点,

       比如A发出任务后,到达B,C.此时B有将任务办理后发送到D节点,这时处于待办节点的有C,D。如果此时B想回收任务,那么理论上它只能回收D,因为只有D是它发出去的,此时要对待办任务做一个判断如果任务属于D则结束,C则不管。然后将D节点转向回B即可。同时这里也要注意D节点分为串签节点和并签节点两种情况。上面已经阐述过这两种情况,再此不再赘述。

         以上虽然是针对JBPM讲的但如果自己开发平台也是可以参考的,因为理论的东西都是共通的。上面对于回收就先说这么多吧,希望对大家有帮助!

 

发布了26 篇原创文章 · 获赞 0 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/sameseam/article/details/5056803
今日推荐