OutSystemsでワークフローを開発するには?(vol.4)

  • 公開日:2022年05月23日(月)

OutSystems(アウトシステムズ)は、豊富な標準部品を利用することで様々なアプリケーションの超高速開発を実現できるローコード開発プラットフォームとして知られています。その特性から日本ではワークフローアプリケーション開発ツールとして注目されることが多くありますが、海外製品であるOutSystemsは日本特有の複雑なワークフローにどれくらい対応することが出来るのでしょうか?

本ブログでは、OutSystems開発においてワークフローアプリケーションを実装する際に活用できる機能を、実際のソースコードも交えて解説します。

OutSystemsでワークフローを作るための機能

OutSystemsでワークフローを作るための機能は、主に以下3つがあります。

  1. Workflow Builder
    Workflow Builderは、ライセンスがあれば追加料金なく使用できるSaaSです。
    ブラウザ上でフローを構成するだけで、画面などのその他の必要な機能がすべて揃ったアプリケーションを自動生成します。操作が単純なため、OutSystemsに詳しくないビジネスユーザーでもワークフローを作れます。
    ただしSaaSであるため、OutSystemsをオンプレで導入しており外部への接続が社内のセキュリティで制限されている場合はこの機能を使えません。また自動生成の対象である画面や詳細な処理をカスタマイズすることはできません。
  2. Process
    Processは、OutSystemsにおけるワークフロー機能の中核を担う機能です。
    前述のWorkflow BuilderもProcessの機能を利用しています。Processを使ったフローの構築は、開発ツール:ServiceStudioを使用します。同じくServiceStudioを使用して開発する画面、ロジック、データと連携して複雑なワークフローを構築することも可能です。
  3. CaseManagement Framework
    CaseManagement Frameworkは、Processの機能をプラットフォーム上でより汎用的に活用するためのフレームワークです。
    例えば、OutSystemsで複数のワークフローアプリケーションを開発する想定があり、それらを統合的に管理できる必要がある場合などにこのフレームワークを使用します。Processの拡張機能にあたるので、活用するにはまずProcessの機能を熟知している必要があり、やや上級者向けの機能となります。

つまり、OutSystemsにおけるワークフロー機能はすべてProcessを中核に成り立っています。もちろんProcessを使用せずにワークフローを開発することも可能ですが、開発効率ではProcessの方が勝るでしょう。

そこで次章からは、Processの詳細機能やProcessを使用したワークフローの作成方法を解説していきます。

OutSystemsのワークフロー機能の中核:Processを理解しよう!

Processを新規作成すると、StartからEndまでが一直線で結ばれた空のフローが表示されます。
フローを組む際に使えるプロセスフローツールは全部で9つあります。

プロセスフローツール解説

  1. Start

    ワークフローの始点です。指定したテーブルのレコードが作成された時や、ボタンが押された時など任意のタイミングで開始できます。
  2. Conditional Start

    指定したテーブルのレコードが作成または更新された時に開始できる、通常とは異なる始点です。通常のフローの進行中に強制終了させたい時などに使用します。
  3. Human Activity

    ユーザーに承認操作を割り当てます。特定のユーザーまたは特定のロールを持つすべてのユーザーに割り当てることができ、任意のタイミングで完了できます。承認対象のテーブルが更新された時に完了させるのが一般的です。
  4. Automatic Activity

    自動実行です。テーブルのレコードの更新やメールの送信など、フローが進むにつれて発生する処理を定義できます。
  5. Execute Process

    入れ子となるProcessを新しく開始します。入れ子の数に制限はありません。
  6. Wait

    特定のイベントが発生するまでフローを一時停止させ待機します。任意のタイミングで待機を終了できます。
  7. Decision

    フローを分岐させます。複数の分岐先を設定できます。
  8. Comment

    フローの構造を説明するためのコメントです。処理内容には影響しません。
  9. Process End

    フローの終了です。

OutSystemsのワークフロー機能の中核:Processで複雑なワークフローを実現できる?

Processで使うツールは9つのみと非常にシンプルですが、これらを使用して“複雑な”ワークフローは構築できるのでしょうか?
ワークフロー製品に備わっている「根回し」「AND承認」「差し戻し」の3つの機能を、Processを使って実装できるか検証してみます。

  • 前提
    Process機能を活用する上でも、申請内容やフローのステータスを保持するテーブル(エンティティ)は必要です。今回実装するサンプルでは、申請内容を保持する「Request」エンティティに、フローの進捗状況を示す「Status」静的エンティティの外部キーを持たせ、個々の申請のステータス情報を保持します。

    また「Request」エンティティに対し1対多の関係でフローの各ステップの詳細情報を保持する「Step」エンティティ、そしてその「Step」と1対多の関係で承認者情報を保持する「Approver」エンティティを作成します。
  1. 申請内容を根回し(事前通知)する
    ワークフローのスタート直後にAutomatic Activityを配置します。

    Automatic Activityでは、起票されたRequestIdをキーにして全てのステップの承認者全員を取得します。
    承認者のメールアドレスを取得してメール送信処理(SendEmail)を実行します。

    根回し対象のユーザーはエンティティに保存されているため、根回し機能の実現は簡単です。
  2. AND承認を得る
    事前通知を行ったら、第一段階の承認者をApproverエンティティから取得し、Human Activityの実施ユーザーに設定します。

    これはユーザー一人の承認で次のステップに進むOR承認です。
    ですが、Human Activityはそのままの仕様だとOR承認しか実現できません。
    では、AND承認はどのように実現すれば良いでしょうか?

    AND承認を実装した第二段階のフローを見てみましょう。
    第二段階の承認者取得処理では、Approverエンティティから、未承認(Approver.IsApproved=False)の承認者一人を抽出しています。
    この条件により、まずは一人目の承認を割り当てることができます。

    承認されるとDecisionに遷移します。ここでは第二段階として登録されている全てのApproverがIsApproved=Trueであるか、つまり全員承認したかを判別しています。
    全員の承認が完了していない場合はここで更新されたステータスを元の状態に戻してから、もう一度承認者取得処理に戻っています。
    こうすると一人だけが承認操作を行ったとしても、全員の承認が完了していないのでフローが戻って次の未承認ユーザーを取得し、Human Activityを割り当てなおすことになります。
    全ての承認者が完了するまで繰り返されるため、AND承認が実現されます。

  3. 特定の前段階に差し戻す
    ユーザーが承認を行う画面に、現状より前の段階を選択できるドロップダウンと、差し戻しボタンを用意します。

    ユーザーが差し戻しボタンを押した場合、RequestのStatusIdをユーザーが指定したものに更新します。
    Human Activityはその更新を検知して完了し、Decision内でその更新が承認なのか、差し戻しなのかを判別します。差し戻しであった場合は指定された前段階へフローを戻します。

このように、Processにある9つのツールのみでも複雑なワークフローを実現できます

まとめ

本ブログでは「ローコード開発プラットフォーム:OutSystemsでワークフローを開発するには?」と題し、OutSystems開発においてワークフローアプリケーションを実装する際に活用できる機能を解説して参りました。機能や使い方など、具体的にイメージいただけたかと思います。
この他にも、別システムから取得したデータによるフローの分岐や代理承認、段階のスキップなども実現可能です。
ただし、それぞれの機能はツールを適切に組み合わせて実装する必要があります。また、ローコード開発とはいえ、専用のパッケージ製品並みの機能をすべて作り込もうとすれば、それ相応の工数が必要となります。

OutSystemsはワークフロー製品ではなく、アプリケーション開発の“プラットフォーム”です。OutSystemsを「ローコードのワークフロー開発ツール」として評価した次には、「OutSystems(や他のローコード開発プラットフォーム)が、ワークフロー以外にどんな種類のアプリケーションを開発できるか」にも着目してみてください。皆さまのローコード改革を成功させるための大切な観点になるはずです。

本ブログは、2022年4月8日時点の情報をもとに作成しています。
OutSystemsに関する詳しいお問い合わせは、弊社Webサイトからお問い合わせください。
https://itsol.dentsusoken.com/outsystems/inquiry/