欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Activiti 工作流入門(mén)指南

概覽

如我們的介紹部分所述,Activiti目前分為兩大類(lèi):

如果你想上手Activiti的核心是否遵循了新的運行時(shí)API的入門(mén)指南:Activiti Core

如果你想基于Kuberantes構建Activiti,你可以參考Activiti Cloud HELM Charts:Activiti Cloud

Activiti Core入門(mén)

Activiti Core Runtime API入門(mén)

創(chuàng )建新API的目的明確,以滿(mǎn)足以下要求:

  • 為我們的云方法提供明確的途徑

  • 隔離內部和外部API以提供向后兼容性

  • 遵循單一責任方法,提供模塊化的未來(lái)之路

  • 減少以前版本的API的混亂

  • 將安全和身份管理作為一等公民

  • 減少您希望依賴(lài)流行框架提供的約定的常見(jiàn)用例的價(jià)值時(shí)間

  • 提供底層服務(wù)的替代實(shí)現

  • 使社區能夠在尊重既定合同的同時(shí)進(jìn)行創(chuàng )新

我們尚未棄用舊API,因此您仍然可以自由使用它,但我們強烈建議您使用新API以獲得長(cháng)期支持。

我們尚未棄用舊API,因此您仍然可以自由使用它,但我們強烈建議您使用新API以獲得長(cháng)期支持。

是時(shí)候通過(guò)幾個(gè)示例項目弄清楚了 。

TaskRuntime API

如果要構建業(yè)務(wù)應用程序,則可以為組織中的用戶(hù)和組創(chuàng )建任務(wù)。

TaskRuntime API可以幫助您。

您可以從GitHub克隆這個(gè)例子:https://github.com/Activiti/activiti-examples

本節中的代碼可以在“activiti-api-basic-task-example”maven模塊中找到。

如果您在Spring Boot 2應用程序中運行,則只需添加activiti-spring-boot-starter依賴(lài)項和DB驅動(dòng)程序,您可以將H2用于內存存儲。

https://github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-task-example/pom.xml#L45

<dependency>    <groupId>org.activiti</groupId>    <artifactId>activiti-spring-boot-starter</artifactId></dependency><dependency>    <groupId>com.h2database</groupId>    <artifactId>h2</artifactId></dependency>

我們建議使用我們的BOM(物料清單)

https://github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-task-example/pom.xml#L30

<dependencyManagement>    <dependencies>        <dependency>            <groupId>org.activiti</groupId>            <artifactId>activiti-dependencies</artifactId>            <version>7.0.0.Beta1</version>            <scope>import</scope>            <type>pom</type>        </dependency>    </dependencies></dependencyManagement>

現在讓我們切換到我們的DemoApplication.class : https://github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-task-example/src/main/java/org/activiti/examples/DemoApplication.java#L25

現在讓我們切換到我們的DemoApplication.class

@Autowiredprivate TaskRuntime taskRuntime;

將bean注入應用程序后,您應該能夠創(chuàng )建任務(wù)并與任務(wù)交互。

public interface TaskRuntime {  TaskRuntimeConfiguration configuration();  Task task(String taskId);  Page tasks(Pageable pageable);  Page tasks(Pageable pageable, GetTasksPayload payload);  Task create(CreateTaskPayload payload);  Task claim(ClaimTaskPayload payload);  Task release(ReleaseTaskPayload payload);  Task complete(CompleteTaskPayload payload);  Task update(UpdateTaskPayload payload);  Task delete(DeleteTaskPayload payload);  ...}

例如,您可以通過(guò)執行以下操作來(lái)創(chuàng )建任務(wù):

https://github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-task-example/src/main/java/org/activiti/examples/DemoApplication.java#L45

taskRuntime.create(            TaskPayloadBuilder.create()                .withName("First Team Task")                .withDescription("This is something really important")                .withGroup("activitiTeam")                .withPriority(10)           .build());

只有屬于activitiTeam的用戶(hù)和所有者(當前登錄的用戶(hù))才能看到此任務(wù)。

您可能已經(jīng)注意到,您可以使用TaskPayloadBuilder以流暢的方式參數化將要發(fā)送到TaskRuntime的信息。

為了處理安全性,角色和組,我們依賴(lài)于Spring Security模塊。因為我們在Spring Boot應用程序中,所以我們可以使用UserDetailsService來(lái)配置可用用戶(hù)及其各自的組和角色。我們目前在@Configuration類(lèi)中執行此操作:https//github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-task-example/src/main/java/org/activiti/examples /DemoApplicationConfiguration.java#L26

需要注意的一點(diǎn)是,為了與用戶(hù)交互TaskRuntime API,您需要具有以下角色:ACTIVITI_USER(授權機構:ROLE_ACTIVITI_USER)。

雖然與REST端點(diǎn)交互授權機制將建立在當前登錄的用戶(hù),但對于例如起見(jiàn),我們使用的是實(shí)用類(lèi)(https://github.com/Activiti/activiti-examples/blob/master/activiti -api-basic-task-example / src / main / java / org / activiti / examples / SecurityUtil.java#L26)允許我們在上下文中設置手動(dòng)選擇的用戶(hù)。請注意,除非您正在嘗試并且想要在不通過(guò)REST端點(diǎn)的情況下更改用戶(hù),否則不應該這樣做。查看“web”示例以查看根本不需要此實(shí)用程序類(lèi)的更多真實(shí)場(chǎng)景。

從示例中突出顯示的最后一件事是任務(wù)事件監聽(tīng)器的注冊:

https://github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-task-example/src/main/java/org/activiti/examples/DemoApplication.java#L89

@Beanpublic TaskRuntimeEventListener taskAssignedListener() {  return taskAssigned           -> logger.info(                 ">>> Task Assigned: '"                + taskAssigned.getEntity().getName()                +"' We can send a notification to the assignee: "                + taskAssigned.getEntity().getAssignee());}

您可以根據需要注冊任意數量的TaskRuntimeEventListeners。這將使您的應用程序能夠通過(guò)服務(wù)觸發(fā)的運行時(shí)事件得到通知。

ProcessRuntime API

以類(lèi)似的方式,如果要開(kāi)始使用ProcessRuntime API,則需要包含與以前相同的依賴(lài)項。我們的目標是在未來(lái)提供更多的靈活性和單獨的運行時(shí),但是現在相同的Spring Boot Starter提供了TaskRuntime和ProcessRuntime API。

本節中的代碼可以在“activiti-api-basic-process-example”maven模塊中找到。

public interface ProcessRuntime {  ProcessRuntimeConfiguration configuration();  ProcessDefinition processDefinition(String processDefinitionId);  Page processDefinitions(Pageable pageable);  Page processDefinitions(Pageable pageable,              GetProcessDefinitionsPayload payload);  ProcessInstance start(StartProcessPayload payload);  Page processInstances(Pageable pageable);  Page processInstances(Pageable pageable,              GetProcessInstancesPayload payload);  ProcessInstance processInstance(String processInstanceId);  ProcessInstance suspend(SuspendProcessPayload payload);  ProcessInstance resume(ResumeProcessPayload payload);  ProcessInstance delete(DeleteProcessPayload payload);  void signal(SignalPayload payload);  ...}

與TaskRuntime API類(lèi)似,為了與ProcessRuntime API交互,當前登錄的用戶(hù)需要具有角色“ACTIVITI_USER”。

首先,讓我們自動(dòng)裝配我們的ProcessRuntime:

https://github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-process-example/src/main/java/org/activiti/examples/DemoApplication.java#L32

@Autowiredprivate ProcessRuntime processRuntime;?@Autowiredprivate SecurityUtil securityUtil;

與以前一樣,我們需要SecurityUtil幫助器來(lái)代表我們與API交互的用戶(hù)進(jìn)行定義。

現在我們可以開(kāi)始與ProcessRuntime進(jìn)行交互:

https://github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-process-example/src/main/java/org/activiti/examples/DemoApplication.java#L47

Page processDefinitionPage = processRuntime                                .processDefinitions(Pageable.of(0, 10));logger.info("> Available Process definitions: " +                  processDefinitionPage.getTotalItems());for (ProcessDefinition pd : processDefinitionPage.getContent()) {  logger.info("\t > Process definition: " + pd);}

流程定義需要放在/ src / main / resources / processes /中。對于此示例,我們定義了以下過(guò)程:

我們使用Spring Scheduling功能每秒啟動(dòng)一個(gè)進(jìn)程,從數組中獲取隨機值來(lái)處理:

https://github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-process-example/src/main/java/org/activiti/examples/DemoApplication.java#L67

@Scheduled(initialDelay = 1000, fixedDelay = 1000)public void processText() {  securityUtil.logInAs("system");  String content = pickRandomString();  SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yy HH:mm:ss");  logger.info("> Processing content: " + content                    + " at " + formatter.format(new Date()));  ProcessInstance processInstance = processRuntime                  .start(ProcessPayloadBuilder                       .start()                       .withProcessDefinitionKey("categorizeProcess")                       .withProcessInstanceName("Processing Content: " + content)                       .withVariable("content", content)                       .build());  logger.info(">>> Created Process Instance: " + processInstance);}

這些連接器使用Bean名稱(chēng)自動(dòng)連接到ProcessRuntime,在此示例中為“processTextConnector”。這個(gè)bean名稱(chēng)是從我們的流程定義中的serviceTask元素的implementation屬性中獲取的:

https://github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-process-example/src/main/resources/processes/categorize-content.bpmn20.xml#L22

<bpmn:serviceTask id="Task_1ylvdew" name="Process Content" implementation="processTextConnector">

這個(gè)新的Connector接口是JavaDelegates的自然演變,新版本的Activiti Core將嘗試通過(guò)將它們包裝在Connector實(shí)現中來(lái)重用JavaDelagates:

public interface Connector {  IntegrationContext execute(IntegrationContext integrationContext);}

連接器接收帶有過(guò)程變量的IntegrationContext,并返回一個(gè)修改后的IntegrationContext,其結果需要映射回過(guò)程變量。

在前面的示例中,連接器實(shí)現正在接收“content”變量并基于內容處理邏輯添加“approved”變量。

在這些連接器中,您可能包括系統到系統調用,例如REST調用和基于消息的交互。這些交互往往變得越來(lái)越復雜,因此我們將在未來(lái)的教程中看到如何從ProcessRuntime(云連接器)的上下文之外的運行中提取這些連接器,從而將這些外部交互的責任分離出去。 ProcessRuntime范圍。

檢查maven模塊activiti-api-spring-integration-example以獲得更高級的示例,使用Spring Integrations基于File輪詢(xún)器來(lái)啟動(dòng)進(jìn)程。

完整的例子

您可以使用ProcessRuntime和TaskRuntime API找到一個(gè)示例來(lái)自動(dòng)執行以下過(guò)程:

本節中的代碼可以在“activiti-api-basic-full-example”maven模塊中找到。

僅作為ProcessRuntime示例,這也是對某些輸入內容進(jìn)行分類(lèi),但在這種情況下,該進(jìn)程依賴(lài)于Human Actor來(lái)決定是否批準內容。我們像以前一樣有一個(gè)計劃任務(wù),每5秒創(chuàng )建一個(gè)新的流程實(shí)例,模擬用戶(hù)檢查是否有可用的任務(wù)。

https://github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-full-example/src/main/java/org/activiti/examples/DemoApplication.java#L63

https://github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-full-example/src/main/java/org/activiti/examples/DemoApplication.java#L85

UserTask創(chuàng )建給一組潛在的用戶(hù),在本例中為“activitiTeam”組。但在這種情況下,我們不會(huì )像第一個(gè)示例那樣手動(dòng)創(chuàng )建任務(wù)。每次啟動(dòng)進(jìn)程時(shí),流程實(shí)例都會(huì )為我們創(chuàng )建任務(wù)。

https://github.com/Activiti/activiti-examples/blob/master/activiti-api-basic-full-example/src/main/resources/processes/categorize-human-content.bpmn20.xml#L38

<bpmn:userTask id="Task_1ylvdew" name="Process Content">  <bpmn:incoming>SequenceFlow_09xowo4</bpmn:incoming>  <bpmn:outgoing>SequenceFlow_1jzbgkj</bpmn:outgoing>  <bpmn:potentialOwner>    <bpmn:resourceAssignmentExpression>      <bpmn:formalExpression>activitiTeam</bpmn:formalExpression>    </bpmn:resourceAssignmentExpression>  </bpmn:potentialOwner></bpmn:userTask>

屬于該組的用戶(hù)將能夠聲明并處理該任務(wù)。

我們建議您運行這些示例并進(jìn)行實(shí)驗,如果您有疑問(wèn)或發(fā)現問(wèn)題,請與我們聯(lián)系。

概要

在這篇博文中,我們已經(jīng)了解了如何開(kāi)始使用新的Activiti Core Beta1項目中的新ProcessRuntime和TaskRuntime API。

我們建議您檢查Activiti的例子庫,為更多的例子:https://github.com/Activiti/activiti-examples

幫助我們編寫(xiě)更多這些示例可能是一個(gè)非常好的初始社區貢獻。如果您有興趣,請聯(lián)系我們,我們非常樂(lè )意為您提供指導。

如果您對這些示例和教程有疑問(wèn)或反饋,請隨時(shí)通過(guò)Gitter與我們聯(lián)系:https://gitter.im/Activiti/Activiti7 ? utm_source = share-link utm_medium = link utm_campaign = share-link 。

更多博客文章將介紹Runtime Admin API以及如何調整這些示例以在我們的新Activiti Cloud方法中執行。

原文地址:https://blog.csdn.net/tanjie_123/article/details/82598157       
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
SpringBoot整合Flowable快速實(shí)現工作流,so easy!
jbpm4.4 Api 示例
使用 Spring Data Repositories
BPMN2新規范與Activiti5
平衡式構圖
[轉載]Drools 5.1.1(1)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久