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

【转】activiti用户任务

 
阅读更多

原文连接:http://jhaij.iteye.com/blog/1882582

用户任务

描述

user task 是一个需要由实际用户操作的节点. 当流程执行到这么一个用户任务节点时,会通过user(用户) 或者组(group) 在task中定义的 assigned 角色来创建一个新的用户任务.

 

图形

用户任务就是左上角有人员图标的图形

 

XML 表示

id 必填 ,  name 可选

<userTaskid="theTask"name="Important task"/>                   
                                  

 

documentation 是描述信息,可选

<userTaskid="theTask"name="Schedule meeting">
  <documentation>
          Schedule an engineering meeting for next week with the new hire.
  </documentation>

通过task获取方式如下:

task.getDescription()

 

Due 到期日

到期日 必须是java.util.Date 类型, 或者 格式化后的String类型,或者null ,  生成方式可以是表单输入,或者之前的service 任务生成.

<userTask id="theTask" name="Important task" activiti:dueDate="${dateVariable}"/>

也可以通过 TaskService 或者TaskListeners , DelegateTask.改变值

User assignment 审批人

可以分配给一个用户 ,通过 humanPerformer 节点 的 sourceAssignmentExpression 节点 指定人员 . 现在 仅支持 formalExpressions 属性.

<process ... >
  
  ...
  
  <userTask id='theTask' name='important task' >
    <humanPerformer>
      <resourceAssignmentExpression>
        <formalExpression>kermit</formalExpression>
      </resourceAssignmentExpression>
    </humanPerformer>
  </userTask>

 

解释为受让人, 或者审批人,  只有一个审批人的任务. 由其在 代办任务中查看, 其他人是看不到的.

直接分配assignee 的用户任务,可以通过 taskService 检索到其 需要代办的任务列表:

List<Task> tasks = taskService.createTaskQuery().taskAssignee("kermit").list();

 

任务也可以开放给 候选人 列表.那么, potentialOwner 节点就用上了, 用法跟 humanPerformer 节点类似. 要注意的是:候选人必须制定候选人是用户,还是组, 否则无法解析定义的到底是什么东西

<process ... >
  
  ...
  
  <userTask id='theTask' name='important task' >
    <potentialOwner>
      <resourceAssignmentExpression>
        <formalExpression>user(kermit), group(management)</formalExpression>
      </resourceAssignmentExpression>
    </potentialOwner>
  </userTask>

 

列出候选人 所属的task 列表 ,代码如下:

 List<Task> tasks = taskService.createTaskQuery().taskCandidateUser("kermit");

如果没有制定 user 或者group 默认以组方式查询 类似: group(accountancy)

<formalExpression>accountancy</formalExpression>

 

Activiti extensions for task assignment 审批人简单扩展

下面是通过activiti 提供的简单的描述方式,来定义审批人.比上面那种xml格式简单多了.

 

  • assignee attribute: 指定实际用户.

    <userTask id="theTask" name="my task" activiti:assignee="kermit" />

    跟 humanPerformer 定义效果一样

  • candidateUsers attribute: 指定候选人

    <userTask id="theTask" name="my task" activiti:candidateUsers="kermit, gonzo" />

    跟 potentialOwner定义效果一样. 不用再像 user(kermit) 这样输入, 因为他本身就是user节点. 直接输入用户代码就行了

  • candidateGroups attribute:指定候选人的组名

    <userTask id="theTask" name="my task" activiti:candidateGroups="management, accountancy" />

    同上, 直接写group name就行了

  • candidateUsers 和 candidateGroups can 在同一个task节点中可以同时存在

 

验证用户权限,在集成到业务系统中时需要用上监听:

<userTask id="task1" name="My task" >
  <extensionElements>
    <activiti:taskListener event="create" class="org.activiti.MyAssignmentHandler" />
  </extensionElements>
</userTask>

DelegateTask 也是通过 TaskListener 实现,来指定受让人,或者受让组(候选人/候选组)

public class MyAssignmentHandler implements TaskListener {

  public void notify(DelegateTask delegateTask) {
    // Execute custom identity lookups here
    
    // and then for example call following methods:
    delegateTask.setAssignee("kermit");
    delegateTask.addCandidateUser("fozzie");
    delegateTask.addCandidateGroup("management");
    ...
  }
  
}

 

如果你使用了spring,可以使用service 表达式实现, 如下,就定义了 通过 ldapServie 的 findManagerForEmployee 方法或者审批人.

<userTask id="task" name="My Task" activiti:assignee="${ldapService.findManagerForEmployee(emp)}"/>

获取受让人(候选人) 如出一辙:

<userTask id="task" name="My Task" activiti:candidateUsers="${ldapService.findAllSales()}"/>

注意: 方法返回值 必须是 String 或者 List<String> 类型:

            
public class FakeLdapService {
  
  public String findManagerForEmployee(String employee) {
    return "Kermit The Frog";
  }
  
  public List<String> findAllSales() {
    return Arrays.asList("kermit", "gonzo", "fozzie");
  }

}
分享到:
评论

相关推荐

    Activiti 6.0 用户手册(原版 英文)

    Activiti 6.0 用户手册(Activiti User Guide v 6.0.0)

    Activiti 学习笔记12:分配个人任务

    Activiti 学习笔记12:个人任务

    Activiti中文手册

    Activiti 中文手册知识点总结 Activiti 是一个基于 BPMN 2.0 的工作流引擎,提供了强大的流程管理和自动化功能。本文档将对 Activiti 的主要特性和使用方法进行详细介绍。 Activiti 简介 Activiti 是一个开源的...

    Activiti5.13用户手册.zip

    可以支持网页版查看,activiti5操作手册,工作流开发学习List of Tables 2.1. 示例用户 2.2. webapp工具 3.1. 支持的数据库 6.1. 6.2. 6.3. 8.1. 邮件服务器配置 8.2. 邮件服务器配置 8.3. Mule服务器...

    最新Activiti视频教程,包含视频、源码、IDE集成Activiti插件、Activiti-5.22.0的pdm数据库表结构文件、教程菜单

    在原有Activiti的教程资源上对零散的源码进行了集中整理,并增加了pdm、IDE集成Activiti插件等文件,附上部分菜单,整理不易,给分支持,后期...多用户任务分配 3.内置用户组设计表以及IdentityService 4.组任务分配

    Activiti6.0教程例子下载

    documentation为该用户任务的描述。 5) 分配用户 可以把任务分配给指定的用户,也可以分配给指定的组,并且可以有多个,详见用户手册。 3.3. Spring配置文件 这里配置了数据源、事务管理、流程引擎及几个必要的...

    Activiti数据表结构

    ACT_RU_*表用于存储流程实例、用户任务、变量等的运行时数据。这些表中保存的数据只在流程执行过程中存在,流程结束后会被删除。 下面是Activiti数据表的详细清单: General * ACT_GE_BYTEARRAY:通用的流程定义...

    Activiti工作流笔记.chm

    Activiti工作流的课件整体、讲师: 刘洋 内容如下: 1:工作流的概念 1 ...16:用户任务(userTask,即用户操作的任务) 50 16.1:个人任务 50 16.2:组任务 56 16.3:工作流定义的角色组(了解) 68

    Activiti命令拦截器和设计模式.docx

    2. 命令发出者和执行者分离——Activiti 将任务委托给 CommandInterceptor 来执行,而不是直接让 CommandExecutor 执行,这是命令模式解耦的体现。 责任链模式的特性在 Activiti 中的体现: 1. 将请求放入职责链上...

    Activiti工作流数据库表结构

    1.2.1 Activiti数据表清单: 3 1.2.2 表名:ACT_GE_BYTEARRAY (通用的流程定义和流程资源) 3 1.2.4 表名:ACT_HI_ACTINST (历史节点表) 5 1.2.3 表名:ACT_GE_PROPERTY (系统相关属性) 4 1.2.5 表名:ACT_HI_...

    ACTIVITI如何获取下一步节点

    NULL 博文链接:https://chun521521.iteye.com/blog/2182997

    springboot集成activiti5.22

    12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 14. 系统接口:根据业务代码自动生成相关的api接口文档。 15. 在线...

    activiti工作流代码案例

    Activiti的后台是有... 这些表包含身份信息,比如用户,组等等。 ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。 ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。

    Activiti6.0 数据库表说明文档1

    ACT_RU_* 表是 Activiti6.0 的运行时表,用于存储和管理用户任务、变量、工作等运行时数据。在实例结束时,这些表中的记录将被删除。 在 ACT_RU_* 表中,有三个重要的表:act_ru_execution、act_ru_task 和 act_ru_...

    基于Activiti的工作流引擎openwebflow.zip

    Activiti允许在设计model的时候指定每个活动的执行权限,但是,业务系统可能需要根据实际情况动态设置这些任务的执行权限(如:动态的Group)。OpenWebFlow完全实现了与流程定义时期的解耦,即用户对活动的访问控制...

    springboot+Activiti .zip

    定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 14. 系统接口:根据业务代码自动生成相关的api接口文档。 15. 在线构建器:...

    2018年Java Activiti6.x 视频整合Spring Boot/JPA/WEB框架实战

    20 BPMN任务(1)用户任务 21 BPMN任务(2)服务任务 22 BPMN任务(3)任务监听器与流程监听器 23 BPMN其他元素(1)子流程 24 BPMN其他元素(2)顺序流与网关 25 BPMN其他元素(3)流程活动的特性 26 规则引擎Drools(1)...

    Spring-activiti-master.zip

    2.使用默认的用户登录后(用户名xiaomi,密码1234),可看到已部署好的两个流程,请假OA和采购流程,其中,请假OA包含了用户任务、排他网关、起始结束事件,较为简单;采购流程除此之外,还使用了异常结束事件、子...

    ActivitiDemo_LFP_HelloWorld实现

    运行findTask()查看用户任务,控制台输出如下: [java] view plain copy 1. 2. SLF4J: Defaulting to no-operation (NOP) logger implementation 3. SLF4J: See ...

    openwebflow:基于Activiti的工作流引擎扩展,接管了Activiti对活动权限以及用户表的管理,并提供了催办,代办,加签(包括前加签后加签),自由迁移,划分分组等功能

    Activiti允许在设计模型的时候指定每个活动的执行权限,但是,业务系统可能需要根据实际情况动态设置这些任务的执行权限(如:动态的组)。OpenWebFlow完全实现了与流程定义阶段的解压缩,即用户对活动的访问控制...

Global site tag (gtag.js) - Google Analytics