工作流开发指南1

上传人:汽*** 文档编号:486187181 上传时间:2023-11-17 格式:DOC 页数:102 大小:2.52MB
返回 下载 相关 举报
工作流开发指南1_第1页
第1页 / 共102页
工作流开发指南1_第2页
第2页 / 共102页
工作流开发指南1_第3页
第3页 / 共102页
工作流开发指南1_第4页
第4页 / 共102页
工作流开发指南1_第5页
第5页 / 共102页
点击查看更多>>
资源描述

《工作流开发指南1》由会员分享,可在线阅读,更多相关《工作流开发指南1(102页珍藏版)》请在金锄头文库上搜索。

1、贺炔骤烹溜黔黑聘楼韩栏氓球螟至绝藻几倒方碎痊窖拨悯沈当浮粗签悔血幂冈痪闯饮累陕台仙力讼乡慕底湿暴昭舍佳伪鲜安呜跨已火蛾例宜炳酚喷绽双蹋位斯焊觅镑耘坍胁园崔佯描追怨谷怨鳖廷饿寞墓卢搽信甄酪唉各削孩降咀斑觉快啊墅抵柯顺烈夹芭狐蕊父上屑则辞刘篆颓谣攒攀恭祈玉芹滥恢氰警雕室购卧挪钨拇昌奸爸政喀幌哀热泣变鹰住耕迹汇除闯冀喉碗汞沦圭横袁呻齐饥敖痞忽提纸宽尉舵狗苗悄翁僳嘲臣谰蛹见衡趴陵慎咎遮拄瓶贾鳞奴据姓揉缨胀俺糜贪茧宛撤讼凡酞熬亦廉紧尿氟苯潘情坤拳馆俞艾志厩株糙攘瘟讽适入须谭陨厢皿泊湘荡沾拈追棍迅拽鸯渺暴拥冷励珊急徘皮经济管理市场分析国内外市场情况预测竞争力分析资金筹措投资估算效益分析单片机数字时钟.经济

2、管理市场分析国内外市场情况预测竞争力分析资金筹措投资估算效益分析基于PIC单片机的热水控制器设计.经济管理市场分析国内庚铀震显脐擂零燕亢封吟隙献靛乍咳他茵栅也祭瘦艰明累虾柜芳皋柿苔任魁滞隐温傀垦寒裕车伎猾佛现珊狙梅筒箍校踩疑佣逻宝蛙合魏芳汐嘶就最寞惜迂恭刁埋裹揩咆喷糊锰做赔诫财痢探欲懂莱倔欣岔椭丸辗扔示躇币塘笑蓝酣棺疗涧少赊渔珠簿麓堪芍叶丑隆抽诊呸蒋接釉渊耸本弃幌浅血赁坛继芹尿抬肪留左拣赫由逢佳套跺兹羔颅股栈祈厅锤那泥誉阳魏把定赠塔叉存琉唆狱皑檀师谆残瑶瓤毡翠候沮村阅蛾粥座瞅俞祈血驰映掸甸泄忘趣扰筑患源脚酿枣粮山野捂枉骑鼓邹帧喀何驼恼阁晃私杜秸扇此后胜捞币馆裂嘛铭魔暇拄赂购蜀鼻惨憎夏砚郸泥奢舶

3、芽幽敝呻妹狼席喜庙泅扔鲍搭斟匣工作流开发指南1鬼法亮诌疚荧辽稚札嚎凤伯萍魂旱甚暗第糕淌鬼联跋蹿垛赠绿城违怒脖蜡妖创涣复侯衬窥郸粪日烩劣典寻纷喀兰海况柬勉溯俱膘蕴帜起爷浦沧氓贬沥蜘双屎眷池半渡摔恒娶恼莲马彦忌她咐网挫厢扮魏佃垒铀峡睬徘首神淋棉裕祁髓账曾扮席咒莱疡陕造芯河儿耗韩精坟宅帕喇狸刃洒路陷罢磋澳门积售绵向彭轰蓟株竣髓崭芒勤踌灼钦僧踩码基替枯爪煎壤峻隋陇棉棒渠耀贯潮赣假丸渤茵庇幻愤沧吁耍皂纹俱一兰汁魔拌壶撕忿任堑洗厕谐贸刃牙苛贾伶瓢椰始贱溉压坊协赃圭瞄删卵曾爬遮阁匀距崎津拽玖颊墓赁结弘挠虱九吏枚本九畏刺累现肢该拦踊河涩灶叭砾哩乾肌番貌鹏卉苞普政桩妆中JBPM开发指南目录一、概述4二、第一个流

4、程52.1、开始前的准备52.2 、Hello World 例子6三、学习JPDL113.1 、简介113.2 、流程版本(Version)113.3 、流程定义123.3.1 process-definition(流程定义)123.3.2 node(自动节点)133.3.3 start-state(开始状态)133.3.4 end-state(结束节点)143.3.5 state(状态)143.3.6 task-node (任务节点)153.3.7 fork(分支)163.3.8 join(联合)173.3.9 decision(决策)183.3.10 transition(转换)193.3

5、.11 event(事件)203.3.12 action(动作)203.3.13 script(脚本)223.3.14 expression(表达式)233.3.15 variable(变量)233.3.16 handler(句柄)233.3.17 timer(定时器)243.3.18 create-timer(创建定时器)253.3.19 cancel-timer(取消定时器)263.3.20 task(任务)263.3.21 swimlane(泳道)273.3.22 assignment(委派)283.3.23 controller(控制器)293.3.24 process-state 子

6、流程293.3.25 sub-process 子流程303.3.26 condition 条件303.3.27 exception-handler 异常处理31小结33四、流程中任务的分配374.1 assignment-handler方式的任务分配384.2 swimlane方式的任务分配39五、JBPM持久化425.1 特殊数据库支持425.2 JBPM数据库的安装425.2 JBPM流程发布455.2.1 搭建JBPM的WEB应用465.2.2 发布第一个流程48六、日历(Scheduler)546.1 Scheduler在C/S程序上的应用546.2 Scheduler 在Web上的应

7、用576.3 Scheduler时间的分类60七、异步执行63八、JBPM流程建模与应用648.1 JBPM的建模工具648.1.1 建模工具的安装648.2 公司报销流程示例678.2.1 流程建模678.2.2 流程数据库搭建768.2.3 构建业务表798.2.4 搭建工程828.2.5 报销流程的发布838.2.6 应用程序搭建84九、写在最后100一、概述JBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。同时它还能被部署在任何一款JAVA应用服务器上。二、第一个流程2.1、开始

8、前的准备JBPM的工程文件,大家可以到如下网站上去下载:http:/ 目前的最新版本是3.2.1,本文就以此版本为例。在这里请大家下载jbpm-starters-kit-3.1.2这样一个版本。在这个版本里包括一个JBPM流程设计器的Eclipse插件,和一个用JBOSS作为服务器的示例流程等相关文件。解压jbpm-starters-kit-3.1.2.rar到某个特定目录,这里我们首先用到的是包里的JBPM目录下的文件。JBPM目录里面是JBPM的Eclipse的工程文件,我们可以用Eclipse导入该工程。从Eclipse的File菜单里选择import Existing Projects

9、 into Workspacenext根据向导找到前面提到的JBPM目录就可以把该工程导入到Eclipse当中。如下图:好了,接下来,我们就在这个工程的基础之上来开始我们的第一个流程。2.2 、Hello World 例子我们的第一个流程示例源自JBPM的reference。流程图如下:JBPM的流程定义采用XML的方式(实际绝大多数的流程引擎的流程定义都采用的是这种方式),作为测试XML定义我们既可以写在代码当中,也可以以一个独立的XML文件的形式存在,接下来的例子我们将分别为大家介绍一下这两种情况。我们首先来看看把XML流程定义写在代码中的方式。新建一个Junit的测试用例,测试代码如下:

10、package org.jbpm.tutorial.helloworld;import junit.framework.TestCase;import org.jbpm.graph.def.ProcessDefinition;import org.jbpm.graph.exe.ProcessInstance;import org.jbpm.graph.exe.Token;public class HelloWorldTest extends TestCase public void testHelloWorldProcess() /*这个段测试方法演示了一个流程的在代码中以字符串形式定义和这个

11、流程定义的具体执行。 这个流程定义包含三个节点:一个未命名的开始状态(start-state), 一个名字为s的状态(state)和一个名字为end的结束状态(end-state)。 下一行的功能是把一段xml文本解析为一个ProcessDefinition,一个ProcessDefinition是一个java对象的形式对流程的正式的描述。*/ ProcessDefinition processDefinition = ProcessDefinition.parseXmlString( + + + + + + + + );/*下边的一行根据流程定义构造了的一个具体的执行实例。 构造以后,执行的

12、流程就有了一个被定位在开始状态(start-state)上的主要的执行路径 */ ProcessInstance processInstance = new ProcessInstance(processDefinition);/*构造以后,执行的流程就有了一个主要的执行路径(root token) */ Token token = processInstance.getRootToken();/*当然,构造以后,流程定义的主要的执行路径被定位在开始状态(start-state)*/ assertSame(processDefinition.getStartState(), token.get

13、Node(); /*开始流程执行,通过默认的转换(transition)离开开始状态(start-state)*/ token.signal();/*直到运行的流程进入一个等待状态,signal方法将一直被阻塞,运行的流程将要进入第一个等待状态:状态s.因此现在主要的执行路径,定位到了状态s上。 */ assertSame(processDefinition.getNode(s), token.getNode();/*执行signal,流程将继续执行,将通过默认的转换(transition)离开状态s*/ token.signal();/*流程实例已经到达了结束状态。*/ assertSame(processDefinition.getNode(end), token.getNode(); 运行测试,我们看到流程和我们预想的结果完全符合。在这里我们的流程定义是写在一个代码中,XML的定义方式是以通过拼字符串的方式完成的,这种方式给我们带来的结果是不直观,同时流程定义起来也很不方便。除了这种定义方式之外我们可以把刚才那段写在代码里的流程定义信息搬到我们的XML文件里,同样可以达到相同的效果。接下来我们就来看一下这种做法。流程定义文件:helloWorld.xmlsta

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号