Activiti(工作流)如何关联业务表

1.部署流程(定义流程)

1 InputStream in = new FileInputStream(file);
2 ZipInputStream zipInputStream = new ZipInputStream(in);
3 processEngine.this.getRepositoryService()
4              .createDeployment()
5              .name(processName)
6              .addZipInputStream(zipInputStream)
7              .deploy();

2.启动流程(所定义流程的一个实例)

1 processEngine().getRuntimeService()
2          /**第二个参数是businesskey:业务工单的主键,作为区分,一般流程名+id,当然如果id为uuid则无所谓 */
3          .startProcessInstanceByKey("leave", "leaveBill", variables);

这样,业务表就与activiti的表关联起来了(一般为了方便,业务表里也会存一个processId)

其内部表之间关联如下

3.查看某人的任务

 1 /**
 2      * 当前登录人登录系统以后要执行的任务(包含个人任务+组任务)
 3      */
 4     public List<Task> getTasksByAssignee(String userId){
 5         List<Task> assigneeTasks =  this.getTaskService()
 6                 .createTaskQuery()
 7                 .taskAssignee(userId)//参与者,个人任务查询
 8                 .orderByTaskCreateTime()
 9                 .desc()
10                 .list();
11         List<Task> candidateTasks = this.getTaskService()
12                 .createTaskQuery()
13                 .taskCandidateUser(userId)//参与者,组任务查询
14                 .orderByTaskCreateTime()
15                 .desc()
16                 .list();
17         assigneeTasks.addAll(candidateTasks);
18         return assigneeTasks;
19     }

4.根据task -》 processInstance  -》 businessKey -》 业务表

 1     /**
 2      * 根据taskId查找businessKey
 3      */
 4     public String getBusinessKeyByTaskId(String taskId){
 5         Task task = this.processEngine
 6                 .getTaskService()
 7                 .createTaskQuery()
 8                 .taskId(taskId)
 9                 .singleResult();
10         ProcessInstance pi = this.getRuntimeService()
11                 .createProcessInstanceQuery()
12                 .processInstanceId(task.getProcessInstanceId())
13                 .singleResult();
14         return pi.getBusinessKey();
15     }

时间: 2024-11-03 21:28:03

Activiti(工作流)如何关联业务表的相关文章

Winform开发框架中工作流模块的业务表单开发

在我们开发工作流的时候,往往需要设计到具体业务表单信息的编辑,有些是采用动态编辑的,有些则是在开发过程中处理的,各有各的优点,动态编辑的则方便维护各种各样的表单,但是数据的绑定及处理则比较麻烦,而自定义开发的,则数据弹性很大,方便修改调整.本篇随笔基于表单的开发设计过程,介绍在工作流中如何新增一个业务表单,以便快速的实现审批业务的上线处理. 1.业务表单的基类继承 首先我们来了解一下业务表单的对应关系,一般创建一个业务流程处理,都需要有一个具体的创建业务表单的界面,以及一个查看处理表单的界面.

Activiti 工作流表单设计及开发

一.前言 Activiti 5对表单的支持目前还是比较弱的,表现在对表单的开发还需要写Freemark模板,并且它的模板还需要跟class文件一起打包发布.这使得流程的表单设计必须由开发人员来开发处理.因而,开发一套易用性强的流程表单功能就显得很有必要. 二.需求 用户一般都希望能有如Microsoft的Office套件中的InfoPath那样,可以自己进行设计,并且能与工作流程绑在一起进行流转处理.如下所示: 表单中每个字段有固定的数据类型,并由不同的数据控件展示,如日期.数字.单选或多选.下

Activiti工作流数据库表结构

Activiti工作流引擎数据库表结构 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. ACT_RE_*:’RE’表示repository.带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等). ACT_RU_*:’RU’表示runtime.这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据.Activiti只存储实例执行期间的运行时数据,当流程实例结束时,将删

Activiti工作流框架学习(一)之通用数据表详细介绍

文/朱季谦 Activiti工作流引擎自带了一套数据库表,这里面有一个需要注意的地方: 低于5.6.4的MySQL版本不支持时间戳或毫秒级的日期.更糟糕的是,某些版本在尝试创建此类列时将引发异常,而其他版本则不会.执行自动创建/升级时,引擎将在执行DDL时更改它.使用DDL文件方法时,既可以使用常规版本也可以使用其中带有mysql55的特殊文件(这适用于低于5.6.4的任何版本).后一个文件将具有没有毫秒精度的列类型. 笔者曾经在5.6.0版本做过试验,发现是无法自动生成23张表的,但在5.6.

BOS项目 第9天(activiti工作流第一天,工作流概念、工作流所需要的23张表、eclipse安装流程设计插件、流程api基本操作)

BOS项目笔记 第9天 今天内容安排: 1.工作流概念 2.安装流程设计器插件(eclipse)----设计流程图 3.创建activiti数据库(23张表) 4.activiti的API操作流程 1. 工作流概念 工作流(Workflow),就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现". 工作流管理系统(Workf

Activiti工作流框架学习(一)——环境的搭建和数据表的了解

一.什么是工作流 工作流(Workflow),就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现". 工作流管理系统(Workflow Management System,WfMS)是一个软件系统,它完成工作量的定义和管理,并按照在系统中预先定义好的工作流逻辑进行工作流实例的执行.工作流管理系统不是企业的业务系统,而是为企业

BOS项目 第11天(activiti工作流第三天,流程实例管理、项目中的用户和角色同步到activiti的用户和组表、设计物流配送流程、启动物流配送流程、组任务操作(查询、拾取)、个人任务操作(查询、办理))

BOS项目笔记 第11天 今天内容安排: 1.流程实例管理(查询.查看运行状态) 2.将bos系统中的用户和角色同步到activiti的用户和组表 3.设计物流配送流程 4.启动物流配送流程 5.组任务操作(查询.拾取) 6.个人任务操作(查询.办理) 1. 流程实例管理 1.1 查询流程实例列表 第一步:创建一个流程实例管理Action,提供list方法,查询流程实例列表数据 第二步:配置struts.xml 第三步:提供processinstance.jsp页面,展示列表数据 <s:iter

Activiti工作流笔记(2)

1.Activiti工作数据表 Activiti用来存放流程数据的表共使用23张表,表名都是以"ACT_"开头,底层操作默认使用mybatis操作 工作流Activiti的表是用来存储流程数据的,而业务的数据需要用户自己创建和维护 在使用Activiti时一定需要业务去关联流程. 以下以MySql数据库为例: 1)使用代码方式创建Activiti工作流需要的23张表 @Test public void createTable_1() { //创建流程引擎配置对象 ProcessEngi

浅谈Activiti工作流引擎用户管理

一.前言 近期做了一个简单的财务管理系统,在工作审批模块中运用了工作流引擎.在对比了JBPM与Activiti后,毅然而然决定使用Activiti.本文对Activiti不做过多的介绍,重点在于分析其自身的用户管理模块.刚接触,也只是阐述下自己的个人项目经验.若有不足之处,还望指正. 二.Activiti的用户管理 数据库表: act_id_user表: act_id_group表: act_id_membership表: 从图中可以看出,activiti的用户模块只有用户与组为多对多的关系,仅