欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第4章 jBPM应用(理论).ppt

    • 资源ID:88465807       资源大小:1.52MB        全文页数:29页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第4章 jBPM应用(理论).ppt

    SCCE 2010SCCE 2010课程体系介绍课程体系介绍第第4 4章章jBPMjBPM应用应用回顾回顾u了解流程节点的公共属性 u掌握Start、State、Node、Task Node、Fork、Join、Decision、End等节点用法本章内容本章内容uWeb应用中对jBPM的支持 u支持jBPM的配置文件u支持jBPM的JAR包u带中文流程的处理ujBPM整合Struts的开发步骤本章目标本章目标u了解支持jBPM的Web应用u了解支持jBPM的配置文件u了解支持jBPM的JAR包u熟悉jBPM开发带中文流程的实现方式u熟练掌握jBPM整合Struts的开发步骤1.创建创建jBPM Web工程工程 ujBPM的工作流引擎可以使用在C/S应用中,也可以使用在B/S的应用中u目前的发展形势看,以B/S架构的Web应用系统是主流u实际的应用中,一般不会也不应该将业务数据放在流程中处理1.1 创建创建Struts工程工程u使用MyEclipse创建一个Web工程,再添加Struts特性1.2 配置配置jBPM ujBPM配置文件 配置文件名称描述hibernatge.cfg.xml必需的。jBPM采用Hibernate来持久化数据jbpm.cfg.xml可选的。jBPM运行时所需的配置文件,如果没有,jBPM将使用默认的配置文件jbpm.mail.templates.xml可选的。jBPM邮件提醒的配置文件log4j.properties可选的。日志输出配置文件配置配置jBPM ujBPM运行所需的JAR包 JAR文件名称描述jbpm-jpdl.jar必需的。jBPM工作流引擎核心包jbpm-identity.jar必需的。jBPM身份组件包hibernate3.jar必需的。jBPM持久层Hibernate核心包antlr.jar必需的。Hibernate使用antlr产生查询分析器cglib.jar必需的。CGLIB核心库asm.jar必需的。ASM字节码库,cglib.jar依赖的包jta.jar必需的。JTA规范包dom4j.jar必需的。解析XML配置文件和映射文件包mail.jar必需的。jBPM工作流引擎发送邮件包注意:除了jbpm-jpdl.jar和jbpm-identity.jar这两个包需要复制外,其他的包都可以在SSH工程中自动添加 2.开发流程开发流程 2.1 请假单需求说明 n请假流程如下 员工登录系统,填写请假单 完成请假申请以后,请假单将根据流程流转到该员工所在部门的部门主管处进行审批 如果部门主管审批不通过,则流程结束 如果请假天数大于5天,则需要总经理审批 如果请假天数小于5天,则请假单将直接送到人事部门 如果总经理审批不通过,则流程结束 如果总经理审批通过,则请假单送到人事部门,最后由人事部门处理完成请假流程 2.2 创建流程图创建流程图 u根据请假需求说明,创建请假流程图 创建流程图创建流程图 ujBPM设计器对中文的支持不是很好,重新打开流程设计器u查看流程节点定位信息文件gpd.xml 创建流程图创建流程图 u产生中文乱码的原因njBPM设计器在产生gpd.xml时,使用的是本地编码。Linux的本地编码为utf-8,所以不存在问题;但是Windows不是,所以导致了乱码 u解决方案nMyEclipse的启动的快捷键中加入-Vmargs-Dfile.encoding=UTF-8u通过上面方法,jvm的默认编码就变成UTF-8,因此就不会产生中文乱码的问题了注意:解决中文问题后,其他地方会出现乱码。所以改变快捷方式最好只用于定义、修改以及发布流程定义,在编码阶段再切换回原来的环境 2.3 分配任务分配任务 u假设有公司组织机构如下:n员工emp1和emp2n员工的部门主管分别为manager1和manager2n总经理为bossn人事部门为personnel分配任务分配任务 u请假单部门主管参与者的分配 public class ManagerAssignment implements AssignmentHandler public void assign(Assignable arg0,ExecutionContext arg1)throws Exception/从上下文实例获得申请员工String leaveEmp=arg1.getContextInstance().getVariable(leaveEmp).toString();if(emp1.equals(leaveEmp)arg0.setActorId(manager1);elsearg0.setActorId(manager2);设置emp1的部门主管的参与者manager1设置emp2的部门主管的参与者manager2分配任务分配任务 u请假单总经理参与者的分配 public class BossAssignment implements AssignmentHandler public void assign(Assignable arg0,ExecutionContext arg1)throws Exception arg0.setActorId(boss);设置总经理的参与者boss分配任务分配任务 u请假单人事处理参与者的分配 public class PersonnelAssignment implements AssignmentHandler public void assign(Assignable arg0,ExecutionContext arg1)throws Exception arg0.setActorId(personnel);设置人事的参与者personnel 2.4 流程动作流程动作 u请假结束以后,为了将审批结果通知申请人,使用Action动作处理,在控制台打印消息说明请假结果public class LeaveNotifyAction implements ActionHandler public void execute(ExecutionContext arg0)throws Exception boolean flag=false;ContextInstance ci=arg0.getContextInstance();/获得流程上下文对象String user=(String)ci.getVariable(leaveEmp);/获得申请人/获得请假申请是否通过String approveResult=(String)ci.getVariable(approveResult);if(1.equals(approveResult)flag=true;if(flag)System.out.println(user+,您的请假申请审批已经通过);elseSystem.out.println(user+,您的请假申请审批没有通过);arg0.getToken().signal();2.5 流程定义文件流程定义文件 u以Handler方式给部门主管的参与者分配任务 u以Handler方式给总经理的参与者分配任务 u以Handler方式给人事部的参与者分配任务 u以Action方式将审批信息通知请假申请人 u判断请假天数的Decision节点采用Expression方式判断流程走向流程定义文件流程定义文件 u流程定义文件的XML代码 2.6 测试流程测试流程 u创建数据库方法public void testCreateDB()throws Exception/获得JbpmConfiguration对象JbpmConfiguration jbpmConfiguration=JbpmConfiguration.getInstance();jbpmConfiguration.createSchema();u部署流程 JbpmConfiguration jbpmConfiguration=JbpmConfiguration.getInstance();String fileName=E:/leaveWeb.zip;/定义流程打包文件的路径jbpmContext=jbpmConfiguration.createJbpmContext();InputStream is=new FileInputStream(new File(fileName);ZipInputStream zis=new ZipInputStream(is);ProcessDefinition pd=ProcessDefinition.parseParZipInputStream(zis);jbpmContext.deployProcessDefinition(pd);zis.close();is.close();jbpmContext.close();测试流程测试流程 u创建流程实例以及相应的处理方式 public void createPi()/获得流程定义pd=ProcessDefinition.parseXmlResource(leave/processdefinition.xml);pi=new ProcessInstance(pd);/获得流程实例pi.getContextInstance().createVariable(leaveEmp,emp1);/设置申请人pi.getRootToken().signal();/流程从开始节点流转到申请请假表单节点u提交请假申请,业务数据放入上下实例变量中 public void submitLeave(String days)/获得请假表单的任务实例TaskInstance ti=(TaskInstance)pi.getTaskMgmtInstance().getTaskInstances().iterator().next();ContextInstance ci=pi.getContextInstance();ci.setVariable(days,days);ti.setVariable(title,请假);ti.setVariable(days,days);ti.setVariable(reason,生病);ti.end();System.out.println(提交请假申请);测试流程测试流程 u管理员审核 public void managerDecide(String manager,boolean flag)/查询所有任务实例 Collection tiList=(Collection)pi.getTaskMgmtInstance().getTaskInstances();for(TaskInstance ti:tiList)if(部门主管审批.equals(ti.getName()/匹配任务实例名称为“部门主管审批”的任务 System.out.println(部门主管审批参与者:+ti.getActorId();if(flag)ti.getContextInstance().setVariable(approveResult,1);ti.getContextInstance().setVariable(processResult,部门主管审批通过);ti.end(manager agree);System.out.println(部门主管审批通过);else ti.getContextInstance().setVariable(approveResult,0);ti.getContextInstance().setVariable(processResult,部门主管审批不通过);ti.end(manager disagree);System.out.println(部门主管审批不通过);测试流程测试流程 u总经理审核 public void bossDecide(String manager,boolean flag)Collection tiList=(Collection)pi.getTaskMgmtInstance().getTaskInstances();System.out.println(size:+tiList.size();for(TaskInstance ti:tiList)/匹配任务实例名称为“部门主管审批”的任务 if(总经理审核.equals(ti.getName()System.out.println(总经理审核参与者:+ti.getActorId();if(flag)ti.getContextInstance().setVariable(approveResult,1);ti.getContextInstance().setVariable(processResult,总经理审核通过);ti.end(boss agree);System.out.println(总经理审核通过);elseti.getContextInstance().setVariable(approveResult,0);ti.getContextInstance().setVariable(processResult,总经理审核不通过);ti.end(boss disagree);System.out.println(总经理审核不通过);测试流程测试流程 u人事审核 public void personnelDecide(String manager)/查询所有任务实例 Collection tiList=(Collection)pi.getTaskMgmtInstance().getTaskInstances();for(TaskInstance ti:tiList)/匹配任务实例名称为“部门主管审批”的任务 if(请假人事处理.equals(ti.getName()System.out.println(请假人事处理审核参与者:+ti.getActorId();ti.getContextInstance().setVariable(processResult,请假人事处理审核通过);ti.end();System.out.println(请假人事处理审核通过);u如果请假3天,测试请假流程 n请假3天,部门主管审核通过 n请假3天,部门主管审核不通过 测试流程测试流程 public void testLeave3DaysProcess()createPi();submitLeave(“3”);/请假3天managerDecide(“”,true);/部门主管审核通过personnelDecide();public void testLeave3DaysProcess()createPi();submitLeave(“3”);/请假3天managerDecide(“”,false);/部门主管审核不通过personnelDecide();测试结果如下:提交请假申请部门主管审批参与者:manager1部门主管审批通过请假人事处理审核参与者:personnelemp1,您的请假申请请假人事处理审核通过请假人事处理审核通过测试结果如下:提交请假申请部门主管审批参与者:manager1emp1,您的请假申请部门主管审批不通过部门主管审批不通过 测试流程测试流程 public void testLeave8DaysProcess()createPi();submitLeave(8);managerDecide(,true);bossDecide(,true);personnelDecide();public void testLeave8DaysNotProcess()createPi();submitLeave(8);managerDecide(,true);bossDecide(,false);测试结果如下:提交请假申请部门主管审批参与者:manager1部门主管审批通过size:3总经理审核参与者:bossemp1,您的请假申请总经理审核不通过总经理审核不通过 测试结果如下:提交请假申请部门主管审批参与者:manager1部门主管审批通过size:3总经理审核参与者:boss总经理审核通过请假人事处理审核参与者:personnelemp1,您的请假申请请假人事处理审核通过请假人事处理审核通过 u如果请假8天,测试请假流程 n请假8天,部门主管审核通过,总经理审核通过 n请假8天,部门主管审核通过,总经理审核不通过 3.jBPM+Struts整合请假单整合请假单 3.1 jBPM+Struts整合请假单步骤 u搭建工程,开发流程n搭建支持jBPM的Struts工程,并创建请假流程u用户登录实现n创建UserAction类,用于处理员工的登录 u请假实现 n创建LeaveAction类,用于处理请假单申请 u流程任务处理 n创建TaskAction类,用于实现任务的处理和流转 u页面处理 总结总结u掌握jBPM的Web工程的搭建 ujBPM的配置文件nhibernatge.cfg.xmlnjbpm.cfg.xmlnjbpm.mail.templates.xmlujBPM的JAR包njbpm-jpdl.jarnjbpm-identity.jarujBPM流程的中文处理方式:改变Windows下jvm的默认编码,在MyEclipse的启动的快捷键中加入-Vmargs-Dfile.encoding=UTF-8u掌握jBPM整合Struts的步骤及应用

    注意事项

    本文(第4章 jBPM应用(理论).ppt)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开