转自:http://hi.baidu.com/suwey/blog/item/0a5bcf1fa2639d6ff624e4f0.html
类似文章:http://phoenix-clt.iteye.com/blog/428242
jbpm4.3中会签的实现主要思路也是从网上找的。新接触jbpm简单的实现下,如果有什么疑问或错误,请指正。
JPDL代码
<?xml version="1.0" encoding="UTF-8"?>
<process name="huigao" xmlns="http://jbpm.org/4.3/jpdl
" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
" xsi:schemaLocation="http://jbpm.org/4.3/jpdl
http://jbpm.org/4.3/jpdl
">
<start g="172,34,48,48" name="开始">
<transition g="-53,-17" name="审稿" to="审稿"/>
</start>
<task assignee="shengao" form="com/zhangrun/forms/first.ftl" g="150,125,92,52" name="审稿">
<transition g="-83,-17" name="会稿或办文" to="会稿或办文"/>
</task>
<decision g="178,227,48,48" name="会稿或办文">
<transition g="-65,-17" name="会稿" to="会稿">
<condition expr=" # { select=="huigao" } "/>
</transition>
<transition g="-53,-17" name="办文" to="办文">
<condition expr=" # { select==" banwen " } "/>
</transition>
</decision>
<custom class="com.zhangrun.custom.Custom" g="16,230,92,52" name="会稿">
<transition g="60,153:-53,-17" name="审稿" to="审稿"/>
</custom>
<task assignee="banwen" g="298,225,92,52" name="办文">
<transition g="348,373:-47,-17" name="结束" to="结束"/>
</task>
<end g="180,354,48,48" name="结束"/>
</process>
JAVA代码
public class Custom implements ExternalActivityBehaviour {
private static final long serialVersionUID = 1L;
public void execute(ActivityExecution activityExecution) throws Exception {
ExecutionImpl executionimpl = (ExecutionImpl) activityExecution;
DbSession dbsession = EnvironmentImpl.getFromCurrent(DbSession.class);
TaskImpl taskimpl = dbsession.createTask();
taskimpl.setName("customTem");
taskimpl.setExecution(executionimpl);
taskimpl.setProcessInstance(executionimpl.getProcessInstance());
taskimpl.setSignalling(false);
taskimpl.setExecutionDbid(executionimpl.getDbid());
dbsession.save(taskimpl);
HistoryEvent.fire(new TaskActivityStart(taskimpl), executionimpl);
// 子任务
TaskImpl subtaskimpl1 = taskimpl.createSubTask();
subtaskimpl1.setName("huigao1");
subtaskimpl1.setAssignee("huigao1");
subtaskimpl1.setSignalling(false);
subtaskimpl1.setExecutionDbid(executionimpl.getDbid());
dbsession.save(subtaskimpl1);
HistoryEvent.fire(new TaskActivityStart(subtaskimpl1), executionimpl);
TaskImpl subtaskimpl2 = taskimpl.createSubTask();
subtaskimpl2.setName("huigao2");
subtaskimpl2.setAssignee("huigao2");
subtaskimpl2.setExecutionDbid(executionimpl.getDbid());
subtaskimpl2.setSignalling(false);
dbsession.save(subtaskimpl2);
HistoryEvent.fire(new TaskActivityStart(subtaskimpl2), executionimpl);
// 流程等待
executionimpl.waitForSignal();
}
public void signal(ActivityExecution activityExecution, String signalName,
Map<String, ?> parms) throws Exception {
ExecutionImpl executionImpl = (ExecutionImpl) activityExecution;
ProcessInstance pi = (ProcessInstance) executionImpl
.getProcessInstance();
TaskService taskService = Configuration.getProcessEngine()
.getTaskService();
Activity activity = executionImpl.getActivity();
List<Task> tasks = taskService.createTaskQuery().processInstanceId(
pi.getId()).list();
List<Task> subTask_list = taskService.getSubTasks(tasks.get(0).getId());
Iterator<Task> iter = subTask_list.iterator();
while (iter.hasNext()) {
Task subtask = iter.next();
if (parms.get("username").equals(subtask.getAssignee())) {
taskService.completeTask(subtask.getId());
}
}
if (subTask_list == null || subTask_list.size() == 1) {
Transition transition = null;
if ((signalName == null)
|| ((Task.STATE_COMPLETED.equals(signalName))
&& (activity.getOutgoingTransitions() != null) && (activity
.getOutgoingTransitions().size() == 1))) {
transition = activity.getOutgoingTransitions().get(0);
} else {
transition = activity.findOutgoingTransition(signalName);
}
taskService.completeTask(tasks.get(0).getId());
executionImpl.take(transition);
} else {
executionImpl.waitForSignal();
}
}
}
转载自:http://www.blogjava.net/pengo/archive/2009/12/09/305226.html
分享到:
相关推荐
【jbpm4.3 会签的实现】 在企业级工作流管理系统中,会签(Concurrence Signature)是一种常见的审批流程模式,它允许多个审批人同时参与同一个任务的处理,只有当所有指定的审批人都完成他们的操作后,任务才会被...
SSH+JBPM4.3的整合是企业级应用开发中的一种常见组合,SSH指的是Spring、Struts和Hibernate这三个开源框架的集成,而JBPM4.3则是一个强大的工作流管理系统,用于实现业务流程自动化。这篇内容将深入探讨这两个技术...
在这个实例中,我们将探讨如何在JBPM4.3中实现基于Spring的会签功能。会签是一种常见的业务流程操作,需要多个参与者依次或同时对同一文档或任务进行审批,所有参与者的签名都得到确认后,流程才能继续进行。这通常...
"content.jar"和"artifacts.jar"可能是jbpm4.3的核心库文件,它们包含实现工作流功能的类和资源。"site.xml"可能涉及到项目的元数据或站点配置,用于构建和发布项目。这些文件都表明jbpm4.3可以方便地融入到各种...
jbpm4.3是JBoss Business Process Management (BPM) Suite的一个版本,它是一个开源的企业级BPM平台,用于设计、执行和管理业务流程。在这个"jbpm4.3工作流程管理例子"中,我们将深入探讨jbpm4.3的核心特性和如何...
【JBPM4.3培训学习视频】是一套针对初学者设计的教程,旨在帮助学习者掌握JBPM4.3这一企业级工作流管理系统的核心概念和技术。JBPM是Java Business Process Management的缩写,是一个开源的工作流和业务流程管理平台...
### jbpm4.3与Spring框架的整合指南 在企业级应用开发中,流程管理引擎JBPM(JBoss Business Process Management)与Spring框架的结合使用是常见的一种技术方案。JBPM是一个灵活、强大的业务流程管理工具,而Spring...
**jbPM 4.3 知识点详解** ...综上所述,jbPM 4.3 是一个强大且灵活的业务流程管理工具,尽管文档是英文的,但其详尽的内容可以帮助开发者深入了解和充分利用其功能,以实现高效的企业业务流程自动化。
【jbpm4.3视频教程+代码】是一个深入学习和实践Jbpm4.3的资源包,包含高质量的视频教程和相应的代码示例。Jbpm,全称Java Business Process Management,是一款开源的工作流管理系统,它允许开发者设计、部署和执行...
jbpm jbpm4.3.jar DDDDDDDD
6. **服务调用**:jbpm4.3支持通过服务任务调用外部系统,如Web服务、EJB等,实现了流程与企业IT系统的无缝集成。 7. **监控与报表**:jbpm4.3提供了一套监控工具,可以跟踪流程实例的执行情况,生成流程统计报告,...
【jbpm4.3环境搭建】涉及的知识点主要包括jbpm工作流引擎的版本管理、集成环境的构建、软件依赖配置以及数据库的连接设置。以下是详细的内容: 1. **jbpm4.3**:jbpm(Java Business Process Management)是一个...
### jBPM4.3与SSH环境搭建详解 #### 一、引言 jBPM (JBoss Business Process Management) 是一个开源的工作流管理系统,它提供了用于定义业务流程的工具和APIs。本文将详细介绍如何在开发环境中安装并配置jBPM4.3...
这个例子展示了如何利用JBPM的API和服务来实现一个完整的业务流程。在这个流程中,员工发起请假申请,经理进行审批,最后由HR部门确认。流程可能包括多个步骤,如请假申请提交、审批、反馈和最终决定。每个步骤对应...
在JBPM 4.3版本中,为了实现完整功能,需要一系列的jar包来支持其运行环境。这些jar包包含了核心引擎、持久化、工作流定义、任务服务、事件处理、事务管理等多个组件。 1. **核心引擎**:jbpm-runtime-engine.jar是...
jbpm4.3是Jboss Business Process Management (BPM)平台的一个版本,它是一个开源的工作流管理系统,用于设计、执行和管理业务流程。本篇主要针对jbpm4.3使用过程中遇到的问题及其解决方法进行详细阐述。 首先,...
JBPM4.3 使用说明 JBPM4.3 是一个基于工作流程管理的系统,旨在帮助用户更好地管理和自动化业务流程。下面是 JBPM4.3 的使用说明和相关知识点。 安装和整合 JBPM4.3 的安装包结构目录包括 doc、Example、Install...
jBPM4.3的下载可以从官方网站获取,包括完整的发行包和源代码。下载后,开发者可以解压并开始设置环境。 **1.3. 源码** 对于希望进行深度定制或者开发的用户,jBPM提供源码,可以在Eclipse等IDE中导入项目,进行...