第5章 jBPM+SSH(理论).ppt_第1页
第5章 jBPM+SSH(理论).ppt_第2页
第5章 jBPM+SSH(理论).ppt_第3页
第5章 jBPM+SSH(理论).ppt_第4页
第5章 jBPM+SSH(理论).ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SCCE2010课程体系介绍 第5章jBPM SSH 回顾 掌握jBPM的Web工程的搭建jBPM的配置文件hibernatge cfg xmljbpm cfg xmljbpm mail templates xmljBPM的JAR包jbpm jpdl jarjbpm identity jar掌握jBPM整合Struts的步骤及应用 本章内容 jPBM和SSH的整合方式jBPM和SSH的整合步骤工作流审批过程中邮件通知的使用方法流程进度图的实现 本章目标 熟悉jBPM整合SSH的环境掌握jBPM整合SSH的步骤掌握工作流审批过程中邮件通知的用法掌握在Web应用中使用流程图和高亮显示流程节点的方法 1 jBPM整合SSH 1 1需求分析具体需求如下公司员工登录系统 填写请假单提交请假单后 单据流向员工部门主管处进行审批如果部门主管审批不通过 则流程结束如果部门主管审批通过 则需要进行请假天数的判断如果请假天数小于5天 单据直接由人事部门处理如果请假天数大于5天 则请假单还需要总经理审批 只有总经理审批通过后才交由人事部门处理如果总经理审批不通过 则流程也将结束 1 2创建业务数据库 请假流程的业务表数据模型 1 3搭建支持jBPM的SSH工程 SSH整合jBPM配置文件的Hibernate cfg xml 搭建支持jBPM的SSH工程 添加jbpm jpdl jar和jbpm identity jar包 2 开发流程 2 1创建流程图根据请假需求 创建请假流程图 2 2分配任务 给请假申请人分配部门主管参与者 publicclassManagerAssignmentimplementsAssignmentHandler publicvoidassign Assignablearg0 ExecutionContextarg1 throwsException 从流程变量中获得申请人的部门主管StringleaveEmp arg1 getContextInstance getVariable manager toString arg0 setActorId leaveEmp 设置部门主管参与者 分配任务 给请假申请人分配总经理参与者 publicclassBossAssignmentimplementsAssignmentHandler publicvoidassign Assignablearg0 ExecutionContextarg1 throwsException 从JbpmContext中获得SessionSessionsession arg1 getJbpmContext getSession Stringhql selectmodel empfromDepartasmodelwheremodel depName 管理部 总经理用管理部的负责人代替Empemp Emp session createQuery hql uniqueResult System out println name emp getEmpName arg0 setActorId emp getEmpName 设置总经理参与者 分配任务 给请假申请人分配人事参与者 publicclassPersonnelAssignmentimplementsAssignmentHandler publicvoidassign Assignablearg0 ExecutionContextarg1 throwsException 从JbpmContext中获得SessionSessionsession arg1 getJbpmContext getSession Stringhql selectmodel empfromDepartasmodelwheremodel depName 人事部 获得人事部门的负责人Empemp Emp session createQuery hql uniqueResult System out println name emp getEmpName arg0 setActorId emp getEmpName 设置人事参与者 2 3流程动作 审批不通过或者人事处理完成之后通过发送邮件通知申请人使用Spring的方式向申请人发送邮件通知 publicclassLeaveNotifyActionimplementsActionHandler publicvoidexecute ExecutionContextarg0 throwsException ApplicationContextctx newClassPathXmlApplicationContext applicationContext xml MailSendersender MailSender ctx getBean mailSender 从容器中获取MailSender实例SimpleMailMessagemessage newSimpleMailMessage 创建SimpleMailMessage对象message setTo SCCE TO 设置收信人地址message setFrom SCCE FROM 设置发信人地址booleanflag false ContextInstanceci arg0 getContextInstance 获得流程上下文对象Stringname String ci getVariable name 获得单据类型Stringuser String ci getVariable emp 获得申请人StringapproveResult String ci getVariable approveResult 获得请假申请是否通过if 1 equals approveResult flag true if flag message setSubject 审批结果 设置主题message setText user 您的 name 申请审批已经通过 设置内容 else message setSubject 审批结果 设置主题message setText user 您的 name 申请审批没有通过 设置内容 arg0 getToken signal sender send message 发送邮件 流程动作 要实现邮件的发送 则还需要在Spring的配置文件中进行配置 true2500 1 开发持久层按照SSH的方式开发持久层 其BaseDAO类及其配置如下 publicclassBaseDAOextendsHibernateDaoSupport 实体对象全路径名称 包括包名privateStringpoName publicListgetObjects ListpoList null try Stringhql from poName poList this getHibernateTemplate find hql catch Exceptione e printStackTrace returnpoList publicvoidsetPoName StringpoName this poName poName 3 jBPM SSH整合步骤 对poName设置注入 查询所有记录 其他方法省略 jBPM SSH整合步骤 具体业务的DAO实现该BaseDAO即可 DAO的配置如下 com hr g3 persist Emp 把SessionFactory注入给BaseDAO的HibernateDaoSupport 把具体的实体对象注入给具体DAO 2 开发业务逻辑层业务表的业务逻辑类只需要封装业务DAO 而流程的业务逻辑类 WorkFlowHandlerImpl 如下 流程业务逻辑配置文件如下 jBPM SSH整合步骤 获取系统已定义的所有流程名称列表publicListqueryAllProcessDefinition JbpmContextjbpmContext JbpmConfiguration getInstance createJbpmContext returnjbpmContext getGraphSession findLatestProcessDefinitions 搜索流转到用户activeId的所有待审核的流程实例publicListqueryCurrentProcessInstances StringactiveId ListbusinessIds newArrayList JbpmContextjbpmContext JbpmConfiguration getInstance createJbpmContext Listtis jbpmContext getTaskMgmtSession findTaskInstances activeId for TaskInstanceti tis if ti isSignalling 如果这个任务处于正在等待被完成的状态businessIds add ti getProcessInstance getKey returnbusinessIds 其他方法省略 其他方法省略 jBPM SSH整合步骤 3 开发表示层查看所有定义流程Action publicclassFlowActionextendsDispatchAction privateWorkFlowHandlerworkFlowHandler 查看所有定义流程publicActionForwardqueryAllFlow ActionMappingmapping ActionFormform HttpServletRequestrequest HttpServletResponseresponse throwsException ActionForwardforward newActionForward ListpdList workFlowHandler queryAllProcessDefinition request setAttribute pdList pdList forward mapping findForward queryAllFlow returnforward publicvoidsetWorkFlowHandler WorkFlowHandlerworkFlowHandler this workFlowHandler workFlowHandler 其他方法省略 jBPM SSH整合步骤 4 通过页面实现流程流转人事部门员工登录后可以查询流程和部署流程 ID号流程名称流程版本操作 flow id flow name flow version 删除流程 其他页面省略 5 页面效果用户登录查询流程和部署流程查询请假单申请请假单部门负责人审批请假单邮件通知 jBPM SSH整合步骤 jBPM SSH整合步骤 申请人在请假的过程中 如果需要了解请假单的状态 可通过流程图定位文件gpd xml展示流程进度图流程定位文件和流程图文件保存jBPM数据库中 因此可以根据这两个文件获得流程进度图 jBPM SSH整合步骤 通过Servlet ProcessImageServlet 获得流程图 protectedvoidservice HttpServletRequestrequest HttpServletResponseresponse throwsServletException IOException StringpdId request getParameter pdId 获得流程定义IDJbpmContextjbpmContext JbpmConfiguration getInstance createJbpmContext try 通过流程ID 获得流程定义ProcessDefinitionpd jbpmContext getGraphSession loadProcessDefinition newLong pdId 获得流程图片保存在数据库的二进制信息byte bytes pd getFileDefinition getBytes processimage jpg OutputStreamoutput response getOutputStream 图片输出output write bytes output flush output close catch Exceptione e printStackTrace finally jbpmContext close jBPM SSH整合步骤 web xml中配置该Servlet ProcessImageServletcom hr g3 servlet ProcessImageServletProcessImageServlet processImageServlet jBPM SSH整合步骤 http localhost 8989 JBPMT TP6 01 processImageServlet pdId 2 获得ID为2的流程图 jBPM SSH整合步骤 通过gpd xml可以定位节点位置 高亮显示审批节点 请假单gpd xml如下 节点名称 宽 高及坐标 省略其他节点坐标 jBPM SSH整合步骤 高亮现象流程节点的Action publicActionForwardprocessImage ActionMappingmapping ActionFormform HttpServletRequestrequest HttpServletResponseresponse throwsIOException PrintWriterout response getWriter ActionForwardforward newActionForward StringtokenId request getParameter tokenId 获得令牌IDJbpmContextjbpmContext JbpmConfiguration getInstance createJbpmContext try Tokentoken jbpmContext getToken newLong tokenId 获得当前令牌StringnodeName token getNode getName 获得当前节点ProcessDefinitionpd token getProcessInstance getProcessDefinition 把数据库中取出gpd xml文件 转换成字节数组byte gpdBytes pd getFileDefinition getBytes gpd xml 获得根元素ElementrootElement DocumentHelper parseText newString gpdBytes utf 8 getRootElement 获得流程宽和高intprocessWitdth Integer parseInt rootElement attributeValue width intprocessHeight Integer parseInt rootElement attributeValue height StringxpathStr node name nodeName 通过xpath查询当前节点XPathxPath newDefaultXPat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论