シンプルなBPTの実装例

OutSystemsに備わったワークフローを構築する仕組みとして、BPT(Business Process Technology)があります。

Service Studioで、Action定義と同じイメージでグラフィカルにワークフローを組むことができます。

BPTは、EntityやOutSystemsのロジックから開始でき、割り当てられたユーザがタスクを操作するためのUI、ワークフローの進行状況を管理するためのUIがそろっています。

概要

ここで作成するワークフローは、

  • 名前だけを持つEntityの新規登録を管理する
  • 画面から名前を入力して、追加を申請
  • 割当先ユーザーは、申請された名前をチェックして、承認または却下する

ものです。申請者をworkflow1ユーザ、承認者をworkflow2ユーザとします(Usersアプリケーションで作成しておきます)。

Entity

NameだけのEntityを作りました。

承認されたら、ワークフローによって、自動的に入力されたNameのレコードを1つ作成します。

画面(申請用)

上のEntityからスキャフォールディングで、画面を作ります(Entityを右クリック→Create List Screenなど)。

作成した画面に名前入力用のInputと、ワークフロー起動用のButtonを配置しました。

Input WidgetのNameプロパティには、画面のLocal Variable 「Name」(Text型)を設定しておきます。

ButtonのDestinationとして、以下のScreen Actionを設定。

OutSystemsではワークフローを「Process」という仕組みで実現します。

Processを作ると、Launch Processが自動作成されます(Launch Processを他のActionから呼び出すことで、ワークフローが始まる)。

つまり、Buttonクリックで、Inputに入力した名前をパラメータにワークフローを開始するActionになってます。

1ステップのプロセス

新しい名前を申請するワークフローという意味で「NameApplicationProcess」という名前にしました。作成するときは、Processes(Ctrl + 1) にあるProcessesフォルダを右クリックしてAdd Proessです。

申請する名前をInput ParameterのNameとして定義しました。これで、LaunchするときにNameをProcessに引き継げます。

Process内は、StartとEndの間にアイコン1つだけのシンプル構成です。

このアイコンはHuman Activityという種類で、誰か特定のユーザーにタスクを割り当て、そのタスクが終わるまでワークフローの進行を止めておく役割があります。

Userプロパティに、タスクを割り当てるユーザーを指定(ここでは、シンプルな例なので固定のユーザworkflow2のUser Identifierにしています)、Destinationは、タスクを割り当てられたユーザが、タスク内容を確認し何らかのアクションをとるための画面です。

申請(確認用)

タスクを割り当てられたユーザ(workflow2)がログインすると、画面の右下に、割り当てられたタスク数が表示されます。この数字をクリックするとタスク一覧のダイアログが表示され、個別のタスクを選択すると、ProcessのDestinationに設定した画面へ移動する流れ。

画面ではProcessからNameを受け取ってInputに表示し、承認ボタンがクリックされると、Entityにレコードを作成して、ワークフローを終わらせます。

画面のもう1つのInput Paramter  ActivityIdは、Process内で、個別のHuman Activityを表すID値です。Human Activity配置時に自動作成されるClose<Human Activity名>に渡して画面呼び出し元のHuman Activityを終了させるために使用します。

最後にスキャフォールディングで作成した画面へ遷移するので、今作成した名前のレコードも一覧に表示されるはずです。

ログ

Service Centerアプリケーションの、Monitoring > Processesでワークフローの進捗状況等のログが確認できます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. 廣瀬晃 より:

    こんにちは。OutSystemsの廣瀬です。
    いつもながらですが、大変素晴らしい記事をありがとうございます!!
    BPTは強力かつ複雑なところがあり、要望が多いわりには日本語の情報が少ないため、とても助かります。
    重ねて、ご公開ありがとうございました。

    • jyunji.watanabe より:

      こんにちは、コメントありがとうございます。
      ワークフロー制御の複雑な部分をWebアプリケーションから切り離し、かつ同じ開発アプリケーションで作れる、いい機能ですよね。
      情報がそろってもっと多くの人が使いやすくなるといいですね。
      私もなるべく情報公開していこうと思います。