`
eric_hwp
  • 浏览: 126684 次
  • 性别: 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用户指南.zip

    2. 表单支持:Activiti 可以集成表单,使用户在执行任务时填写相关数据。 3. 用户界面:提供了一个基于 Web 的管理界面,方便查看和管理流程实例。 4. 运行时服务:提供了丰富的运行时服务,如启动流程实例、查询...

    Activiti5.4 用户指南-中文版

    用户可以通过 Activiti Designer 工具创建流程图,包括任务(Task)、网关(Gateway)、事件(Event)等元素,以直观地设计和理解业务流程。 2. **部署与执行**:流程定义完成后,可以通过 Activiti 的 API 或管理...

    Activiti6.0 用户手册说明文档1

    - **TaskService**:用于管理用户任务,包括查询、领取、完成、删除任务以及设置变量。 - **IdentityService**:提供用户和组的管理功能,与Task关联。 - **ManagementService**:用于流程引擎的管理和维护,不常...

    Activiti5实现任务撤回,任意跳转(代码+注释 spring-activiti-withdraw.zip)

    activiti没有撤回,由于业务的需求需要实现撤回,在参考别人代码后以两种方式实现了任意节点的跳转。代码真实可用,如有问题可联系我 第一种方式: 1、获取当前节点,获取跳转节点 2、获取节点的所有流出流向,把...

    Activiti多实例任务实现会签

    其中,`user task`表示用户需要参与的任务,而`multi-instance`是BPMN中的一个特性,用于创建多实例任务。 3. 多实例任务(Multi-instance Task):多实例任务是BPMN中的一个重要概念,允许任务根据一组数据集(如...

    activiti学习-使用activiti多实例任务实现会签

    #### 一、多实例用户任务的基本概念与配置 Activiti是一个开源的工作流引擎,它提供了一种灵活的方式来定义业务流程,并且能够支持复杂的业务逻辑处理。其中,多实例任务是Activiti的一个重要特性,它可以用来实现...

    Spring-activiti-ruoyi-activiti

    利用Activiti提供的BPMN 2.0 XML文件,你可以描述出流程的各个环节,包括开始事件、结束事件、用户任务、服务任务、网关等。这些流程模型可以通过Ruoyi的后台管理界面导入到Activiti引擎中。 在Ruoyi中,你可以开发...

    Activiti6.x中文用户指南 html

    "Activiti用户指南.html"文件可能包含了这些章节的详细内容,而"Activiti用户指南_files"可能是相关的图片、样式表或其他辅助文件,用于提供更丰富的阅读体验。通过深入学习这个中文用户指南,开发者和业务分析师...

    activiti 用户手册

    八、Activiti用户手册 《Activiti V5.21 用户手册 中文版》详细讲解了Activiti的安装、配置、设计、部署、监控等各个方面,是学习和使用Activiti的重要参考资料。阅读手册,你将了解到如何利用Activiti实现高效、...

    Activiti用户指南.pdf2017-12-21最新中文翻译版

    ### Activiti用户指南知识点总结 #### 1. Activiti简介 Activiti是一个轻量级、可扩展的流程引擎,它允许您创建企业级流程和工作流应用。Activiti遵循Apache V2许可证发布,源代码托管在GitHub上,允许用户查看、...

    activiti5.21用户手册

    5. **表单集成**:Activiti 支持与表单系统的集成,用户在执行任务时可以填写相关表单,这些数据会被保存并用于后续流程。 6. **规则引擎集成**:Activiti 可以与Drools等规则引擎集成,实现动态决策。当流程运行到...

    activiti6.0 自定义流程路径颜色和任务颜色

    在"activiti6.0 自定义流程路径颜色和任务颜色"这个主题中,我们主要关注如何根据业务需求定制流程图的显示效果,特别是流程路径和任务节点的颜色。 首先,流程图的颜色定制对于理解和跟踪流程状态至关重要。默认...

    Activiti 工作流取回的示例

    它是基于BPMN 2.0标准的,这意味着你可以创建复杂的流程图,包括开始事件、结束事件、任务(用户任务和服务任务)、网关(并行和 Exclusive)、事件捕获等元素。这些元素可以通过Alfresco Studio或其他流程建模工具...

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

    手册还深入讲解了 Activiti API,包括流程引擎 API 和服务,异常策略,如何与 Activiti 服务工作,包括部署流程,启动流程实例,完成任务,暂停和激活流程,以及通过 Activiti 引擎进行单元测试和调试。 关于事件...

    Activiti 5.4用户指南(中文)

    Activiti 5.4 采用了 Apache 2.0 许可,这意味着它是免费且开源的,用户可以自由地使用、修改和分发源代码,为企业提供了灵活的使用选择。 2. **下载与获取** 用户可以通过官方网站或者其他开源软件仓库下载 ...

    Activiti 5.14 用户手册

    2. ** BPMN 2.0 支持 **:BPMN(Business Process Model and Notation)是一种国际标准的流程建模语言,Activiti 5.14 全面支持 BPMN 2.0,允许用户用图形化方式设计和管理业务流程,包括开始事件、结束事件、任务、...

    Activiti 5_13 用户手册

    - 自定义行为:如何编写自定义的用户任务行为、服务任务行为等,扩展Activiti的功能。 - 事件处理器:了解如何实现自定义事件处理器,处理特定的业务逻辑。 12. **最佳实践与案例分析** - 实战指导:提供实际...

    activiti6用户手册 英文

    这个“activiti6用户手册 英文”提供了关于Activiti 6版本的详细指南,帮助用户理解并充分利用该平台的各项功能。 1. **Activiti概述**:Activiti 是基于模型驱动的,它使用 BPMN 2.0(Business Process Model and ...

    Activiti 5.13 用户手册(中文版)

    3. **表单和任务**:Activiti 支持与表单集成,允许用户在执行任务时填写相关信息。它提供了表单字段绑定和数据管理的能力,让业务逻辑与用户界面紧密结合。任务管理则包括任务分配、委托、评论和附件等功能。 4. *...

    Activiti 学习笔记13:分配组任务

    在Activiti中,任务可以被分配给一个用户或者一个组。组任务是指任务被指定给一个用户组,而不是单个用户。这样的设计允许任务由组内的任何成员处理,增加了流程的灵活性和效率。 2. **Group的概念** 在Activiti...

Global site tag (gtag.js) - Google Analytics