成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用流程 中的 DataObject 并為流程設置租戶

開發 前端
Flowable 中的租戶其實很好理解,其實就是在流程中,多一個一個 TenantID 加以區分每一個流程屬于哪個租戶。

不知道小伙伴們有沒有留意過,在 Flowable 流程圖的繪制過程中,我們可以編寫一個名為 dataObject 的元素,這個元素可以指定變量的 id、名稱以及數據類型等各種屬性,并且在流程實例啟動的時候,會自動將 dataObject 元素的信息轉換為流程實例變量,這個東西也蠻好玩的,今天松哥就帶領小伙伴們來捋一捋 Flowable 中的 dataObject。

1. 添加 dataObject

首先我們來看下,在流程繪制的過程中,如何去添加 dataObject 對象。

IDEA 上的 Flowable 流程圖繪制插件中還不能添加 dataObject 屬性,這個需要我們去 flowable-ui 中去添加。

我們來隨便繪制一個如下這樣簡單的流程圖:

圖片

看過松哥之前幾篇文章的小伙伴應該對這張圖很熟悉了,松哥這里也不多說。

我現在就想給這個流程圖,添加 dataObject 屬性,方式如下:

首先打開流程圖,不要選擇任何節點,在下方可以找到數據對象屬性,如下圖:

圖片

點擊之后,就可以添加 dataObject 了,如下:

圖片

配置完成之后,點擊保存按鈕。然后我們下載這個流程圖,下載之后,打開,我們會發現這次的 XMl 節點比之前的 XML 節點多出來了如下一些內容:

<dataObject id="name" name="流程繪制人" itemSubjectRef="xsd:string">
<extensionElements>
<flowable:value>javaboy</flowable:value>
</extensionElements>
</dataObject>
<dataObject id="site" name="流程作者網站" itemSubjectRef="xsd:string">
<extensionElements>
<flowable:value>www.javaboy.org</flowable:value>
</extensionElements>
</dataObject>
<dataObject id="date" name="流程繪制時間" itemSubjectRef="xsd:datetime">
<extensionElements>
<flowable:value>2022-09-23T00:00:00</flowable:value>
</extensionElements>
</dataObject>

2. 查詢 dataObject

接下來,按照之前文章介紹的方式,我們先來部署并啟動這個流程圖。

當流程部署成功之后,我們可以在 ACT_RU_VARIABLE 表中查看到 dataObject 中的數據,如下圖:

圖片

可以看到,dataObject 的數據是和執行實例 ID 以及流程實例 ID 相關的。

接下來,我們可以通過如下方式來查詢 ACT_RU_VARIABLE 表中的數據:

@Test
void test08() {
List<Execution> list = runtimeService.createExecutionQuery().list();
for (Execution execution : list) {
DataObject data = runtimeService.getDataObject(execution.getId(), "流程繪制人");
logger.info("key:{},name:{},value:{}",data.getDataObjectDefinitionKey(),data.getName(),data.getValue());
}
}

這里打印出來的信息就是我們剛剛在定義的時候配置的所有流程信息了。

我們來看看這里查詢的表:

圖片

可以看到,這里先去 ACT_RU_EXECUTION 表中查詢執行實例 ID,然后再根據拿到的執行實例 ID 去 ACT_RU_VARIABLE 表中查詢 dataObject 信息。

這就是 dataObject 的使用,其實非常 Easy!dataObject 平時主要可以用來定義一些全局的屬性。

3. 租戶

說到這里,就順便再來和小伙伴們聊一聊 Flowable 中的租戶。

租戶這個其實好理解,舉個栗子:

假設我們現在有 A、B、C、D 四個子系統,四個子系統都要部署同一個名為 leave 的流程,如何區分四個不同子系統的的流程呢?通過租戶可以解決這個問題。

Flowable 中的租戶其實很好理解,其實就是在流程中,多一個一個 TenantID 加以區分每一個流程屬于哪個租戶。

我舉個簡單的例子,假設我現在想要根據不同的子系統來部署流程,那么我可以按照如下方式來設計接口:

@RestController
public class ProcessDeployController {

@Autowired
RepositoryService repositoryService;

@PostMapping("/deploy")
public RespBean deploy(MultipartFile file,String tenantId) throws IOException {
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment()
.category("javaboy的工作流分類")
.name("javaboy的工作流名稱")
.addInputStream("fff.bpmn", file.getInputStream())
.tenantId(tenantId)
.key("javaboy的工作流key666");
Deployment deployment = deploymentBuilder
.deploy();
return RespBean.ok("部署成功",deployment.getId());
}
}

接下來我們通過 POSTMAN 來發送一個 POST 請求,提交流程圖和租戶 ID 這兩個參數,如下圖:

圖片

小伙伴們注意,我這里提交了兩個參數,一個是流程圖本身,還有一個是租戶 ID。

當這個流程圖部署成功之后,我們在流程定義表 ACT_RE_PROCDEF 中可以看到剛剛設置的租戶 ID:

圖片

接下來我們需要啟動流程實例的時候,就不能單純拿著流程部署的 ID 去啟動了,還得拿上流程的租戶 ID。如果只拿流程本身的信息去啟動,會拋出如下異常:

圖片

正確的啟動方式如下:

@Test
void test09() {
identityService.setAuthenticatedUserId("wangwu");
ProcessInstance pi = runtimeService.startProcessInstanceByKeyAndTenantId("leave","A");
logger.info("id:{},activityId:{}", pi.getId(), pi.getActivityId());
}

在后續的 Task 查詢中,我們也可以根據具體的租戶 ID 來查詢,這個就看具體情況了。

責任編輯:武曉燕 來源: 江南一點雨
相關推薦

2011-01-19 15:13:59

2023-09-18 08:00:00

Kubernetes容器集群

2016-08-29 20:51:16

awkLinux開源

2020-06-19 12:23:05

CIO數據分析技術

2015-08-06 10:28:24

git規范流程

2010-08-04 16:55:16

NFS服務

2015-10-20 11:22:34

iOS開發Git

2010-02-01 09:19:32

WF 4.0

2021-09-14 14:50:05

SASTDevSecOps應用安全

2010-08-24 11:00:55

DIV CSS

2024-09-06 10:25:32

人工智能ETL微服務

2021-08-27 14:48:09

數據

2010-07-02 12:11:08

DHCP協議

2022-04-14 16:00:51

事件響應流程企業

2020-09-22 09:46:11

機器人流程自動化RPA流程

2010-09-28 16:03:02

交換機設置dhcp

2021-12-13 10:10:15

IPtablesTCPLinux

2010-05-28 18:44:45

2009-07-09 17:07:13

JDK文檔

2022-10-27 14:18:13

Flowable流程變量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品在线国产 | 国产欧美一区二区三区日本久久久 | 一区二区视频免费观看 | 久久中文字幕一区 | 国产精品1区 | 免费激情网站 | 日本不卡一区二区三区在线观看 | 视频一二三区 | 国产在线精品一区二区 | 在线观看国产 | 色吧久久 | 午夜精品三区 | 99re国产视频 | 日韩免费视频 | 久久国产亚洲 | 亚洲视频免费 | 午夜精品久久久久久不卡欧美一级 | 国产高清在线精品 | 亚洲一二三区不卡 | 国产精品久久久久久久久久久久午夜片 | 亚洲激情综合网 | 国产一级影片 | 日韩中文字幕一区 | 日韩精品一区二区三区第95 | 成人免费视频网站在线看 | 四虎最新视频 | 久久综合一区 | 精品国产一区二区三区日日嗨 | 日韩欧美中文 | 成人在线视频网站 | 日韩在线精品强乱中文字幕 | 91大神在线看| 国产精品久久久久无码av | 亚洲一区二区三 | 亚洲国产欧美在线 | 在线一区二区三区 | 成人免费视频网站在线看 | 久久99精品久久久久 | 天天久久 | 91亚洲一区 | 国产 亚洲 网红 主播 |