開発者向けワークフロー・オーケストレーションツール



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エンジンを実行して、クライアントによって定義されたワークフローを実行することができます
  • APIとGETタスクを実行できるマイクロサービス
  • 我々は、ワークフローを定義するCamundaモデラーを持っている

  • どのように我々はイベントバスとしてCamundaを使用することができます
    イベント駆動型アーキテクチャは、イベントを使用して、切り離したサービスの間でトリガーして、通信して、マイクロサービスで造られる現代のアプリケーションで一般的です.イベントは、電子商取引のウェブサイト上のショッピングカートに置かれているアイテムのような状態、または更新の変更です.イベントはいずれかの状態(購入されたアイテム、その価格、配達先)を運ぶことができます.イベントは識別子(通知が出荷されたという通知)になります.
    イベント駆動型アーキテクチャには3つの重要なコンポーネントがあります:イベントプロデューサー、イベントルータ、イベント消費者.プロデューサーはイベントをルータに発行します.そして、それはフィルタを消費者にフィルターして、押します.プロデューサーサービスと消費者サービスは切り離されます.そして、それは彼らがスケーリングされて、更新されて、独立して配備されるのを許します.
    今、我々はイベントバスを持っていないと言うと我々はイベントバスとして使用Camundaをしたい

    イベントバスとしてCamundaを使用する利点
  • Camundaはシステム全体の状態を管理できる
  • Camundaはドライバとして機能し、このタスクを
  • Camundaワークフローは、定義されたシーケンス内の異なるマイクロサービスによっていっぱいに満たされたタスクを持つことができます.
  • Camundaは異なるマイクロサービスと話をすることによってこれらのタスクを実行できるイベントバスとして機能しています.

  • イベントバスとしてのCamunaとCamunda

    Camundaバスはワークフローサービスタスクを
    今、我々はどのように我々は、クライアントのワークフローに基づいてCamundaにアクションを送信しているUIを持って、この全体のアーキテクチャを設計する必要があります
  • 私たちはアクションを送信するUIを反応している
  • 我々は、タスクを完了し、DBにデータを格納するいくつかのマイクロサービスを持っている.
  • 私たちはCamundaタスクを実行するCamundaエンジンを持っている
  • Camundaエンジンは、私たちがUIまたは郵便配達人を使用して、あるいは、Camundaを呼ぶのを管理するマイクロサービスを置くことによって、私たちがExcateできることができる休息APIを露出させます、そして、また、私たちは、Camundaがサービス・タスクを使用して外部呼び出しをする方法を理解する必要があります
    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とマイクロサービスのオーケストレーションについてすべてをカバーしました
    リンクはこちら
    参考文献
  • https://camunda.com/bpmn/reference/
  • https://docs.camunda.org/manual/7.16/
  • https://docs.camunda.org/get-started/