2、流程部署-上传到服务数据库,查看当前正在执行任务
流程部署-上传到服务数据库,正在执行任务
- 1、部署单个BPMN文件到服务
- 2、1次部署多个BPMN文件
- 3、流程定义信息查询
- 4、查询流程下正在跑的任务
- 5、删除流程部署信息
- 6、流程资源下载
1、部署单个BPMN文件到服务
部署BPMN文件到流程引擎中,一般是Web界面上传 bpmn.xml 文件部署,这里只是模拟读取项目文件夹下的文件进行部署。
@Testpublic void deploymentTest(){//1 创建ProcessEngineProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//2 获取持久化服务 RepositoryServiceRepositoryService repositoryService = processEngine.getRepositoryService();//3 部署单个BPMN到Activiti 流程中(上传BPMN文件到数据库)Deployment deployment = repositoryService.createDeployment().addClasspathResource("bpmn/MyLeave.bpmn")//png 资源命名有规范。MyLeave.myLeave.png|jpg|gif|svg(bpmn名词.流程ID.图片扩展名).addClasspathResource("bpmn/MyLeave.myLeave.png").name("请假流程").deploy();log.info("部署的流程ID:"+deployment.getId());log.info("部署的流程Name:"+deployment.getName());}
2、1次部署多个BPMN文件
有时发布时多个流程文件需要部署时,可以打包文件为ZIP文件,上传这个ZIP文件即可。
/*** 使用ZIP文件,1次部署多个流程PBMN文件*/@Test public void deployProcessByZip(){InputStream inputStream=this.getClass().getClassLoader().getResourceAsStream("bpmn/myLeave.zip");ZipInputStream zipInputStream=new ZipInputStream(inputStream);ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();Deployment deploy = repositoryService.createDeployment().addZipInputStream(zipInputStream).deploy();log.info("流程部署ID:{}",deploy.getId());log.info("流程部署Name:{}",deploy.getName());}
3、流程定义信息查询
/*** 流程定义查询,流程部署到服务后(数据库)。如何从服务中查询具体的流程定义?*/@Testpublic void queryProcessDefinition(){ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();List<ProcessDefinition> pdes = processDefinitionQuery.processDefinitionKey("myLeave").orderByProcessDefinitionVersion().desc().list();for(ProcessDefinition pd:pdes){log.info("流程定义ID:{}",pd.getId());log.info("流程定义name:{}",pd.getName());log.info("流程定义key:{}",pd.getKey());log.info("流程定义version:{}",pd.getVersion());log.info("流程部署ID:{}",pd.getDeploymentId());}}
4、查询流程下正在跑的任务
/*** 查询指定流程下是否有实例正在跑,还没有执行完成,流程执行到了哪一步?* 请假流程有实例正在跑,这里就会查询到*/@Testpublic void queryProcessInstance(){ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RuntimeService runtimeService = processEngine.getRuntimeService();List<ProcessInstance> pis = runtimeService.createProcessInstanceQuery().processDefinitionKey("myLeave").list();for(ProcessInstance pi:pis){log.info("流程实例ID:{}",pi.getProcessInstanceId());log.info("所属流程定义ID:{}",pi.getProcessDefinitionId());log.info("是否执行完成:{}",pi.isEnded());log.info("是否暂停:{}",pi.isSuspended());log.info("当前活动标识:{}",pi.getActivityId());//一般用BusinessKey 和业务某个ID进行关联,从而流程和业务关联在一起log.info("当前业务关键字:{}",pi.getBusinessKey());}}
5、删除流程部署信息
废弃的流程信息需要从服务器中删除部署信息。
/*** 删除流程部署,部署后的流程可删除*/@Testpublic void deleteDeployment(){//流程部署IdString deploymentId="17501";ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();//根据流程部署ID,从数据库中删除流程部署。用于废弃的流程删除部署,后续不会再开启流程repositoryService.deleteDeployment(deploymentId);//如果当前流程部署下有流程实例还没有跑完,是不允许删除的,会报错。这里可强制删除,内部会级联删除,把相关信息都会删除。
// repositoryService.deleteDeployment(deploymentId,true);}
6、流程资源下载
有时业务系统需要展示流程图或流程文件信息时,需要下载页面展示
/*** 下载流程资源文件信息* 一般是在业务修改中下载流程定义文件,用于业务系统展示流程图 等业务*/@Testpublic void loadBpmnFile() throws IOException {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();//查询到流程定义信息ProcessDefinition pDef = repositoryService.createProcessDefinitionQuery().processDefinitionKey("myLeave").singleResult();String deploymentId = pDef.getDeploymentId();//下载流程图和流程定义文件InputStream pngInput = repositoryService.getResourceAsStream(deploymentId, pDef.getDiagramResourceName());InputStream bpmnInput = repositoryService.getResourceAsStream(deploymentId, pDef.getResourceName());//保存到本地FileOutputStream pngOut=new FileOutputStream(new File("/Volumes/work/test/myLeave.png"));FileOutputStream bpmnOut=new FileOutputStream(new File("/Volumes/work/test/myLeave.bpmn"));IOUtils.copy(pngInput,pngOut);IOUtils.copy(bpmnInput,bpmnOut);pngInput.close();bpmnInput.close();pngOut.close();bpmnOut.close();}
2、流程部署-上传到服务数据库,查看当前正在执行任务相关推荐
- 文件上传表单 上传文件的细节 文件上传下载和数据库结合
1 文件上传表单 1)上传文件的本质是文本复制的过程 2)技术层面,在Java中一定会用到IO操作,主要以二进制方式读写 3)传统方式下,对于上传文件字段不同的浏览器有着不同的解析方 ...
- 利用mysql实现上传和下载_文件上传表单 上传文件的细节 文件上传下载和数据库结合...
1 文件上传表单 1)上传文件的本质是文本复制的过程 2)技术层面,在Java中一定会用到IO操作,主要以二进制方式读写 3)传统方式下,对于上传文件字段不同的浏览器有着不同的解析方式,例如: IE6 ...
- Hibernate上传数据到数据库,从数据库读取数据到本地模板代码
1.Hibernate上传数据到数据库: 1 //创建一个session对象 2 Session session1=HibernateTools.getSession(); 3 //Fenciresu ...
- 用纯ASP代码实现图片上传并存入数据库中
用纯ASP代码实现图片上传并存入数据库中 热 ★ 用纯ASP代码实现图片上传并存入数据库中 用ASP编写网站应用程序时间长了,难免会遇到各式各样的问题,其中关于如何上传文件到服务器恐 ...
- 上传文件至数据库并下载
在FineReport中,会出现希望直接将txt.excel等文件整个保存在数据库中进行备份,并且希望通过FineReport制作报表将这些文件下载下来的情况. 上传:使用文件控件上传文件,以二进制流 ...
- struts2解决动态多文件上传的问题(上传文件与数据库字段一一对应)(转)
struts2多文件上传我想只要会用struts2的朋友都不会陌生,但是怎么在action中根据用户上传的文 件把文件路径写到数据库中对应的字段上呢?ps:我的意思是这样,页面上有固定的5个上传文件的 ...
- 上传文件到数据库,然后下载文件
实现步骤: 上传文件到数据库:<SQL SERVER 2005> 上传文件==>压缩文件为ZIP格式的压缩包==>将压缩包转换为二进制流==>插入数据库<SQL S ...
- 初学者制作自己的网站详细流程(可以上传自己做的网页)
制作自己的网站详细流程(可以上传自己做的网页) 自己以前做网页都是仅仅做一下,在本地看一下效果.但是最近需要做一个网站在手机上来展示自己网页内容,搜了一下资料,需要用到域名与主机.可能部分朋友不知道它 ...
- 用js实现加载本地图片并显示并将图片信息上传至服务端
大体上分如下步骤: 1.建立input标签 通过定义type='file'来实现打开选择的文件 var mousestart = cursorPosition(event);function curs ...
最新文章
- linux安装python库报错pywin32,Linux windows安装paramiko模块
- display属性_前端基础:Grid 布局教程,重新复习grid布局的容器和项目属性
- Struts2.xml
- web框架django初探
- VNC怎么和宿主机共享粘贴板(整理)
- 参数位置关于shell
- 20155235 《网络攻防》 实验四 恶意代码分析
- python安装matplotlib需要c编译_新安装matplotlib时缺少cbook
- 微信朋友圈功能测试用例
- 西门子精彩SMART触摸屏下载程序时常见问题分析与处理对策
- 网络拓扑 令牌环网 以太网_以太网连接中网络拓扑的类型及其框架 以太网技术...
- 急救护理虚拟仿真实验室
- extmail mysql数据库 重启_linux下安装和配置extmail
- OD调试检测研究笔记(以E盾简化版作研究时写的笔记)
- TODA-MES简介
- vue表单验证rules国际化处理不能及时更新
- PPC活动的优化利用Prosper202
- Oracle数据库的整体结构
- 4.1-4.3 什么是矩阵 矩阵的基本运算及性质
- 英飞凌TC275芯片开发笔记