`
iuottp
  • 浏览: 171522 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

jbpm4.3轻松 实现会签完整版

阅读更多

转自: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

分享到:
评论
2 楼 iuottp 2010-11-08  
不好意思,我也是转载的,贴在这里只是为了自己查看方便些。
1 楼 showtime520 2010-10-03  
楼主,这段代码你运行过吗?没运行过怎么能叫轻松实现?还完整版,你这样写最害人啊

相关推荐

    jbpm4.3 会签的实现

    【jbpm4.3 会签的实现】 在企业级工作流管理系统中,会签(Concurrence Signature)是一种常见的审批流程模式,它允许多个审批人同时参与同一个任务的处理,只有当所有指定的审批人都完成他们的操作后,任务才会被...

    SSH+JBPM4.3的整合 JBPM4.3

    SSH+JBPM4.3的整合是企业级应用开发中的一种常见组合,SSH指的是Spring、Struts和Hibernate这三个开源框架的集成,而JBPM4.3则是一个强大的工作流管理系统,用于实现业务流程自动化。这篇内容将深入探讨这两个技术...

    JBPM4.3 Spring会签 实例

    在这个实例中,我们将探讨如何在JBPM4.3中实现基于Spring的会签功能。会签是一种常见的业务流程操作,需要多个参与者依次或同时对同一文档或任务进行审批,所有参与者的签名都得到确认后,流程才能继续进行。这通常...

    开源工具 jbpm4.3

    "content.jar"和"artifacts.jar"可能是jbpm4.3的核心库文件,它们包含实现工作流功能的类和资源。"site.xml"可能涉及到项目的元数据或站点配置,用于构建和发布项目。这些文件都表明jbpm4.3可以方便地融入到各种...

    jbpm4.3工作流程管理例子

    jbpm4.3是JBoss Business Process Management (BPM) Suite的一个版本,它是一个开源的企业级BPM平台,用于设计、执行和管理业务流程。在这个"jbpm4.3工作流程管理例子"中,我们将深入探讨jbpm4.3的核心特性和如何...

    JBPM4.3培训学习视频, 包含了JBPM4.3的eclipse插件

    【JBPM4.3培训学习视频】是一套针对初学者设计的教程,旨在帮助学习者掌握JBPM4.3这一企业级工作流管理系统的核心概念和技术。JBPM是Java Business Process Management的缩写,是一个开源的工作流和业务流程管理平台...

    jbpm4.3与spring整合

    ### jbpm4.3与Spring框架的整合指南 在企业级应用开发中,流程管理引擎JBPM(JBoss Business Process Management)与Spring框架的结合使用是常见的一种技术方案。JBPM是一个灵活、强大的业务流程管理工具,而Spring...

    jBPM4.3.rar_JBPM4.3

    **jbPM 4.3 知识点详解** ...综上所述,jbPM 4.3 是一个强大且灵活的业务流程管理工具,尽管文档是英文的,但其详尽的内容可以帮助开发者深入了解和充分利用其功能,以实现高效的企业业务流程自动化。

    jbpm4.3视频教程+代码

    【jbpm4.3视频教程+代码】是一个深入学习和实践Jbpm4.3的资源包,包含高质量的视频教程和相应的代码示例。Jbpm,全称Java Business Process Management,是一款开源的工作流管理系统,它允许开发者设计、部署和执行...

    jbpm jbpm4.3.jar

    jbpm jbpm4.3.jar DDDDDDDD

    jbpm jbpm4 jbpm4.3 工作流

    6. **服务调用**:jbpm4.3支持通过服务任务调用外部系统,如Web服务、EJB等,实现了流程与企业IT系统的无缝集成。 7. **监控与报表**:jbpm4.3提供了一套监控工具,可以跟踪流程实例的执行情况,生成流程统计报告,...

    jbpm4.3环境搭建

    【jbpm4.3环境搭建】涉及的知识点主要包括jbpm工作流引擎的版本管理、集成环境的构建、软件依赖配置以及数据库的连接设置。以下是详细的内容: 1. **jbpm4.3**:jbpm(Java Business Process Management)是一个...

    jbpm4.3、ssh环境搭建

    ### jBPM4.3与SSH环境搭建详解 #### 一、引言 jBPM (JBoss Business Process Management) 是一个开源的工作流管理系统,它提供了用于定义业务流程的工具和APIs。本文将详细介绍如何在开发环境中安装并配置jBPM4.3...

    JBPM4.3-例子(简单使用)

    这个例子展示了如何利用JBPM的API和服务来实现一个完整的业务流程。在这个流程中,员工发起请假申请,经理进行审批,最后由HR部门确认。流程可能包括多个步骤,如请假申请提交、审批、反馈和最终决定。每个步骤对应...

    jbpm4.3所需jar包

    在JBPM 4.3版本中,为了实现完整功能,需要一系列的jar包来支持其运行环境。这些jar包包含了核心引擎、持久化、工作流定义、任务服务、事件处理、事务管理等多个组件。 1. **核心引擎**:jbpm-runtime-engine.jar是...

    jbpm4.3问题解决

    jbpm4.3是Jboss Business Process Management (BPM)平台的一个版本,它是一个开源的工作流管理系统,用于设计、执行和管理业务流程。本篇主要针对jbpm4.3使用过程中遇到的问题及其解决方法进行详细阐述。 首先,...

    JBPM4.3使用说明.doc

    JBPM4.3 使用说明 JBPM4.3 是一个基于工作流程管理的系统,旨在帮助用户更好地管理和自动化业务流程。下面是 JBPM4.3 的使用说明和相关知识点。 安装和整合 JBPM4.3 的安装包结构目录包括 doc、Example、Install...

    jBPM4.3用户指南

    jBPM4.3的下载可以从官方网站获取,包括完整的发行包和源代码。下载后,开发者可以解压并开始设置环境。 **1.3. 源码** 对于希望进行深度定制或者开发的用户,jBPM提供源码,可以在Eclipse等IDE中导入项目,进行...

Global site tag (gtag.js) - Google Analytics