流程部署-上传到服务数据库,正在执行任务

  • 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 文件上传表单    1)上传文件的本质是文本复制的过程    2)技术层面,在Java中一定会用到IO操作,主要以二进制方式读写    3)传统方式下,对于上传文件字段不同的浏览器有着不同的解析方 ...

  2. 利用mysql实现上传和下载_文件上传表单 上传文件的细节 文件上传下载和数据库结合...

    1 文件上传表单 1)上传文件的本质是文本复制的过程 2)技术层面,在Java中一定会用到IO操作,主要以二进制方式读写 3)传统方式下,对于上传文件字段不同的浏览器有着不同的解析方式,例如: IE6 ...

  3. Hibernate上传数据到数据库,从数据库读取数据到本地模板代码

    1.Hibernate上传数据到数据库: 1 //创建一个session对象 2 Session session1=HibernateTools.getSession(); 3 //Fenciresu ...

  4. 用纯ASP代码实现图片上传并存入数据库中

      用纯ASP代码实现图片上传并存入数据库中    热     ★ 用纯ASP代码实现图片上传并存入数据库中 用ASP编写网站应用程序时间长了,难免会遇到各式各样的问题,其中关于如何上传文件到服务器恐 ...

  5. 上传文件至数据库并下载

    在FineReport中,会出现希望直接将txt.excel等文件整个保存在数据库中进行备份,并且希望通过FineReport制作报表将这些文件下载下来的情况. 上传:使用文件控件上传文件,以二进制流 ...

  6. struts2解决动态多文件上传的问题(上传文件与数据库字段一一对应)(转)

    struts2多文件上传我想只要会用struts2的朋友都不会陌生,但是怎么在action中根据用户上传的文 件把文件路径写到数据库中对应的字段上呢?ps:我的意思是这样,页面上有固定的5个上传文件的 ...

  7. 上传文件到数据库,然后下载文件

    实现步骤: 上传文件到数据库:<SQL SERVER 2005> 上传文件==>压缩文件为ZIP格式的压缩包==>将压缩包转换为二进制流==>插入数据库<SQL S ...

  8. 初学者制作自己的网站详细流程(可以上传自己做的网页)

    制作自己的网站详细流程(可以上传自己做的网页) 自己以前做网页都是仅仅做一下,在本地看一下效果.但是最近需要做一个网站在手机上来展示自己网页内容,搜了一下资料,需要用到域名与主机.可能部分朋友不知道它 ...

  9. 用js实现加载本地图片并显示并将图片信息上传至服务端

    大体上分如下步骤: 1.建立input标签 通过定义type='file'来实现打开选择的文件 var mousestart = cursorPosition(event);function curs ...

最新文章

  1. linux安装python库报错pywin32,Linux windows安装paramiko模块
  2. display属性_前端基础:Grid 布局教程,重新复习grid布局的容器和项目属性
  3. Struts2.xml
  4. web框架django初探
  5. VNC怎么和宿主机共享粘贴板(整理)
  6. 参数位置关于shell
  7. 20155235 《网络攻防》 实验四 恶意代码分析
  8. python安装matplotlib需要c编译_新安装matplotlib时缺少cbook
  9. 微信朋友圈功能测试用例
  10. 西门子精彩SMART触摸屏下载程序时常见问题分析与处理对策
  11. 网络拓扑 令牌环网 以太网_以太网连接中网络拓扑的类型及其框架 以太网技术...
  12. 急救护理虚拟仿真实验室
  13. extmail mysql数据库 重启_linux下安装和配置extmail
  14. OD调试检测研究笔记(以E盾简化版作研究时写的笔记)
  15. TODA-MES简介
  16. vue表单验证rules国际化处理不能及时更新
  17. PPC活动的优化利用Prosper202
  18. Oracle数据库的整体结构
  19. 4.1-4.3 什么是矩阵 矩阵的基本运算及性质
  20. 英飞凌TC275芯片开发笔记

热门文章

  1. 电脑一般预装access吗_我告诉你惠普预装office是永久的吗
  2. xcode和macos对应版本参考
  3. Linux中的高级存储管理
  4. 软考(一)——数据流图
  5. linux清空文件命令
  6. 自建服务器打印机,打印机服务器搭建 -cups
  7. css常用样式(文字样式、边框样式、背景样式)
  8. 从数字城市迈向智能城市
  9. CSS高度自适应问题
  10. 01Java方法重写与重载的区别