-
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("com/activiti/demo/config/spring-cfg.xml");
//红色字体代表加载配置文件
- 构建方法:ProcessEngine pe = configuration.buildProcessEngine();
- 部署流程:三种方式:0
-
* 流程部署涉及到的表:
* act_ge_bytearray 存数字节信息
* act_re_deployment 存储流程部署名称几id
* act_re_procdef 存储流程部署详细信息// 通过字节流inputstream加载zip部署压缩文件(包括:xxxx.bpmn and xxx.png)资源- 通过zip压缩包方式:
- 通过RepositoryService创建Deployment对象,repositoryService.createDeployment()
- .addZipInputStream(zipInputStream).name("hello").deploy();//部署流程并制定流程定义名称
- 通过addClssPathResouse(path).deploy();
- addInputstream().deploy();
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
// 通过流名称查询 流程列表
ProcessDefinition definition = rep.createProcessDefinitionQuery() .processDefinitionId("leave:1:704").singleResult();
ProcessDefinition definition = rep.createProcessDefinitionQuery().processDefinitionId("leave:1:804").singleResult(); String resouse_bpmn = definition.getResourceName();//获得资源文件名称 String deployId = definition.getDeploymentId();//获得资源部署id String resouse_png = definition.getDiagramResourceName();//获得资源图片 文件名称
InputStream is_bpmn = rep.getResourceAsStream(deployId,resouse_bpmn);//bpmn文件流 InputStream is_png = rep.getResourceAsStream(deployId,resouse_png);//png文件流
File file_bpmn = new File("d://"+resouse_bpmn); File file_png = new File("d://"+resouse_png);
FileOutputStream fos_bpmn = new FileOutputStream(file_bpmn); FileOutputStream fos_png = new FileOutputStream(file_png);
//创建缓冲区 byte buf [] = new byte[1024];int len= 0;
//保存文件到本地
while((len =is_bpmn.read(buf))!=-1){
fos_bpmn.write(buf, 0, len);
}while((len =is_png.read(buf))!=-1){
fos_png.write(buf, 0, len);
}//关闭流
is_bpmn.close();
is_png.close();
if (fos_bpmn!=null||fos_png!=null) {
fos_bpmn.flush();
fos_bpmn.close();
fos_png.flush();
fos_png.close();
}} catch (Exception e) {
System.out.println("file not found");
e.printStackTrace();
}
流程实例的启动:
什么是流程实例:流程实例是在基于流程定义基础之后的,流程定义和流程实例是一对多的关系。
流流程定义是静态的。程实例是动态的。
ProcessInstance p =runtimeService.startProcessInstanceByKey("leavel",“bussiness”);
//红色表示流程部署的名字(key) 001 业务标识 如果是请假流程 那么就是请假单 id
通过 runtimeService 服务来启动一个流程实例返回ProcessInstance(流程实例对象)对象。
通过 ProcessInstance 可以获得:
流程实例所属流程定义 id:processInstance.getProcessDefinitionId();
流程实例 id:processInstance.getProcessInstanceId();
流程实例执行 id:processInstance.getId();
流程当前的活动(结点)id: processInstance.getActivityId()
业务标识:processInstance.getBusinessKey();
流程变更:processInstance.getProcessVariables();
流程的启动会操作以下几个表:
act_ru_execution 运行时流程执行实例表
act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息
act_ru_task 运行时任务节点表
act_ru_variable 运行时流程变量数据
流程实例的查询:
通过流程定义 key 查询流程实例。processInstanceQuery.processDefinitionKey(key).list();
//获得流程实例查询对象 ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery()
//通过流程定义 key 查询该流程的实例。query.processDefinitionKey(key).list();查询流程实例列表
流程实例所属流程定义 id:processInstance.getProcessDefinitionId();
流程实例 id:processInstance.getProcessInstanceId();
流程实例执行 id:processInstance.getId();
流程当前的活动(结点)id: processInstance.getActivityId()
业务标识:processInstance.getBusinessKey();
流程变更:processInstance.getProcessVariables();
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于