`

各种状态的任务查询以及和业务对象关联

 
阅读更多
http://www.kafeitu.me/activiti/2012/03/22/workflow-activiti-action.html
我们目前分为4中状态:未签收、办理中、运行中、已完成。

查询到任务或者流程实例后要显示在页面,这个时候需要添加业务数据,最终结果就是业务和流程的并集,请参考6.2。

5.1 未签收(Task)
此类任务针对于把Task分配给一个角色时,例如部门领导,因为部门领导角色可以指定多个人所以需要先签收再办理,术语:抢占式
对应的API查询:
/**
 * 获取未签收的任务查询对象
 * @param userId    用户ID
 */
@Transactional(readOnly = true)
public TaskQuery createUnsignedTaskQuery(String userId) {
    TaskQuery taskCandidateUserQuery = taskService.createTaskQuery().processDefinitionKey(getProcessDefKey())
            .taskCandidateUser(userId);
    return taskCandidateUserQuery;
}



5.2 办理中(Task)
此类任务数据类源有两种:
签收后的,5.1中签收后就应该为办理中状态
节点指定的是具体到一个人,而不是角色
对应的API查询:
/**
 * 获取正在处理的任务查询对象
 * @param userId    用户ID
 */
@Transactional(readOnly = true)
public TaskQuery createTodoTaskQuery(String userId) {
    TaskQuery taskAssigneeQuery = taskService.createTaskQuery().processDefinitionKey(getProcessDefKey()).taskAssignee(userId);
    return taskAssigneeQuery;
}



5.3 运行中(ProcessInstance)
说白了就是没有结束的流程,所有参与过的人都应该可以看到这个实例,但是Activiti的API没有可以通过用户查询的方法,这个只能自己用hack的方式处理了,我目前还没有处理。
从表ACT_RU_EXECUTION中查询数据。
对应的API查询:
/**
 * 获取未经完成的流程实例查询对象
 * @param userId    用户ID
 */
@Transactional(readOnly = true)
public ProcessInstanceQuery createUnFinishedProcessInstanceQuery(String userId) {
    ProcessInstanceQuery unfinishedQuery = runtimeService.createProcessInstanceQuery().processDefinitionKey(getProcessDefKey())
            .active();
    return unfinishedQuery;
}



5.4 已完成(HistoricProcessInstance)
已经结束的流程实例。
从表ACT_HI_PROCINST中查询数据。
/**
 * 获取已经完成的流程实例查询对象
 * @param userId    用户ID
 */
@Transactional(readOnly = true)
public HistoricProcessInstanceQuery createFinishedProcessInstanceQuery(String userId) {
    HistoricProcessInstanceQuery finishedQuery = historyService.createHistoricProcessInstanceQuery()
            .processDefinitionKey(getProcessDefKey()).finished();
    return finishedQuery;
}



5.5 查询时和业务关联
提示:之前在业务对象添加了PROCESS_INSTANCE_ID字段
思路:现在可以利用这个字段查询了,不管是Task还是ProcessInstance都可以得到流程实例ID,可以根据流程实例ID查询实体然后把流程对象设置到实体的一个属性中由Action或者Controller输出到前台。

代码请参考:https://gist.github.com/2183557
分享到:
评论

相关推荐

    面向对象设计任务及任务设计

    面向对象设计任务及任务设计,是大学高年级学生在完成课程设计时的重要环节,尤其对于计算机科学与技术、软件工程等专业的学生而言,这不仅是理论知识的实际应用,也是提升编程能力、项目管理和团队协作能力的关键...

    类图,活动图与状态图,交互图 讲解教材

    状态图也是一种行为图,它描述了一个对象在其生命周期中的各种状态以及状态之间的转换。每个状态代表对象可能存在的一个阶段,而状态间的箭头表示触发状态变化的事件。状态图能够揭示对象在不同条件下的行为模式,...

    基于项目的任务管理系统.zip

    开发者可能会使用SQL语句来执行增删改查(CRUD)操作,同时可能还利用了索引、视图和存储过程等高级特性来优化查询性能和简化业务逻辑。 该系统的实现可能包括以下几个核心模块: 1. 用户管理:用户注册、登录、...

    校园二手交易平台-基于UML面向对象分析与设计.docx

    【校园二手交易平台】是一个针对大学生的在线平台,旨在方便学生之间的闲置物品交易。...这个设计包括了用例分析、类的设计、对象交互的顺序、协作关系、状态转换和具体业务流程,全面展现了系统的需求和设计思路。

    UML系统建模对象建模

    用例图描绘了系统参与者与系统之间的交互,活动图则展示了任务或事件的顺序,而状态图描述了对象在其生命周期内可能经历的各种状态及其转换。 **对象建模:** 对象建模是UML的核心,用于描述系统中的对象及其相互...

    图书管理系统 面向对象分析与设计

    在图书管理系统中,可能包括“读者”类、“图书”类、“管理员”类,以及各种管理类(如“借阅记录”类)。这些类会定义属性(如读者的姓名、借阅卡号,图书的ISBN、作者等)和行为(如借书、还书的操作)。 4. **...

    用状态机原理进行软件设计.pdf 及源码

    4. **动作**:在状态转换过程中,可以关联一些操作,如初始化、处理数据或执行任务。这些操作被称为进入动作和退出动作,分别在进入新状态和离开旧状态时执行。 5. **源码实现**:状态机的源码实现通常涉及定义状态...

    面向对象分析与设计课程结课大作业.pdf

    在这个课程的结课大作业中,学生们需要应用学到的知识来完成一系列建模任务,以航空订票管理系统为例,涵盖用例图、类图、序列图、协作图、状态图和活动图的创建。 1. **用例图建模**: 用例图用于描述系统的功能...

    综合物流企业信息系统关联性及分层模型研究

    这样的研究有助于物流企业构建一个结构清晰、层次分明、关联紧密的信息系统架构,使得企业在处理复杂的物流任务时能够更加高效和精准。此外,这种分层模型也为企业内部信息管理提供了更为科学的方法论支持,为企业...

    基于uml的公交查询用例图

    还有“乘客”类,包含个人信息和查询历史等。类之间的关系如继承、关联、依赖等,能进一步揭示系统内部分工和数据共享机制。 **部署图**描绘了硬件设备及软件组件的物理分布。在公交查询系统中,可能涉及服务器、...

    面向对象分析设计与uml的PPT

    建模机制包括静态模型(如类图、对象图和配置图)和动态模型(如用例图、活动图和状态图),以及交互图和时序图等。 2. 用例图:用例图描述了系统与用户或其他外部实体之间的交互,定义了系统提供的功能或服务。...

    面向对象技术引论重点整合

    32. **限定词**:限定词用于限制关联的范围,定义了哪些对象与另一对象关联。 33. **UML规则**:包括命名规则、范围定义、可见性控制以及完整性保证等,确保模型的清晰性和一致性。 34. **UML的公共机制**:详述、...

    基于Javaweb的员工任务管理系统(含数据库文件和运行截图).zip

    例如,可能会有“员工表”存储员工基本信息,“任务表”记录任务详情,“任务分配表”关联员工和任务,以实现任务的分配和跟踪。 系统的主要功能可能包括:员工注册与登录、任务创建与编辑、任务分配、任务状态跟踪...

    面向对象与UML资料

    应用域对象和解决域对象回顾 157 类型、声明和可见性回顾 157 合约:不变量、前提条件和后续条件 159 UML对象约束语言(OCL) 160 第三节 对象设计活动 161 规格说明活动 161 确定遗漏的属性和操作 163 指定类型、声明...

    UML建模和面向对象系统设计分析工具.企业版1

    4. **状态图(State Diagram)**:描述一个对象在其生命周期中的各种状态以及触发状态转换的事件。 5. **活动图(Activity Diagram)**:类似流程图,表示系统或对象的行为,尤其适合展示复杂的业务流程。 6. **用例图...

    PB制作任务栏

    6. **状态栏和通知**:PB的Status Bar控件可以用来模拟任务栏底部的状态区,显示系统时间、网络连接状态等信息。同时,PB还可以创建弹出式消息框或自定义控件来模拟通知区域的图标和提示。 7. **多线程编程**:为了...

    任务管理系统的设计与实现PPT教案.pptx

    这种关系设计有利于数据的关联查询和操作。 在系统详细设计阶段,功能设计和代码设计进一步细化了各个模块的功能实现。开发总结部分,作者提到虽然系统在有限的时间内完成了基本功能,但仍有提升空间,例如功能扩展...

    任务管理系统(ssh)

    在本系统中,Hibernate用于处理任务的创建、更新、删除和查询等操作,它提供了方便的数据访问API,可以避免直接编写SQL语句,提高开发效率。开发者只需要定义实体类和映射文件,就可以实现数据的CRUD操作。 在具体...

    UML与面向对象课程

    在“面向对象技术”这个文件中,你可能会深入学习如何使用面向对象的思想设计和实现软件,以及如何利用UML有效地沟通和文档化这些设计。通过理论学习与实践操作相结合,你将能够更好地理解和应用这两个关键的软件...

    JXWork任务管理软件源码及JXBiz平台参考手册

     强大的业务逻辑支持:JXBiz平台已经实现了一个JXBusinessObject业务对象类,其提供了用于业务状态切换的业务自动机功能和用于流程管控的业务规则功能,而且已经实现了自身的四状态(运行、暂停、取消、结束)切换...

Global site tag (gtag.js) - Google Analytics