JOffice中的JBPM4在线流程设计器--初览(Applet版)博客分类:JBPMFlexJBPMEXTXMLEclipse鉴于基于mxgraph的版本不能在中国使用,本人打算用Flex开发,不过Flex的图形处理功能目前还是不太强,主要表现在没有一个较好的图形处理框架,完成一个曲线绘制及编辑功能也需要大费周折,于是本人决定临时给客户开发一个基于Applet版的在线流程设计器。用java开发,相对得心应手一些,,花了整整一个星期的时间,初步完成了流程的界面编辑设计,并且生成了XML文件。可以比较方便编辑在线的流程,目前尚未解决的是如何进行分支决定。在线完成画图相对比较容易,惟一困难的是如何让它生成的xml文件支持自动跳转分支的功能,因此需要让设计者画分支图的可以输入一些跳转的条件,生成流程图的时候,就可以让Jbpm流程自动来进行。以下为程序的初步界面,其会随JOffice1.3一起发布。整合至EXT的界面如下所示:流程设计中的分支条件设置,使用的是表达式方式,如下所示:Java代码decisionname=evaluatedocumentg=96,102,48,48transitionto=submitdocumentg=120,60:conditionexpr=#{content=="good"}//transitiontransitionto=tryagainconditionexpr=#{content=="bad"}//transitiontransitionto=giveupg=120,189://decision我们在设计器中也允许用户设置以上的表达式,如下图所示:以上流程图最终生成的jpbm流程定义以下所示:Java代码?xmlversion=1.0encoding=UTF-8?processname=teststartg=63,34,58,58name=开始transitiong=-36,-16name=toto=输入金额//starttaskg=217,42,103,44name=输入金额transitiong=-36,-16name=t2to=分支//tasktaskg=72,222,118,45name=任务4transitiong=-36,-16name=t5to=结束1//taskdecisiong=243,137,58,58name=分支transitiong=-36,-16name=t4to=任务5conditionexpr=#{account<=30}//transitiontransitiong=-36,-16name=t3to=任务4conditionexpr=#{account>30}//transition/decisiontaskg=364,229,137,42name=任务5transitiong=-36,-16name=t6to=结束1//taskendg=239,336,58,58name=结束1//process在eclipse中显示出来的图如下所示:以下为稍为复杂一点的流程:生成的源代码对应如下:Java代码?xmlversion=1.0encoding=GBK?processname=test22taskname=任务1g=48,127,77,41transitionname=t2to=分支g=-36,-16//taskstartname=开始g=54,12,58,58transitionname=t1to=任务1g=-36,-16//startdecisionname=分支g=60,231,58,58transitionname=t4to=任务3g=-36,-16conditionexpr=#{account>20}//transitiontransitionname=t3to=任务2g=-36,-16conditionexpr=#{account<=20}//transition/decisiontaskname=任务2g=171,156,50,50transitionname=t5to=同步任务g=-36,-16//tasktaskname=任务3g=194,313,50,50transitionname=t10to=结束1g=-36,-16//taskforkname=同步任务g=238,61,58,58transitionname=t7to=任务5g=-36,-16/transitionname=t6to=任务4g=-36,-16//forktaskname=任务4g=375,65,50,50transitionname=t8to=汇集任务g=-36,-16//tasktaskname=任务5g=290,212,50,50transitionname=t9to=汇集任务g=-36,-16//taskjoinname=汇集任务g=446,248,58,58transitionname=t11to=结束1g=-36,-16//joinendname=结束1g=354,404,58,58//process