activiti 流程部署以及实例(processInstance)的创建

activiti是基于bpmn4.0进行开发的,我们可以界面化的进行流程的定义,之后将其进行发布。那么一个流程就可以进行流程的实例化了。

在eclipse先安装activiti editor插件利于我们图形化的进行操作,如下图所示,我使用AE图形化的创建了一个流程,命名为:test.bpmn,如下图所示。

这样一个流程就定义好了。在activiti中如果我们要使用这个流程,那么首先我们就需要将其部署到对应的activiti中。这样我们才能通过其提供的接口查询到这个流程定义(ProcessDifinitaion),之后根据流程定义去实例化一个流程(ProcessInstance)

流程的发布:

流程发布前我们得先配置好数据库等,从而获得流程配置引擎(再次不再累述,很多地方都能知道怎么配置),如下图所示:


如上图所示,流程的发布其实就是一个资源的存储,当我们存储的资源是bpmn或者bpmn20.xml的时候,它默认为这是一个流程定义资源,存储的时候回去解析,之后在流程定义表中也去插入数据。

流程发布之后(如上发布了test.bpmn流程),即可使用流程

(1)查询流程定义(ProcessDefinition)

使用的还是activiti的RepositoryService组件来查询出我们的实例:

这是根据流程定义的key值来获取ProcessDefinition,当然还有根据流程定义的ID等等来获取流程定义实例的,请自行参考接口。

(2)获得流程实例(ProcessInstance)

使用activiti另一个组件runtimeService即可开启一个流程实例:

当流程实例开启的时候,其默认已经在执行了其第一个任务。


结束语:

activiti:activiti就是一种工作流引擎,他又自身对工作流程的管理,它使得我们只需要去关心每一个task需要做什么业务逻辑,而流程如何处理、执行则交由activiti自身管理。它是一个抽象、零散的东东。如上所示:

task1-->task2-->task3,有1-->3则有activiti自身管理,task1要干什么(具体的业务逻辑)由我们来完成,当完成一个任务的时候我们只需要告诉activiti,这个任务完成了,它自然到了下一个任务去。。。

下篇将讲解activiti中task的流程。





<think>好的,用户想了解Activiti流程实例的使用教程或示例代码。首先,我需要回顾一下用户提供的引用内容,看看有哪些相关的信息可以利用。 根据引用[1]、[2]、[3],流程实例执行表act_ru_execution存储了当前正在执行的流程实例和执行流的数据。而act_hi_procinst是流程实例的历史表,流程实例结束后记录会保存在这里。用户可能需要知道如何启动流程实例,以及如何查询运行中的和历史中的实例。 引用[2]提到businessKey会在启动流程实例时存入act_ru_execution表,这可能涉及到启动流程实例时需要设置业务键的示例。另外,引用[5]中的示例代码展示了如何查询历史流程实例,这可能对用户有帮助。 用户可能需要一个从启动流程实例到查询的完整示例。我需要分步骤说明,包括流程定义部署、启动实例、任务处理、查询运行中和历史的实例。同时,要结合代码示例,使用Java和可能的Service调用。 需要注意代码中的关键点,比如使用RuntimeService启动流程实例,TaskService完成任务,HistoryService查询历史实例。同时,businessKey的应用场景,比如关联业务数据,这也是用户可能关心的。 另外,用户的问题可能涉及到流程实例与执行对象的区别,根据引用[3],流程实例和执行流都存储在act_ru_execution中,可能需要简要说明两者的关系。 还要确保回答结构清晰,分步骤讲解,并附上示例代码。最后,生成的相关问题需要围绕Activiti流程实例的更多细节展开,比如状态管理、生命周期、性能优化等。 现在整理思路,按照启动流程实例、处理任务、查询实例的步骤来组织内容,引用相关的表结构,并给出代码示例。同时,注意引用标记的正确使用,确保每个引用在回答中都有对应的标注。</think>### Activiti流程实例使用教程 #### 一、流程实例基础概念 流程实例(Process Instance)是Activiti流程定义的具体执行实例。当启动一个流程时,系统会在$act_ru_execution$表中插入执行记录[^3],完成后的历史数据存储在$act_hi_procinst$表中。启动时可指定`businessKey`关联业务数据[^2]。 #### 二、核心操作步骤 1. **部署流程定义** ```java // 部署BPMN文件 Deployment deployment = repositoryService.createDeployment() .addClasspathResource("processes/leave-request.bpmn20.xml") .deploy(); ``` 2. **启动流程实例** ```java // 启动实例并关联业务数据 String businessKey = "ORDER_1001"; ProcessInstance instance = runtimeService.startProcessInstanceByKey( "leaveRequestProcess", // 流程定义KEY businessKey, // 业务标识 variables // 流程变量 ); System.out.println("流程实例ID:" + instance.getId()); // 输出到act_ru_execution表 ``` 3. **任务处理** ```java // 查询待办任务 List<Task> tasks = taskService.createTaskQuery() .processInstanceId(instance.getId()) .list(); // 完成任务 taskService.complete(task.getId(), newVariables); ``` 4. **查询运行中实例** ```java // 通过业务键查询 Execution execution = runtimeService.createExecutionQuery() .processInstanceBusinessKey(businessKey) .singleResult(); ``` 5. **查询历史实例** ```java HistoricProcessInstance historicInstance = historyService .createHistoricProcessInstanceQuery() .processInstanceId(instance.getId()) .singleResult(); System.out.println("持续时长:" + historicInstance.getDurationInMillis()); // 来自act_hi_procinst表[^5] ``` #### 三、关键表说明 | 表名 | 作用 | |--------------------|----------------------------------------------------------------------| | `act_ru_execution` | 存储运行中的流程实例和执行流数据,含`BUSINESS_KEY_`字段 | | `act_hi_procinst` | 存储已完成的流程实例历史数据,包含开始/结束时间[^4] | | `act_ru_task` | 当前待处理任务列表(仅用户任务类型) | #### 四、业务关联示例 在采购审批场景中,可以通过`businessKey`关联采购单: ```java runtimeService.startProcessInstanceByKey( "purchaseApproval", "PO_20231001_001", Collections.singletonMap("amount", 150000) ); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值