flowable实战(三)flowable流程实例管理接口

文章目录

    • 一、流程实例的管理接口常见功能:
      • 1.启动一个流程(即创建一个流程实例)
      • 2.本人发起的流程实例
      • 3.本人参与的流程实例
      • 4.挂起/激活流程实例
      • 5.提前终止流程实例(或又叫撤销流程)
      • 6.彻底删除流程实例
      • 7.流程图查看
      • 8.判断流程实例的状态(运行中/已结束)
    • 二、主要接口:
      • 2.1. 启动流程:
      • 2.2. 提前终止流程实例:
      • 2.3. 本人发起的流程实例:
      • 2.4. 挂起与激活流程实例:
      • 2.5. 生成流程图
      • 2.6. 判断流程实例在运行中是否存在
      • 2.7. 查询历史实例中流程实例是否存在

一、流程实例的管理接口常见功能:

1.启动一个流程(即创建一个流程实例)

2.本人发起的流程实例

3.本人参与的流程实例

4.挂起/激活流程实例

5.提前终止流程实例(或又叫撤销流程)

6.彻底删除流程实例

7.流程图查看

8.判断流程实例的状态(运行中/已结束)

二、主要接口:

2.1. 启动流程:

public ProcessInstance strartFlow(String processKey, Map<String, Object> paras){//启动前必须开启,这样才能取得流程发起人String  userId=paras.get("AuthenticatedUserId").toString();//设置流程实例的发起人是当前用户Authentication.setAuthenticatedUserId(userId);// 取得业务idString busiKey = paras.get("busiKey").toString();if (StringUtils.isEmpty(processKey)){logger.error("错误:流程定义未找到!");}if (null == paras){paras = new HashMap<>();}Deployment deployment = repositoryService.createDeploymentQuery().processDefinitionKey(processKey).singleResult();if (deployment == null) {logger.error("错误:启动流程实例:" + processKey);}ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processKey, busiKey, paras); // 同时设置业务的id到流程实例中的BUSINESS_KEY_logger.info("成功:启动流程实例:" + processInstance.getProcessDefinitionName() + ":" + processInstance.getId());Authentication.setAuthenticatedUserId(null); // 这个方法最终使用一个ThreadLocal类型的变量进行存储,也就是与当前的线程绑定,所以流程实例启动完毕之后,需要设置为null,防止多线程的时候出问题。return processInstance;
}

2.2. 提前终止流程实例:

public void deleteProcessInstanceById(String processInstanceId){// ""这个参数本来可以写删除原因runtimeService.deleteProcessInstance(processInstanceId,"");
}

2.3. 本人发起的流程实例:

/*** @Description: 我发起的流程实例列表*** @Date: 2019/5/12 20:31* @Param:userId  用户id* @return:  List<Zjm_gflowTask>   流程实例列表**/
public List<HistoricProcessInstance> getMyStartProcint(String userId){List<HistoricProcessInstance> list=processEngine.getHistoryService() // 历史相关Service.createHistoricProcessInstanceQuery().startedBy(userId).orderByProcessInstanceStartTime().asc().list();return list;
}

2.4. 挂起与激活流程实例:

/*** @Description: 挂起流程实例*  ** @Date: 2019/5/15 1:19 * @Param:  processInstanceId  当前流程实例id* @return: 无**/
public void handUpProcessInstance(String processInstanceId){runtimeService.suspendProcessInstanceById(processInstanceId);
}/*** @Description:恢复(唤醒)被挂起的流程实例*  ** @Date: 2019/5/15 1:22 * @Param:  processInstanceId  流程实例id* @return: 无**/
public void activateProcessInstance(String processInstanceId){runtimeService.activateProcessInstanceById(processInstanceId);
}

2.5. 生成流程图

// 将生成图片放到文件夹下
String deploymentId = "801";
// 获取图片资源的名称
List<String > list = processEngine.getRepositoryService().getDeploymentResourceNames(deploymentId);
// 定义图片资源的名称
String resourceName = "";
if (list !=null && list.size()>0){for (String name:list){if (name.indexOf(".png")>=0){resourceName = name;}}
}// 获取图片的输入流
InputStream  in = processEngine.getRepositoryService().getResourceAsStream(deploymentId,resourceName);
// 将图片生成到D盘的根目录下
File file = new File ("D:/" + resourceName);
// 将输入流的图片写到d盘下
FileUtils.copyInputStreamToFile(in,file);

2.6. 判断流程实例在运行中是否存在

/*** @Description: 判断流程实例在运行中存不存在*  ** @Date: 2019/5/26 19:24 * @Param:  procInstanceId 流程实例* @return:  true表示存在,false表示不存在**/
public Boolean  isExistProcIntRunning(String procInstanceId){ProcessInstance  pi= runtimeService.createProcessInstanceQuery().processInstanceId(procInstanceId).singleResult();if (pi==null){return false;}else{return true;}
}

2.7. 查询历史实例中流程实例是否存在

/*** @Description:  查询历史实例中流程实例是否存在*  ** @Date: 2019/5/26 19:35 * @Param:  procInstanceId 流程实例* @return:  true表示存在,false表示不存在**/
public Boolean isExistProcHistory(String procInstanceId){HistoricProcessInstance  hpi= historyService.createHistoricProcessInstanceQuery().processInstanceId(procInstanceId).singleResult();if (hpi==null){return false;}else{return true;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java jtable不可编辑_java – 使JTable单元不可编辑

当用户双击时,我试图使JTable的所有单元格都不可编辑.我已经阅读了很多论坛帖子,一般的共识是创建一个新的表模型类,扩展DefaultTableModel然后重写方法isCellEditable(int row,int column).我做了所有这些,现在当我运行我的程序(小程序)时,没有任何东西出现在单元格中.注意我这…

Spark精华问答 | 谈谈spark中的宽窄依赖

总的来说&#xff0c;Spark采用更先进的架构&#xff0c;使得灵活性、易用性、性能等方面都比Hadoop更有优势&#xff0c;有取代Hadoop的趋势&#xff0c;但其稳定性有待进一步提高。我总结&#xff0c;具体表现在如下几个方面。1Q&#xff1a;Spark RDD是什么&#xff1f;A&am…

阿里云产品头条(2017年12月刊)

摘要&#xff1a; 一、新产品发布1、云防火墙 商业化 发布云防火墙是一款云环境下的防火墙产品&#xff0c;首创了基于业务可视的结果&#xff0c;实现业务梳理和业务隔离的技术。适用于互联网&#xff0f;通用&#xff0f;游戏&#xff0f;金融&#xff0f;新零售&#xff0f;…

一张图解读阿里云数据管理DMS企业版

摘要&#xff1a; 阿里云数据管理DMS企业版&#xff0c;作为数据管理产品大家族里的新成员&#xff0c;于2017年11月开启公测&#xff0c;今年1月底正式发布商业化版本。 作为业界领先的面向企业的数据库DevOps解决方案&#xff0c;DMS企业版旨在帮助企业安全、高效的使用数据库…

flowable实战(四)flowable任务实例管理接口

文章目录1. 任务办理模式分两种1.1. 一种直接办理模式1.2. 一种需要签收后再办理2. 转办任务3. 委派任务与代办任务4. 待办任务列表5. 待办签收列表6. 抄送任务7. 终止任务&#xff08;这个功能放到流程实例中&#xff09;8. 催办任务9. 驳回10. 超时自动跳转完成11. 任务按业务…

架构设计之「 微服务入门 」

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 奎哥来源 | 不止思考微服务这几年不可谓不火&#xff0c;很多技术团队都开始在自己的项目上引入了微服务。一方面这些团队确实很好的推动了微服务的应用和发展&#xff0c;另一方面也可以看到一些盲目追技术热点的行为所带来…

Java语言中提供了三个日期类_Java语言学习(5)-Java中基础封装类(日期、时间类)...

日期和时间封装类1、 Data类Java日期和时间采用Data类。Data类在java.util包中。Data类构造函数&#xff1a;1) Data() 采用当前时间初始化对象&#xff1b;2) Data(long millisec) 采用1970年1月1日起时间毫秒数来初始化对象。Data类的方法&#xff1a;1) …

提升研发效率 保障数据安全——阿里云宣布数据管理DMS企业版正式商业化

摘要&#xff1a; 阿里云数据管理DMS企业版&#xff0c;作为数据管理产品大家族里的新成员&#xff0c;于2017年11月开启公测&#xff0c;今年1月底正式发布商业化版本。 作为业界领先的面向企业的数据库DevOps解决方案&#xff0c;DMS企业版旨在帮助企业安全、高效的使用数据库…

flowable实战(五)flowable驳回/退回上一步/退回到

一、驳回/退回上一步/退回到&#xff08;历史某一个节点&#xff09; 我们经常需要工作流中退回上一步&#xff0c;或者退回历史某一个节点。但由于流程的场景是很复杂的&#xff0c;回退有以下一些场景&#xff1a;1.串行路线上的退回&#xff1a;流程中没有任何网关&#xff…

全链路压测一招搞定,阿里云性能测试铂金版发布

摘要&#xff1a; 阿里云性能测试&#xff08;Performance Testing Service&#xff09;是卓越的SaaS性能测试平台&#xff0c;具备强大的分布式压测能力&#xff0c;可模拟海量用户的真实业务场景&#xff0c;让所有性能问题无所遁形。近日&#xff0c;PTS宣布推出了基于阿里双…

老司机教你分析日志:分析用户的地理位置信息

摘要&#xff1a; 地理位置的需求 通常我们分析用户的需求&#xff0c;了解到用户当前位置在哪里非常重要&#xff0c;例如&#xff0c;可以根据用户的地理位置&#xff0c;针对性的推广本地广告。 通常&#xff0c;我们可以在客户端获取定位权限来获取GPS信息。但是如果用户关…

java中的switch的规则_细细讲述Java技术开发的那些不为人知的规则

本文介绍的Java规则的说明分为3个主要级别&#xff0c;中级是平时开发用的比较多的级别&#xff0c;在今后将陆续写出其他的规则。遵守了这些规则可以提高程序的效率、使代码又更好的可读性等。一、在finally方法里关掉input或者output资源方法体里面定义了input或者output流的…

华为,百度豪投,这类程序员要再次上榜了!

前不久百度AI开发者大会&#xff0c;李彦宏高调宣布百度AI技术&#xff1b;同时&#xff0c;AI测试权威软件AI Benchmark的测试数据显示&#xff0c;中国华为研发的7nm旗舰手机芯片麒麟810的AI分数&#xff0c;远远超过美国高通骁龙855了&#xff01;早前华为就宣布&#xff1a…

认识阿里云的产品逻辑:基础设施必须必业务跑得快

摘要&#xff1a; &#xff08;本文根据海峰姐与狒哥的E企播报的直播访谈中进行整理解读&#xff1a; 原文来源&#xff1a;E企播报&#xff1a;阿里云、华为存储重压全闪存&#xff0c;英特尔美光劳燕分飞 作者&#xff1a;海峰姐 狒哥 地址&#xff1a;https://mp.weixin.qq.…

flowable实战(六)flowable的意见表和附件表应用

一、act_hi_comment和act_hi_attachment两表表&#xff0c;前者意见表后者是附件表 意见表它里面有一个类型type字段&#xff0c;分别是comment代表意见(这个type可以自定义,例如自定义为&#xff1a;通过/退回/提前终止&#xff09;&#xff0c;缺省提供了comment&#xff0c…

Serverless在游戏、电商行业的一个运用场景示例

摘要&#xff1a; Serverless 是一种架构理念&#xff0c;具有自己的独特的优势和适用场景。本文以使用阿里云函数计算为例&#xff0c;构建一个简单具体的microservice为例&#xff0c;看看这种架构是如何达到快速开发和节约运维成本的。 点此查看原文&#xff1a;http://clic…

java没有这样的元素异常_java – 没有这样的元素异常?

所以这是我的代码&#xff1a;public static void getArmor(String treasure)throws FileNotFoundException{Random randnew Random();Scanner filenew Scanner(new File ("armor.txt"));while(!file.next().equals(treasure)){file.next(); //stack trace error her…

SDN精华问答 | SDN的核心技术是什么?

SDN火热了好一阵子&#xff0c;无论运营商、政府企业、投资机构&#xff0c;一段时间&#xff0c;不知道SDN、不能甩几个SDN相关的名词术语&#xff0c;似乎都落后于时代了。今天&#xff0c;就来看看关于SDN的精华问答吧。1Q&#xff1a;SDN的目的是什么&#xff1f; A&#x…

RocksDB 写入流程详解

摘要&#xff1a; 最初的写入流程&#xff0c;继承自 leveldb&#xff0c;多个 写线程组成一个 group&#xff0c; leader 负责 group 的 WAL 及 memtable 的提交&#xff0c;提交完后唤醒所有的 follwer&#xff0c;向上层返回。 支持 allow_concurrent_memtable_write 选项&a…

flowable实战(八)flowable核心数据库表详细表字段说明

数据模型设计 清单 数据表分类描述ACT_GE_*通用数据表ACT_RE_*流程定义存储表ACT_ID_*身份信息表ACT_RU_*运行时数据库表ACT_HI_*历史数据库表 通用数据库 数据表描述ACT_GE_PROPERTY属性表(保存流程引擎的kv键值属性)–PropertyEntityImplACT_GE_BTYEARRAY资源表(存储流程定…