`
独二无一1102
  • 浏览: 17417 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

jbpm中的service

 
阅读更多
ProcessEngine processEngine = Configuration.getProcessEngine();
1、RepositoryService repositoryService = processEngine.getRepositoryService();
2、ExecutionService executionService = processEngine.getExecutionService();
3、TaskService taskService = processEngine.getTaskService();
4、HistoryService historyService = processEngine.getHistoryService();
5、ManagementService managementService = processEngine.getManagementService();
---------------------------------------------------------------
RepositoryService repositoryService = processEngine.getRepositoryService();
包含了用来管理发布资源的所有方法。
1、发布:
String deploymentid = repositoryService.createDeployment()  
.addResourceFromClasspath("org/jbpm/examples/services/Order.jpdl.xml")  
.deploy();
2、删除
repositoryService.deleteDeployment(deploymentId);
---------------------------------------------------------
ExecutionService executionService = processEngine.getExecutionService();
1、启动实例
ProcessInstance processInstance =  
executionService.startProcessInstanceById("ICL-1");
2、执行等待流程:
<state name="wait">
<on event="start">   
<event-listener class="org.jbpm.examples.StartExternalWork" />
  </on>
...
</state>
在事件监听器StartExternalWork中,你可以执行那些需要额外完成的部分。 在这个时间
监听器里,你也可以通过execution.getId()获得确切的流程id。 那个流程id,在额外的
工作完成后, 你会需要它来提供给signal操作的:
executionService.signalExecutionById(executionId);
也可换下面的方式:
workProcessInstance processInstance =
executionService.startProcessInstanceById(processDefinitionId);
// or ProcessInstance processInstance
=executionService.signalProcessInstanceById(executionId);
Execution execution = processInstance.findActiveExecutionIn("externalwork");
String executionId = execution.getId();
---------------------------------------------------------
TaskService taskService = processEngine.getTaskService();
TaskService的主要目的是提供对任务列表的访问途径。
1、用户任务集合
List<Task> taskList = taskService.findPersonalTasks("johndoe");
一般来说,任务会对应一个表单,然后显示在一些用户接口中。
表单需要可以读写与任务相关的数据。
// read task
variablesSet<String> variableNames = taskService.getVariableNames(taskId);
variables = taskService.getVariables(taskId, variableNames);
// write task
variablesvariables = new HashMap<String, Object>();
variables.put("category", "small");
variables.put("lires", 923874893);t
askService.setVariables(taskId, variables);
taskSerice也用来完成任务。
taskService.completeTask(taskId);
taskService.completeTask(taskId, variables);
taskService.completeTask(taskId, outcome);
这些API允许提供一个变量map,它在任务完成之前作为流程变量添加到流程里。 它也可
能提供一个“外出outcome”,这会用来决定哪个外出转移会被选中。 逻辑如下所示:
如果一个任务拥有一个没用名称的外向转移:
taskService.getOutcomes() 返回包含一个null值集合,。
taskService.completeTask(taskId) 会使用这个外向转移。
taskService.completeTask(taskId, null) 会使用这个外向转移。
taskService.completeTask(taskId, "anyvalue") 会抛出一个异常。

如果一个任务拥有一个有名字的外向转移:
gtaskService.getOutcomes() 返回包含这个转移名称的集合。
taskService.completeTask(taskId) 会使用这个单独的外向转移。
taskService.completeTask(taskId, null) 会抛出一个异常(因为这里没有无名称的转
移)。
taskService.completeTask(taskId, "anyvalue") 会抛出一个异常。
taskService.completeTask(taskId, "myName") 会根据给定的名称使用转移。

如果一个任务拥有多个外向转移,其中一个转移没有名称,其他转移都有名称:
taskService.getOutcomes() 返回包含一个null值和其他转移名称的集合。
taskService.completeTask(taskId) 会使用没有名字的转移。
taskService.completeTask(taskId, null) 会使用没有名字的转移。
taskService.completeTask(taskId, "anyvalue") 会抛出异常。
taskService.completeTask(taskId, "myName") 会使用名字为'myName'的转移。

如果一个任务拥有多个外向转移,每个转移都拥有唯一的名字:
taskService.getOutcomes() 返回包含所有转移名称的集合。
taskService.completeTask(taskId) 会抛出异常,因为这里没有无名称的转移。
taskService.completeTask(taskId, null) 会抛出异常,因为这里没有无名称的转移。
taskService.completeTask(taskId, "anyvalue") 会抛出异常。
taskService.completeTask(taskId, "myName") 会使用名字为'myName'的转移
taskService.completeTask(taskId, outcome, variables);
-------------------------------------------------------------------------
HistoryService historyService = processEngine.getHistoryService();
在流程实例执行的过程中,会不断触发事件。 从那些事件中,运行和完成流程的历史信
息会被收集到历史表中。 HistoryService提供了 对那些信息的访问功能。
如果想查找某一特定流程定义的所有流程实例, 可以像这样操作:
List<HistoryProcessInstance> historyProcessInstances = historyService
.createHistoryProcessInstanceQuery()
.processDefinitionId("ICL-1")
.orderAsc(HistoryProcessInstanceQuery.PROPERTY_STARTTIME)
.list();
HistoryProcessInstanceQuery的参数有:
PROPERTY_DURATION   按时间排序
PROPERTY_ENDTIME   按结束时间排序
PROPERTY_ID  按ID
PROPERTY_KEY  按关键字
PROPERTY_STARTTIME  按开始时间
PROPERTY_STATE 按状态
单独的活动流程也可以作为HistoryActivityInstance 保存到历史信息中。
List<HistoryActivityInstance> histActInsts = historyService  
.createHistoryActivityInstanceQuery()  
.processDefinitionId("ICL-1")  
.activityName("a")  
.list();
也可以使用简易方法avgDurationPerActivity和 choiceDistribution。 可以通过javadocs获得这些方法的更多信息。
有时,我们需要获得指定流程实例已经过的节点的完整列表。 下面的查询语句可以用来
获得所有已经执行的节点列表:
List<HistoryActivityInstance> histActInsts = historyService  
.createHistoryActivityInstanceQuery()  
.processInstanceId("ICL.12345")  
.list();
上面的查询与通过execution id查询有一些不同。有时execution id和流程实例id是不同
的, 当一个节点中使用了定时器,这就会导致当execution id中就会使用额外的后缀,
我们通过execution id查询时, 这个节点不会出现在结果列表中。
-----------------------------------------------------------------
ManagementService managementService = processEngine.getManagementService();
从jBPM 4.0开始,一个新的API被介绍使用查询系统, 可以覆盖大多数你可以想到的查询
List<ProcessInstance> results =
executionService.createProcessInstanceQuery()
.processDefinitionId("my_process_definition")
.notSuspended()
.page(0, 50)                        
.list();
这个例子返回指定流程定义的所有流程实例, 流程定义不是暂停的。
结果支持分页,第
一页的前50条数据 会被我们获得。
查询任务也可以使用相同的方式完成:
List<Task> myTasks = taskService.createTaskQuery()
   .processInstanceId(piId)
   .assignee("John")  
.page(100, 120)  
.orderDesc(TaskQuery.PROPERTY_DUEDATE) 
  .list();
这个查询会获得指定流程实例,分配给John的所有任务, 也使用分页,对duedate进行逆
序查询。
管理服务通常用来管理job。可以通过javadocs获得这些方法的更多信息。 这个功能也是
通过控制台暴露出来
分享到:
评论

相关推荐

    jbpm简介\jbpm简介

    6. **支持JAAS安全认证机制**:通过支持Java Authentication and Authorization Service (JAAS),jBPM能够保障商业流程的安全性。 7. **基于订阅的技术支持**:用户可以根据需要选择技术支持服务,从而获得来自源码...

    jbpm学习笔记jbpm学习笔记

    在本篇jbpm学习笔记中,我们将深入探讨如何安装jbpm插件,配置运行环境,发布流程定义以及查看流程定义。 首先,下载jbpm的最新版本可以从官方指定的源获取,例如在SourceForge上...

    jbpm5完整的例子

    2. **用户任务**:在jbpm5中,用户任务是工作流中的重要组成部分,它代表了流程中需要人类参与的活动。你将学习如何定义用户任务,如何分配任务给特定用户或用户组,以及如何通过API或者用户界面完成这些任务。 3. ...

    jbpm5.4 api javadocs

    5. **工作流服务**:jbpm通过ServiceTask来调用外部服务,如数据库查询、Web服务等。开发者可以定义自定义服务任务,并通过API进行配置和调用。 6. **规则引擎集成**:jbpm集成了Drools规则引擎,可以方便地在流程...

    jBPM中文用户指南

    **jBPM中文用户指南** jBPM,全称Java Business Process Management,是一款开源的工作流管理系统,用于设计、执行和管理业务流程。本指南将深入介绍如何使用jBPM进行流程建模、部署和监控,旨在帮助中国用户更好地...

    ssh_jbpm4.4

    在SSH_JBPM4.4中,Spring主要负责管理对象的生命周期,包括SSH中的Action、Service、DAO等,以及JBPM的工作流引擎和服务。 3. **Hibernate框架**:Hibernate是一个强大的ORM(对象关系映射)工具,它简化了数据库...

    JBPM5基于tomcat web的应用

    4. **部署jbpm-service.war和jbpm-console.war**:除了主应用外,JBPM5还包含两个重要组件:jbpm-service.war提供服务接口,jbpm-console.war是Web管理控制台。确保这两个war文件也部署到Tomcat。 5. **启动和测试*...

    jbpm相关的jar

    同时,jbpm提供了事件服务(Event Service)来处理流程中的事件,比如监听特定的流程事件并触发相应的操作。 jbpm还包括了一个规则引擎(Drools),这是Red Hat的一个规则管理系统,能够处理复杂的业务规则。在流程...

    jbpm jar java

    - **工作流服务**:jbpm可以通过服务组件接口(Service Task)与其他系统交互,如数据库、Web服务等。 - **事件驱动**:支持事件处理,如错误处理、信号触发等,增强了流程的灵活性。 - **规则与流程结合**:通过...

    jbpm4.1和jbpm5开发手册

    4. **服务组件**:jbPM5支持服务组件(Service Task),可以直接调用Web服务或Java服务作为流程的一部分。 5. **事件处理**:增强了事件处理机制,支持流程实例的监听和触发事件。 6. **更强大的API**:jbPM5提供了...

    jBPM4完整例子

    这个"jBPM4完整例子"是一个基于SSH(Struts2、Spring、Hibernate)框架集成jBPM4.4的请假流程应用,非常适合初学者了解如何在实际项目中运用jBPM4进行工作流开发。 首先,我们来详细了解一下SSH框架。SSH是Java Web...

    jbpm

    4. jbpm_chm.pdf:这个压缩包中的文件可能是jbpm的离线帮助文档,包含了详细的功能介绍和API参考。 总之,jbpm是一个强大的业务流程管理工具,通过合理地利用它,企业可以构建出高效、灵活的业务流程,提升业务运作...

    JBPM流程引擎资料

    它还介绍了jBPM的几个关键服务,包括ProcessEngine流程引擎、TaskService任务服务、HistoryService历史服务和ManagementService管理服务,并且提供了查询API的使用方法。 核心的jPDL(jBPM Process Definition ...

    Jbpm工作流引擎使用例子

    在这个"Jbpm工作流引擎使用例子"中,我们可以深入学习如何利用Jbpm进行流程的创建、流程实例的启动与管理,以及如何将其与Java、Hibernate等技术结合使用。以下是关于这些知识点的详细讲解: 1. **Jbpm工作流引擎**...

    jbpm3.2.3 要用jar包

    8. **jbpm-human-task-service.jar**:针对人类参与的任务管理,提供与任务相关的服务,如任务分配、任务通知等。 9. **jbpm-gwt-console-server.jar**/ **jbpm-gwt-console-client.jar**:这两者是jbpm的Web控制台...

    jbpm4请假实例代码

    4. **服务任务和服务调用**:在请假流程中,可能会有调用外部服务(如人力资源系统)来验证员工信息或审批结果的场景,这需要用到jbpm4的服务任务(Service Task)。 5. **监听器和事件处理**:jbpm4支持监听器机制...

    jbpm4.4 ssh 整合

    2. **配置Struts**:在Struts配置中,我们需要创建一个Action,该Action将负责调用Spring中的Service层来启动或管理流程实例。Action可以通过Spring的AOP特性获取到流程服务,并在业务逻辑中调用相应的方法。 3. **...

Global site tag (gtag.js) - Google Analytics