`
eric_hwp
  • 浏览: 120717 次
  • 性别: 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:个人任务

    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工作流笔记.chm

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

    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_*: 通用数据, 用于不同场景下,如存放资源文件。

    基于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 ...

    Activiti工作流学习资料.zip

    Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM...

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

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

    基于SpringMVC+Shiro+Activiti 5.16 的简单OA,可以快速入门Activiti学习用

    可以通过后台管理,动态部署流程、动态设定用户任务的处理人(运行中的流程也可以调整处理人)。继承Activiti自带的modeler,实现在线设计流程文件。Shiro实现登录认证和权限控制,结合Ehcache缓存权限列表,毕竟权限...

    activiti数据库设计.docx

    这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据。Activiti只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。 ACT_ID_*: 'ID'表示...

    用户任务流程图

    用户任务的流程图,使用activiti 画出的bpmn流程图!!!!

Global site tag (gtag.js) - Google Analytics