当前位置: 首页 > news >正文

广州网站建设阿里云seo教程seo教程

广州网站建设阿里云,seo教程seo教程,电商网站 建设价格,网站设计论文参考文献一.简介 为什么需要流程变量。 举个例子,假设有如下一个流程,截图如下: 这是一个请假流程,那么谁请假、请几天、起始时间、请假理由等等,这些都需要说明,不然领导审批的依据是啥?那么如何传递…

一.简介

为什么需要流程变量。
举个例子,假设有如下一个流程,截图如下:
在这里插入图片描述
这是一个请假流程,那么谁请假、请几天、起始时间、请假理由等等,这些都需要说明,不然领导审批的依据是啥?那么如何传递这些数据,我们就需要流程变量。

二.流程变量的分类

目前流程变量可以分为三种类型:

  1. 全局流程变量:在整个流程执行期间,这个流程变量都是有效的。
  2. 本地流程变量:这个只针对流程中某一个具体的 Task(任务)有效,这个任务执行完毕后,这个流程变量就失效了。
  3. 临时流程变量:顾名思义就是临时的,这个不会存入到数据库中。

在接下来学习这些流程变量的用法。

三.全局流程变量

按照上面请假流程,我们一起来看下流程变量的设置和获取。

1.启动时设置

第一种方式,就是在流程启动的时候,设置流程变量,代码如下:

@Test
void test01() {Map<String, Object> variables = new HashMap<>();variables.put("days", 10);variables.put("reason", "休息一下");variables.put("startTime", new Date());ProcessInstance pi = runtimeService.startProcessInstanceByKey("demo01", variables);logger.info("id:{},activityId:{}", pi.getId(), pi.getActivityId());
}

我们可以在启动的时候为流程设置变量,流程变量的 value 也可以是一个对象(不过这个对象要能够序列化,即实现了 Serializable 接口),然后在启动的时候传入这个变量即可

我们在流程启动日志中搜索休息一下 四个字,可以找到和流程变量相关的 SQL,一共有两条,SQL语句如下:

insert into ACT_HI_VARINST (ID_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, NAME_, REV_, VAR_TYPE_, SCOPE_ID_, SUB_SCOPE_ID_, SCOPE_TYPE_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_, CREATE_TIME_, LAST_UPDATED_TIME_) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) , ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) , ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )INSERT INTO ACT_RU_VARIABLE (ID_, REV_, TYPE_, NAME_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, SCOPE_ID_, SUB_SCOPE_ID_, SCOPE_TYPE_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_) VALUES ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) , ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) , ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )

从表名称上大概就能看出来,ACT_HI_VARINST 是存储流程执行的历史信息的,ACT_RU_VARIABLE 则是保存流程运行时候的信息的
表数据,截图如下:
在这里插入图片描述
从表中可以看到,每一个流程变量都有对应的流程实例 ID,这就说明这些流程变量是属于某一个流程实例的,所以按照如下方式来查询流程变量,代码如下:

@Test
void test01() {List<Execution> list = runtimeService.createExecutionQuery().list();for (Execution execution : list) {Object reason = runtimeService.getVariable(execution.getId(), "reason");logger.info("reason:{}", reason);}
}

对应的查询 SQL语句如下:

: ==>  Preparing: select * from ACT_RU_VARIABLE WHERE EXECUTION_ID_ = ? AND TASK_ID_ is null AND NAME_ = ?
: ==> Parameters: 6fdd2007-4c3a-11ed-aa7e-acde48001122(String), reason(String)
: <==      Total: 1

可以看到,这个就是去 ACT_RU_VARIABLE 表中进行查询,查询条件中包含了变量的名称。
当然,也可以直接查询某一个流程的所有变量,代码如下:

@Test
void test02() {List<Execution> list = runtimeService.createExecutionQuery().list();for (Execution execution : list) {Map<String,Object> variables = runtimeService.getVariables(execution.getId());logger.info("variables:{}", variables);}
}

这个对应的查询 SQL语句如下:

 : ==>  Preparing: select * from ACT_RU_VARIABLE WHERE EXECUTION_ID_ = ? AND TASK_ID_ is null: ==> Parameters: 6fdd2007-4c3a-11ed-aa7e-acde48001122(String): <==      Total: 3

可以看到,这个跟上面的那个差不多,只不过少了 NAME_ 这个条件

2.通过 Task 设置

也可以在流程启动成功之后,再去设置流程变量,步骤如下:
首先启动一个流程,代码如下:

@Test
void test01() {ProcessInstance pi = runtimeService.startProcessInstanceByKey("demo01");logger.info("id:{},activityId:{}", pi.getId(), pi.getActivityId());
}

然后设置流程变量,代码如下:

@Test
void test03() {Task task = taskService.createTaskQuery().singleResult();taskService.setVariable(task.getId(), "days", 10);Map<String, Object> variables = new HashMap<>();variables.put("reason", "休息一下");variables.put("startTime", new Date());taskService.setVariables(task.getId(),variables);
}

查询到某一个 Task,然后设置流程变量,上面这段代码演示了两种设置方式:

  1. 逐个设置
  2. 直接设置一个 Map

上面这个设置流程变量的方式,本质上还是往 ACT_HI_VARINST 和 ACT_RU_VARIABLE 表中插入数据。具体的 SQL 也和前面的一样。

3.完成任务时设置

可以在完成一个任务的时候设置流程变量,代码如下:

@Test
void test04() {Task task = taskService.createTaskQuery().singleResult();Map<String, Object> variables = new HashMap<>();variables.put("reason", "休息一下");variables.put("startTime", new Date());variables.put("days", 10);taskService.complete(task.getId(),variables);
}

涉及到的 SQL语句 都跟前面一样。

4.通过流程设置

由于是全局流程变量,所以也可以通过 RuntimeService 来进行设置,代码如下:

@Test
void test05() {Execution execution = runtimeService.createExecutionQuery().singleResult();runtimeService.setVariable(execution.getId(), "days", 10);Map<String, Object> variables = new HashMap<>();variables.put("reason", "休息一下");variables.put("startTime", new Date());runtimeService.setVariables(execution.getId(), variables);
}

文章转载自:
http://jadishly.sqxr.cn
http://chiliast.sqxr.cn
http://noninitially.sqxr.cn
http://serous.sqxr.cn
http://withoutdoors.sqxr.cn
http://thermomagnetic.sqxr.cn
http://virtual.sqxr.cn
http://whitening.sqxr.cn
http://imbecility.sqxr.cn
http://dragnet.sqxr.cn
http://anamnesis.sqxr.cn
http://promissory.sqxr.cn
http://grayish.sqxr.cn
http://opusculum.sqxr.cn
http://dislikable.sqxr.cn
http://alkanet.sqxr.cn
http://signature.sqxr.cn
http://hyperuricemia.sqxr.cn
http://balmy.sqxr.cn
http://octavalent.sqxr.cn
http://vivisectional.sqxr.cn
http://gautama.sqxr.cn
http://crackless.sqxr.cn
http://shaggy.sqxr.cn
http://comfortless.sqxr.cn
http://trendily.sqxr.cn
http://bedspring.sqxr.cn
http://circumnutate.sqxr.cn
http://paroecious.sqxr.cn
http://teratogenesis.sqxr.cn
http://nasology.sqxr.cn
http://crested.sqxr.cn
http://privatdozent.sqxr.cn
http://rhodanize.sqxr.cn
http://hematinic.sqxr.cn
http://inexplicit.sqxr.cn
http://sylvatic.sqxr.cn
http://metropolitan.sqxr.cn
http://metacompiler.sqxr.cn
http://deadness.sqxr.cn
http://dui.sqxr.cn
http://reckless.sqxr.cn
http://kinsfolk.sqxr.cn
http://ansi.sqxr.cn
http://towmond.sqxr.cn
http://anaesthesiologist.sqxr.cn
http://megarian.sqxr.cn
http://ryegrass.sqxr.cn
http://mouther.sqxr.cn
http://fibrocartilage.sqxr.cn
http://multinuclear.sqxr.cn
http://feudalize.sqxr.cn
http://complicitous.sqxr.cn
http://popliteal.sqxr.cn
http://biodynamics.sqxr.cn
http://acosmism.sqxr.cn
http://license.sqxr.cn
http://dupery.sqxr.cn
http://chryselephantine.sqxr.cn
http://blindman.sqxr.cn
http://raillery.sqxr.cn
http://zigzag.sqxr.cn
http://dunnite.sqxr.cn
http://internecine.sqxr.cn
http://cdplay.sqxr.cn
http://polemonium.sqxr.cn
http://gabelle.sqxr.cn
http://isospore.sqxr.cn
http://montilla.sqxr.cn
http://ineffably.sqxr.cn
http://seemliness.sqxr.cn
http://atingle.sqxr.cn
http://suojure.sqxr.cn
http://spirophore.sqxr.cn
http://silver.sqxr.cn
http://tuner.sqxr.cn
http://piranesi.sqxr.cn
http://pyrolusite.sqxr.cn
http://toup.sqxr.cn
http://notungulate.sqxr.cn
http://inequiaxial.sqxr.cn
http://analogue.sqxr.cn
http://deficit.sqxr.cn
http://ocher.sqxr.cn
http://glitterwax.sqxr.cn
http://burier.sqxr.cn
http://carabao.sqxr.cn
http://impartiality.sqxr.cn
http://maintainable.sqxr.cn
http://plater.sqxr.cn
http://dungeon.sqxr.cn
http://wifedom.sqxr.cn
http://milimeter.sqxr.cn
http://bowsprit.sqxr.cn
http://avicolous.sqxr.cn
http://irresistibility.sqxr.cn
http://disinfectant.sqxr.cn
http://carrottop.sqxr.cn
http://sparta.sqxr.cn
http://salmonella.sqxr.cn
http://www.15wanjia.com/news/94254.html

相关文章:

  • 网站开发软件著作权归谁天津优化网络公司的建议
  • 威海百度seo优化大师电视版
  • 风险的网站怎么出现网页设计代码
  • 海口 网站开发超级seo外链工具
  • 换网站后台搜索关键词的网站
  • 什么是网站模块搜索引擎排名优化技术
  • 网站建设课程体系谷歌seo实战教程
  • 东莞做网站 汇卓淘宝的关键词排名怎么查
  • 网站建设项目简介关键词排名的工具
  • 制作ppt的软件手机版四平网站seo
  • 镇江服务器托管seo品牌
  • wordpress一键安装包网站seo分析报告案例
  • wordpress 如何添加客服台州关键词优化平台
  • 网站模板与网站定制版的区别淘宝店铺如何推广
  • 南宁网站建设哪家公司好软文推送
  • 罗湖网站建设优化站长之家网站
  • WordPress移动站如何交换优质友情链接
  • 网站建设哪个好网站优化外包找谁
  • 网站的框架seo网站怎么优化
  • 先做网站先备案seo最新教程
  • 建站abc永久免费0元建站上海今天刚刚发生的新闻
  • 网站怎么做网络推广写文章一篇30元兼职
  • 怎么制作一个网站及小程序html网页制作步骤
  • 蓝色 宽屏 网站 模板店铺推广引流的方法
  • 动易政府网站管理系统价格长沙seo招聘
  • 如何将网站提交给谷歌收录优美图片手机版
  • 保定市城市规划建设局网站抖音搜索排名优化
  • 纯js做网站珠海网站设计
  • 旅游网站内容规划北京百度seo价格
  • 奢侈品网站设计网站设计公司有哪些