JBPM培训.ppt

上传人:哈尼dd 文档编号:5019486 上传时间:2020-01-29 格式:PPT 页数:33 大小:492.50KB
返回 下载 相关 举报
JBPM培训.ppt_第1页
第1页 / 共33页
JBPM培训.ppt_第2页
第2页 / 共33页
JBPM培训.ppt_第3页
第3页 / 共33页
JBPM培训.ppt_第4页
第4页 / 共33页
JBPM培训.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《JBPM培训.ppt》由会员分享,可在线阅读,更多相关《JBPM培训.ppt(33页珍藏版)》请在三一文库上搜索。

1、让 中 国 移 动 BI 腾 飞,* 亚信科技(中国)有限公司 2010年02月,JBPM培训,让 中 国 移 动 BI 腾 飞,相关内容,什么是工作流? 简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。我们可以将整个业务过程看作是一条河,其中流过的就是工作流。 工作流要解决的问题 为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务,让 中 国 移 动 BI 腾 飞,工作流好处,业务角度 业务流程标准化 实现应用逻辑和过程逻辑分离 改进和优化业务流程,提高业务工作效率; 实现更好的业务过程控制,提高服务质量; 提高业务流程的灵活性; 业务纽

2、带,协作共享。 技术角度 降低开发风险; 统一集中实现; 快速应用开发。,让 中 国 移 动 BI 腾 飞,工作流举例,银行取款过程的工作流描述 1、客户填写取款单 2、银行出纳接收取款单和客户存折 3、检查客户信息: 1)余额不足,要求重写取款单,返回步骤1 2)余额足够,继续进行 4、客户输入密码: 1)密码正确,继续进行 2)密码错误,重新输入;3次错误,退出执行 5、出纳取出相应现金,并在存折上记录 6、将现金和存折交给客户,让 中 国 移 动 BI 腾 飞,图例,让 中 国 移 动 BI 腾 飞,Jbpm简介,2003年月,建立项目 2004年加入JBoss jPDL流程描述语言 支

3、持BPEL语言 使用Hibernate做为流程数据持久化,支持任何一种数据库 可以部署在任何J2EE的应用里,让 中 国 移 动 BI 腾 飞,jBpm工具箱(1),让 中 国 移 动 BI 腾 飞,jBpm图形化流程设计器: 图形设计器是一个Eclipse插件;它同时支持业务分析员和技术开发人员,这样就可以在业务流程建模和实际执行之间平滑转换 jBpm流程引擎: 是一个Java库;处理流程定义和运行时的流程实例执行。可以用在任何java环境(web 应用程序,Swing应用程序,EJB等等)。 jBpm调度程序: 监视和运行已经计划到时执行流程的定时器的组件。,jBpm工具箱(2),jBpm

4、数据库兼容包: 包括所有支持数据库的相关信息,JDBC驱动程序和数据库初始化脚本。 jBpm BPEL扩展: 独立的扩展包用来支持BPEL(Business Process Execution Language 商业流程执行语言),让 中 国 移 动 BI 腾 飞,Jbpm开发流程,1选定数据库,对数据库进行初始化;jBPM平台本身需要数据库的支持, 所以在使用jBPM之前要先初始化相应的数据库,包括创建表和插入初始 化数据等。 2使用JBPM定义流程,生成ProcessDefinition.xml;并加入自定义的处理代码。 3利用JUnit Framework写单元测试。 4部署jBPM。,

5、让 中 国 移 动 BI 腾 飞,Jbpm4.1 数据库表(1),Jbpm4.1 数据库表(2),请假流程实例,请假流程jpdl文件,Jbpm4.1 JPDL(1),process流程处理 顶级元素(element)是流程处理定义。 控制流程Activities活动 start启动 说明一个流程的实例从哪里开始。 在一个流程里必须有一个开始节点。开始节点必须有一个向外的流向,这个流向会在流程启动的时候执行。 state状态节点 一个等待状态节点。流程处理的流向会在外部触发器调用提供的API之前一直等待。 decision决定节点 在多个选择中选择一条路径。也可以当做是一个决定。 一个决定活动拥

6、有很多个向外的转移。当一个流向到达一个决定活动时,会自动执行并决定交给哪个向外的转移。 ,Jbpm4.1 JPDL(2),concurrency并发 使用fork和join活动,可以并行处理任务。 end结束 结束流向 Task任务 任务分配者 一个简单的任务会被分配给一个指定的用户 任务候选人 任务可能被分配给一组用户。 其中的一个用户应该接受这个任务并完成它。 任务分配处理器 一个AssignmentHandler可以通过编程方式来计算 一个任务的分配人和候选人。 任务泳道 一个流程中的多任务可以分配给一个单独的泳道。流程实例将记得换选人和用户,在泳道中执行的第一个任务。 任务序列在同一个

7、泳道中将被分配给这些用户和候选人 任务变量,Jbpm4.1 JPDL(3),任务变量是任务表单的一个很重要的部分。任务表单显示来自任务和流程 实例的数据。然后从用户一侧录入的数据会转换成设置的任务变量。 在任务中支持e-mail 可以为分配人提供一个提醒, 当一个任务添加到他们的列表时,以及在 特定的时间间隔进行提醒。 sub-process子流程 创建一个子流程实例然后等待直到它完成。当子流程实例完成,子流程 中的流向就会继续。 原子活动 java任务 流程处理的流向会执行 这个活动配置的方法。 Script脚本 Hql查询 使用hql活动,我们可以在database中执行HQL query

8、,并将返回的结 果报仇呢到流程处理的变量中。 Sql查询 sql活动和hql活动十分相似,sql查询使用sql语句直接查询,Jbpm4.1 JPDL(4),Event事件 事件指定流程中的特定点,那里注册了一系列的时间监听器。当一个流程通过这一点时,事件监听器就会被提醒。,Jbpm4.1 服务(1),ProcessEngine流程引擎 在jBPM内部通过各种服务相互作用。服务接口可以从ProcessEngine中获得, 它是从Configuration构建的。流程引擎是线程安全的,它可以保存在静态变量中,甚至JNDI中或者其他重要位置。在应用中,所有线程和请求都可以使用同一个流程引擎对象。 P

9、rocessEngine processEngine = Configuration.getProcessEngine(); repositoryService = processEngine.get(RepositoryService.class); executionService = processEngine.getExecutionService(); historyService = processEngine.getHistoryService(); managementService = processEngine.getManagementService(); taskSer

10、vice = processEngine.getTaskService(); identityService = processEngine.getIdentityService();,Jbpm4.1 服务(2),RepositoryService包含了用来管理发布资源的方法 部署流程 repositoryService.createDeployment() .addResourceFromClasspath(“org/jbpm/examples/eventlistener/process.jpdl.xml“) .deploy() 卸载已发布的流程 repositoryService.dele

11、teDeploymentCascade(deploymentId); executionService 流程实例服务类 启动一个新的流程实例 ProcessInstance processInstance = executionService.startProcessInstanceByKey(“EventListener“);,Jbpm4.1 服务(3),执行等待的流向 当使用一个state活动时,执行(或流程实例)会在到达state的时候进行等待,直到一个signal(也叫外部触发器)出现。 signalExecution方法可以被用作这种情况。执行通过一个执行id(字符串)来引用。 ex

12、ecutionService.signalExecutionById(executionId) ; 流程查询 executionService.createProcessInstanceQuery() .processInstanceId(processInstanceId).list(); executionService. findProcessInstanceById(processInstanceId);,Jbpm4.1 服务(4),taskService任务服务 TaskService的主要目的是提供对任务列表的访问途径 获得任务列表 根据执行人查询 List taskList =

13、taskService.findPersonalTasks(“johndoe”) ; 使用查询条件 taskService.createTaskQuery() .orderDesc(TaskQuery.PROPERTY_CREATEDATE) .assignee(userId).list(); 完成任务 taskSpleteTask(taskId); 任务添加注释 taskService.addTaskComment(taskId, “hi“); 任务变量 Map variables=taskService.getVariables(taskId, variableNames); taskSe

14、rvice.setVariables(taskId, variables);,Jbpm4.1 服务(5),HistoryService历史服务 在流程实例执行的过程中,会不断触发事件。从那些事件中,运行和完成流程的历史信息会被收集到历史表中。 HistoryService提供了对那些信息的访问功能。 List historyProcessInstances = historyService .createHistoryProcessInstanceQuery() .processDefinitionId(“ICL-1“) .orderAsc(HistoryProcessInstanceQuer

15、y.PROPERTY_STARTTIME) .list(); ManagementService 管理服务 管理服务通常用来管理job 。 Job job = managementService.createJobQuery() .processInstanceId(processInstanceId) .uniqueResult(); managementService.executeJob(job.getId();,Jbpm4.1与项目集成(1),Jbpm4.1与spring 集成 通过Spring暴露服务 现在,就可以使用Spring来获取或注入这些Jbpm4所提供的服务了。,Jbpm4

16、.1与项目集成(2),集成Spring的事务实现,Jbpm4.1与项目集成(3),Jbpm4.1与项目集成(4),Jbpm4.1与hibernate 集成,使用jbpm4.1开发遇到的问题(1),任务提醒功能 jbpm4.1虽然支持任务reminder功能,但duedate和repeat不能设置为变量,只能在编写jpdl时写固定值。而且reminder只能通过jbpm与JMail的集成来发送邮件,没有提供接口可以直接和uniTouch集成方式。 ,使用jbpm4.1开发遇到的问题(2),目前解决方法 在业务层进行任务提醒的实现。同时通过webservice调用uniTouch服务。 Jbpm4

17、.1只支持应用中存在一个事务的情况 如果一个应用中存在多个事务jbpm4.1报找不到事务错误。原因是jbpm4.1通过bean类型来获取事务bean.如果存在多个就返回null。,使用jbpm4.1开发遇到的问题(3),目前解决方法 修改jbpm4.1代码通过beanid得到具体的事务bean。,对目前Jbpm4.1使用的想法,把Jbpm4.1从task组件中提出来,作为一个和业务没关系的单独层,以提供给其他需要使用jbpm4.1的业务使用。 对jbpm4.1进行相应改造,使jbpm支持reminder和信息推送的集成,减少业务开发的工作量。 Jbpm4.1中调度线程Timer怎么和BIPlatform进行集成,使Jbpm4.1中的调度线程可以在BIPlatform中监控到,并使用BIPlatform提供的调度方式来实现调度。,JBPM4.1相关资源,http:/ http:/www.jboss.org/jbpm Jbpm4.1中文学习手册,让 中 国 移 动 BI 腾 飞,谢 谢!,亚信致力于为客户提供 世界一流的 软件方案和服务 帮助他们 迅速响应市场变化,降低运营成本 提升盈利能力,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1