OutSystemsに備わったワークフローを構築する仕組みとして、BPT(Business Process Technology)があります。
Service Studioで、Action定義と同じイメージでグラフィカルにワークフローを組むことができます。
BPTは、EntityやOutSystemsのロジックから開始でき、割り当てられたユーザがタスクを操作するためのUI、ワークフローの進行状況を管理するためのUIがそろっています。
Table of Contents
概要
ここで作成するワークフローは、
- 名前だけを持つ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でワークフローの進捗状況等のログが確認できます。
コメント
こんにちは。OutSystemsの廣瀬です。
いつもながらですが、大変素晴らしい記事をありがとうございます!!
BPTは強力かつ複雑なところがあり、要望が多いわりには日本語の情報が少ないため、とても助かります。
重ねて、ご公開ありがとうございました。
こんにちは、コメントありがとうございます。
ワークフロー制御の複雑な部分をWebアプリケーションから切り離し、かつ同じ開発アプリケーションで作れる、いい機能ですよね。
情報がそろってもっと多くの人が使いやすくなるといいですね。
私もなるべく情報公開していこうと思います。