论坛首页 Java版

一个关于工作流的小系统(jbpm)

浏览 9325 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2007-03-08 关键字: jbpm

一个关于工作流的小系统

这是一个工作流的小系统,用在一个公司的内部电子工单处理,还没通过验收,客户又提了些改进的需求。负责的那两个同事过两天要出差,我们的部门经理把这个小系统交给我改进和维护。我今天看了哈,工作流程和改进需求,不是很复杂,由于以前不是用工作流引擎做的,我想把它改成用jbpm来实现。我也是刚开始学习jbpm,把它写下来,和网友交流,分享,希望得到大家的指点。

工单处理流程如图:

 

 流程定义如图:

流程定义的xml文件如下:

xml 代码
  1. xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="innerP">  
  4.     <start-state name="IP_Start">  
  5.         <transition name="" to="IP_Request">transition>  
  6.     start-state>  
  7.     <task-node name="IP_Request">  
  8.           
  9.         <task name="Task_WriteRequest">task>  
  10.         <transition name="" to="M_decision">transition>  
  11.     task-node>  
  12.     <decision name="M_decision">  
  13.         <transition name="" to="M_Auditing">transition>  
  14.     decision>  
  15.     <task-node name="M_Auditing">  
  16.           
  17.         <task>task>  
  18.           
  19.         <transition name="NO_pass" to="IP_Request">transition>  
  20.           
  21.         <transition name="Pass" to="B_specificResponsibility">transition>  
  22.     task-node>  
  23.     <task-node name="B_specificResponsibility">  
  24.           
  25.           
  26.         <transition name="Disposal" to="IP_end">transition>  
  27.           
  28.         <transition name="M_Disposal" to="M_specific">transition>  
  29.           
  30.         <transition name="B_Disposal" to="O_Branch">transition>  
  31.     task-node>  
  32.       
  33.     <task-node name="O_Branch">  
  34.           
  35.         <transition name="T_BM" to="M_specific">transition>  
  36.           
  37.         <transition name="T_Branch" to="IP_end">transition>  
  38.     task-node>  
  39.       
  40.     <task-node name="M_specific">  
  41.           
  42.         <transition name="T_Mspecific" to="IP_end">transition>  
  43.           
  44.         <transition name="member" to="Member_S">transition>  
  45.     task-node>  
  46.       
  47.     <task-node name="Member_S">  
  48.         <transition name="" to="IP_end">transition>  
  49.     task-node>  
  50.   
  51.     <end-state name="IP_end">end-state>  
  52. process-definition>  

由于刚开始学习使用,我现在有两点疑问:结束状态前面是不是应该使用join,我见过几个例子都使用了join;开始的地方不是可以不用decision。希望能得到圈子里朋友的指点和帮助,我自己也会实践。把实践的结果和心得写下来和大家分享。

 

 

   
时间:2007-03-12
按照楼主的流程图来看,应该不需要join,操作完成之后直接跳转至结束就行了。
   
0 请登录后投票
时间:2007-03-22
表现层准备用什么实现呢
   
0 请登录后投票
时间:2007-04-02
我们做的一个项目中有工单管理这一块,我在想用上工作流,应该和你的类似,能不能给点建议性的东东了
   
0 请登录后投票
时间:2007-04-02

join必须和fork一起使用的,主要是从fork开始会变成两个分枝,同时并行两个流程,最后两个流程在join汇合,才能走入下面的节点task。

 

如 一个拍卖流程图

 

在流程进入 sale 时,将分成两个流程分枝,一个是送货,一个是付款帐单,两个流程各自独立。

如果送货流程先完成 receive item 节点任务,那么它必须等待付款流程完成send money 节点任务,这时整个流程才能进入下一个任务。这种情况下用fork与join共同实现这样的场景。

   
0 请登录后投票
时间:2007-04-02
流程图:

流程定义文件:

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <process-definition xmlns="" name="sale">  
  3.     <start-state name="start">  
  4.         <transition name="" to="拍卖"/>  
  5.     </start-state>  
  6.     <end-state name="end1"/>  
  7.     <task-node name="拍卖">  
  8.         <transition name="" to="fork1"/>  
  9.     </task-node>  
  10.     <fork name="fork1">  
  11.         <transition name="运送" to="发货"/>  
  12.         <transition name="帐单" to="付款"/>  
  13.     </fork>  
  14.     <join name="join1">  
  15.         <transition name="交易完成" to="end1"/>  
  16.     </join>  
  17.     <task-node name="发货">  
  18.         <transition name="" to="货物验收"/>  
  19.     </task-node>  
  20.     <task-node name="货物验收">  
  21.         <transition name="" to="join1"/>  
  22.     </task-node>  
  23.     <task-node name="付款">  
  24.         <transition name="" to="货款验收"/>  
  25.     </task-node>  
  26.     <task-node name="货款验收">  
  27.         <transition name="" to="join1"/>  
  28.     </task-node>  
  29. </process-definition>  



 
  
 
 
 
  
 
 
  
  
 
 
  
 
 
  
 
 
  
 
 
  
 
 
  
 

 

   
0 请登录后投票
时间:2007-04-02

skyvsdream 写道:

一个关于工作流的小系统

这是一个工作流的小系统,用在一个公司的内部电子工单处理,还没通过验收,客户又提了些改进的需求。负责的那两个同事过两天要出差,我们的部门经理把这个小系统交给我改进和维护。我今天看了哈,工作流程和改进需求,不是很复杂,由于以前不是用工作流引擎做的,我想把它改成用jbpm来实现。我也是刚开始学习jbpm,把它写下来,和网友交流,分享,希望得到大家的指点。

由于刚开始学习使用,我现在有两点疑问:结束状态前面是不是应该使用join,我见过几个例子都使用了join;开始的地方不是可以不用decision。希望能得到圈子里朋友的指点和帮助,我自己也会实践。把实践的结果和心得写下来和大家分享。

 

 


在明白join与fork的用法后,就知道了你的这个流程是不需要join的。 :)明白了吧

   
0 请登录后投票
时间:2007-04-02
如果有一个分支到达End的时候,整个流程结束。那么不用join,也可以使用join,然后配置不用等其他分支到达。
如果需要所有倒达才结束,需要join。

建议还是加上。
   
0 请登录后投票
时间:2007-04-11
对了问一下你们的工作用的是什么引擎进行解析的啊
   
0 请登录后投票
时间:2007-04-12
我现在也在做工作流的东西,可惜没有什么资料,看的都是英文的,不知道各位大侠有没有中文的详细资料,或者已经开发好的例子可以给我参考参考,我的邮箱01071405@163.com,希望大家多多交流
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐