開発者向けワークフロー・オーケストレーションツール
Camundaを用いたマイクロサービスワークフローオーケストレーション
私自身のブログhttps://tkssharma.com/Microservices-workflow-Orchestration-using-Camunda/
目的-このブログの目的は、イベントバスとしてCamundaワークフローエンジンを考慮したイベント駆動型アーキテクチャでCamundaを使用してプロジェクトのワークフローを調整することです
Camundaプラットフォームは、オープンソースのワークフローと意思決定の自動化プラットフォームです.ワークフローと決定モデルを作成するためのツールとCamundaプラットフォームの船は、生産の展開モデルを操作し、ユーザーがそれらに割り当てられたワークフロータスクを実行できるようにする
ワークフロー-ビジネスプロセスモデリング表記法(BPMN)は、ビジネス分析アプリケーションのための視覚モデル化言語であり、ビジネスプロセス
ワークフローのオーケストレーションは、ワークフローまたは複数のタスクの自動化です.言い換えると、オーケストレーションは単一の重要なプロセスまたはワークフローを実行するために複数の自動化された仕事を扱います.
ワークフローは、これらの手順の間のタスクとデータプロセスのセット、または一連のセットです.
ワークフローエンジンは、情報、タスク、およびイベントの流れを容易にします.そして、全体的にワークフロータスク、成功、失敗、再試行の実行状態を管理します.CamundaエンジンはJavaで構築され、任意の外部クライアントとREST APIの統合を提供します.
ワークフロー基本要素https://camunda.com/bpmn/reference/
マイクロサービスによるプロジェクトワークフロー
実作業例
私たちには特定の要件があります.そこでは、プロジェクトを構築したり、ビジネスを自動化するために独自のワークフロープロセスを持つことができます.
簡単な例はITサービスのための購買であり、1つの購入者が来て定義されたワークフローを使用してサービスを取得するために自分のワークフローを定義し、購入者がプロジェクトを作成し、ステークホルダーを定義し、プロジェクトの定義をサプライヤーに送る.
このワークフローは、異なる購入者のために異なることができますし、彼らの組織のニーズに基づいてカスタマイズする自由をしたい.
このようなシナリオでは、Camundaは、すべてのクライアントのビジネスワークフローを定義するのに役立ちますし、それらを視覚的に描画するためにCamundaモデラーを使用することができます.
ここで、チャレンジは、どのように、我々はマイクロサービスのセットを持っている同じプロジェクトのためにすべてのクライアントの異なるワークフローニーズを管理することができる方法です.
我々は、クライアントによって設計されたワークフローに基づいて任意の順序ですべてのこれらのタスクを行うことができるオーケストレーションの分離された方法を提供する必要があるすべてのこれらのタスクを行うことができるサービスの一般的なセットを持っている.
このアーキテクチャの設計
簡単なイベント駆動型アーキテクチャは、イベントバスからのイベントを聞いているデフラグされたサービスではなく、イベントの原点に気づかず、その純粋にイベント駆動されたイベントが発生し、リスナーサービスがそれに作用する.今、このアプローチは良いですが、我々はシステム上のトラックを持っていないシステムの状態を認識していないと全体的には、システム内で起こっていることは、任意の時点では知られていないです.
現在、我々がちょうどイベントバスを交換して、ワークフローエンジンを置くならば、それはまだリスナMicroServiceの同じセットです.
動作方法
Task 1 ---> External Command ----> if Completed ----> Task 2 ----> if Completed –-> Task -3
我々が持っているすべてのリソース
どのように我々はイベントバスとしてCamundaを使用することができます
イベント駆動型アーキテクチャは、イベントを使用して、切り離したサービスの間でトリガーして、通信して、マイクロサービスで造られる現代のアプリケーションで一般的です.イベントは、電子商取引のウェブサイト上のショッピングカートに置かれているアイテムのような状態、または更新の変更です.イベントはいずれかの状態(購入されたアイテム、その価格、配達先)を運ぶことができます.イベントは識別子(通知が出荷されたという通知)になります.
イベント駆動型アーキテクチャには3つの重要なコンポーネントがあります:イベントプロデューサー、イベントルータ、イベント消費者.プロデューサーはイベントをルータに発行します.そして、それはフィルタを消費者にフィルターして、押します.プロデューサーサービスと消費者サービスは切り離されます.そして、それは彼らがスケーリングされて、更新されて、独立して配備されるのを許します.
今、我々はイベントバスを持っていないと言うと我々はイベントバスとして使用Camundaをしたい
イベントバスとしてCamundaを使用する利点
イベントバスとしてのCamunaとCamunda
Camundaバスはワークフローサービスタスクを
今、我々はどのように我々は、クライアントのワークフローに基づいてCamundaにアクションを送信しているUIを持って、この全体のアーキテクチャを設計する必要があります
Camundaクライアントは別の言語で利用可能です
Camundaが外部のタスクを実行する必要があるとき、このクライアントがその世話をするように、あなたはそれを理解することができます
const { Client, logger } = require("camunda-external-task-client-js");
// configuration for the Client:
// - 'baseUrl': url to the Process Engine
// - 'logger': utility to automatically log important events
const config = { baseUrl: "http://localhost:8080/engine-rest", use: logger };
// create a Client instance with custom configuration
const client = new Client(config);
// susbscribe to the topic: 'creditScoreChecker'
client.subscribe("creditScoreChecker", async function({ task, taskService }) {
// Put your business logic
// complete the task
await taskService.complete(task);
});
現在、このアーキテクチャは、ワークフローサービスを外部ワークに対処するためにCamundaとListernerサービスと話をするためのワークフローサービスを持っています.私はCamundaを使用してCamundaとマイクロサービスのオーケストレーションについてすべてをカバーしました
リンクはこちら
参考文献
Reference
この問題について(開発者向けワークフロー・オーケストレーションツール), 我々は、より多くの情報をここで見つけました https://dev.to/tkssharma/camunda-a-bpmn-tool-for-developers-41n0テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol