`
man1900
  • 浏览: 431964 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于JBPM4的会签的设计及实现

    博客分类:
  • JBPM
 
阅读更多

在进入本文之前,有必要跟大家说一下会签的概念。

 

会签就是流程中某个任务需要多个人进行审批,并且根据不同的人的审批意见,决定流程的走向。多个人的审批意见需要汇总起来,这个就叫决策,在会签中有许多决策方式。比如一票否决制,少数服从多数,N票认可制,20%否决制,60%赞同制等。基于这种决策方式,我们需要知道会签有哪一些人员参与,决策方式如何。因此我们设计了下面的表:

 

 

在会签过程中,有单步会签,多步会签。前者实现相对简单,不过非常常见,几乎所有的政府的OA系统中都存在这种方式,而另一种则相对少用,并且实现相对复杂,不过,其实现方式也可以基于第一种方式进行扩展,所以在本文中仅介绍单步会签。如下流程案例,我们可以看到,在多部门的领导会签审批中,就是这种单步会签,当任务走向该节点时,就需要为每个参与者动态创建任务,这个任务的参与者可以在pro_user_assign表中进行存储,当流程运行至该任务节点时,我们需要根据有多少人员来创建任务。然后再根据每个人员审批意见在该会签节点中进行汇总。

 

 

要实现会签,则就需要动态为流程提供创建任务的功能。Jbpm4的Service接口没有提供动态添加的newTask,因此需要扩展TaskServiceImpl,该类中提供了newTask的方法。如:

 

public void newTask(String parentTaskId,String assignIds){
		
		TaskServiceImpl taskServiceImpl=(TaskServiceImpl) taskService;
		
		Task parentTask=taskServiceImpl.getTask(parentTaskId);
		
		if(assignIds!=null){
			String []userIds=assignIds.split("[,]");
			for(int i=0;i<userIds.length;i++){
				Task task=taskServiceImpl.newTask(parentTaskId);
				task.setAssignee(userIds[i]);
				task.setName(parentTask.getName());
				task.setDescription(parentTask.getDescription());
				//保存
				taskServiceImpl.saveTask(task);
				
				//为该任务指派审批人
				//taskService.assignTask(task.getId(), assign.getUserId());
				//taskService.addTaskParticipatingUser(task.getId(),upIds.toString(),Participation.CANDIDATE);
				//taskService.addTaskParticipatingGroup(task.getId(), assign.getRoleId(), Participation.CANDIDATE);
			}
		}
		
	}
 

 

基于以上的设计理念,我们有可以比较容易完成这种单步会签,其他方式也可以类似。其最终的完整实现,在后面的文章加以介绍。

 

  • 大小: 52.9 KB
  • 大小: 33.2 KB
2
0
分享到:
评论
2 楼 zhutuncun0 2010-08-02  
刚入门,感觉这个例子很实用,能分享一下吗?
zhutuncun0@sina.com
1 楼 卡拉阿风 2010-03-04  
那么撤销(回退)呢?

相关推荐

    jbpm4.3 会签的实现

    【jbpm4.3 会签的实现】 在企业级工作流管理系统中,会签...在实际项目中,结合测试(如压缩包中的"test"目录中的测试用例)和持续学习(如"sofocus"可能包含的相关文档或讨论),将进一步加深对jbpm会签机制的理解。

    JBPM4.4会签实例

    通过学习"CountersignDemo"这个实例,你可以深入了解JBPM4.4的会签实现,包括如何设计流程、创建自定义活动、编写工具类以及如何在实际应用中部署和使用。这将有助于提升你对业务流程管理的理解,使你能更好地为企业...

    jBPM4.4 会签,用custom实现(带加签、减签功能)

    在本篇中,我们将深入探讨如何在jBPM4.4中实现自定义会签功能,同时包含加签和减签功能。 首先,我们需要了解什么是会签。会签是指在流程中涉及多个审批人的场景,每个审批人都需要对流程中的某个任务进行操作,...

    jBPM4.4 会签(带加签、减签功能)

    本文将深入探讨如何在jbPM中实现会签以及加签、减签功能,并提供相关实践指导。 1. **会签概念与实现** 会签是指在流程中设置一个环节,需要多个参与者依次或同时进行审批。jbPM通过定义工作流模型,利用task节点...

    jbpm4.4 会签 测试( fork & join)

    4. **启动流程实例**:通过jbpm的API或用户界面启动流程实例,流程将按照设计图执行。 5. **监控和管理**:使用jbpm的工作台或API监控流程状态,管理审批人的任务,如分配、撤销、催办等。 6. **结束条件**:确保...

    JBPM4.3 Spring会签 实例

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

    jbpm4案例源码

    在阅读《jBPM4工作流应用开发指南.pdf》这本书时,你可以学习到如何使用jbpm4的API进行流程设计、部署和执行,以及如何进行流程实例的查询和管理。书中可能还会涉及如何处理异常、分支和合并逻辑,以及如何进行流程...

    jbpm会签.zip

    jbpm(Java Business Process Management)是一个开源的工作流和业务流程管理框架,主要用于设计、执行和管理复杂的业务流程。会签,又称多人签名或并行审批,是jbpm中的一种常见功能,它允许流程中的多个参与者同时...

    jbpm工作流(会签,串签)

    jbpm工作流是一款开源的工作流程管理系统,主要用于设计、执行和管理业务流程。它结合了Java技术和BPMN(Business Process Model and Notation)标准,提供了一种强大的方式来定义和执行复杂的业务流程。在本教程中...

    jBPM4入门基础环境配置

    - **Eclipse IDE**:推荐使用Eclipse IDE,因为它有jBPM4的插件支持,可以方便地进行流程设计和调试。 ### 3. 下载与导入jBPM4 访问jBPM官方网站或GitHub仓库下载jBPM4的最新发行版。解压后,将`jbpm-installer`...

    huiqian.rar_jbpm4

    在“huiqian.rar_jbpm4”这个压缩包中,包含了一个名为“huiqian.java”的文件,这可能是针对jbpm4实现的一个特定功能或示例,特别是关于会签功能的实现。 会签是业务流程中的一个重要概念,特别是在多个人员参与...

    JBPM4工作流应用开始指南.rar

    包括jBPM4扩展研发先决条件、深入jPDL和jBPM Service API、升级jBPM3到jBPM4、流程虚拟机原理、jBPM4的设计思想、随需而配jBPM4、异步工作执行器、深入jBPM4电子邮件支持、系统日志、jBPM4与Spring框架集成、jBPM4与...

    jbpm4.4 简单请假流程

    综上,"jbpm4.4简单请假流程"项目展示了如何利用jbpm4.4的特性设计和实现一个典型的业务流程,涵盖了流程定义、任务处理、决策逻辑以及系统集成等方面,为企业级流程管理提供了实用范例。通过对这个项目的理解和实践...

    jbpm4.4流程图

    jbpm4.4是JBoss企业级业务流程管理(Business Process Management)套件的一个版本,它主要用于设计、执行和管理业务流程。在这个“jbpm4.4流程图”中,我们关注的是如何通过图形化的方式来理解和操作这些流程。 ...

    JBPM与Activity分析.doc

    JBPM与Activiti作为当前市场上主流的工作流引擎,因其开源特性及强大的功能受到了广泛的关注与应用。本文将对JBPM和Activiti进行深入的分析,并与国内的工作流引擎FixFlow进行对比。 #### 二、JBPM与Activiti对比...

    工作流开发会签两套方案(Java源代码实现)

    本主题聚焦于"工作流开发会签两套方案(Java源代码实现)",我们将深入探讨两种Java实现会签功能的方法,并结合JBPM(Java Business Process Management)框架,为你揭示如何高效地构建这样的系统。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics