转自: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
分享到:
相关推荐
SSH+JBPM4.3的整合 JBPM4.3 转载别人的博客,里面包含2份整合框架的资料,2份关于JBPM的学习
JBPM4.3与Spring会签 实例,欢迎交流ningjinlin@gmail.com
JBPM4.3的初学者视频, 包含了JBPM4.3的插件, 共9个,分开来上传了
jbpm4.3与spring整合的一个小文档
jbpm4.3,jbpm4.3工作流程管理例子
JBPM4.3用户手册JBPM4.3用户手册JBPM4.3用户手册
jbpm jbpm4.3.jar DDDDDDDD
jbpm4.3集成到tomcat、eclipse过程
jbpm 4.3 与 spring 集成
JBPM4.3WEB应用,里面有一个关于请假流程的例子,基本上包含了JBPM4.3的一些常用的方法及服务类,也把它的新特性展现出来了。
jbpm4.3问题解决方法,我们根据您的错误给出针对性的解答!
超清晰的视频教程,有完整的例子,全面讲解了jbpm4.3,里面有代码,由于视频太大,给大家一个下载地址吧!!
JBPM4.3编程指南JBPM4.3编程指南JBPM4.3编程指南JBPM4.3编程指南JBPM4.3编程指南JBPM4.3编程指南JBPM4.3编程指南JBPM4.3编程指南
会签源文件 博文链接:https://yy666.iteye.com/blog/660701
jbpm4.3 英文帮助文档 不是中文的还是很全的
本示例主要实现了流程的基本管理,流程实例的管理,...使用本例子只需要拷贝jbpm4.3的lib的jar包到本实例lib里面即可运行,注意用tomcat6的话必须把juel.jar,juel-engine.jar、juel-impl.jar剪切到tomcat的lib目录下。
jBPM4.3用户指南 在这个用户指南里, 我们将介绍在持久执行模式下的jPDL流程语言。 持久执行模式是指流程定义、 流程执行以及流程历史都保存在关系数据库中, 这是jBPM实际通常使用的方式。 这个用户指南介绍了...
jbpm4.3表结构和表字段说明
jbpm4.3 中文文档 jbpm4.3 中文文档
jbpm4.3 请假流程实例示例jbpm4.3 请假流程实例示例jbpm4.3 请假流程实例示例jbpm4.3 请假流程实例示例jbpm4.3 请假流程实例示例