4.3.2 ワークフローの設計
ワークフローの設計では、それぞれの業務のワークフローを作成し、申請や承認、またはタスク実行などの各アクティビティの内容や順序、アクティビティを実行できるロールなどをYAMLファイルで定義します。
アクティビティには様々な種類があり、申請内容の確認や承認、Playbookを使用した自動タスクなどがあります。また、任意のワークフローのステップごとにラベルをYAML定義することができます。ワークフロー一覧画面ではこのラベルごとに進捗度合が表示されます。
ワークフローの次のステップに遷移するには、各ステップの画面のアクションボタンをクリックします。アクションボタンにはOps Iで提供しているボタン(標準アクションボタン)とユーザーが独自に設定できるボタンがあります。また、UIバージョン1.1では、標準アクションボタンをカスタムして使用できます。詳細は「標準アクションボタンをカスタムしたい場合」を参照してください。
ワークフロー画面の構成については「ワークフロー」を、YAML定義については「Workflow」を参照してください。
項目 | 定義手段 | 設計のポイント |
---|---|---|
・Workflow | YAMLファイル | 設計する業務に、どのような作業や承認ステップが必要か、また、その作業をどのユーザーがどのロールで実行するのかを検討します。 |
ワークフローの設計は、対象の業務のステップとして必要なアクティビティを洗い出し、各アクティビティを実行できるロールの割り当てを行います。
注意事項
- ワークフローの最初の画面はサービスカタログ画面から新規ワークフローを開いた時、または未開始のワークフローを開いた時に表示されます。作業項目管理機能からワークフローを実行した場合は、最初の画面のタスクはユーザー入力を待たず次のタスクに遷移します。したがって、最初の画面のタスクで指定したグループやロールの設定は、新規ワークフローまたは未開始のワークフローを開く場合に適用されます。
- 1つのワークフローの中で複数のUIを指定する場合、Workflow定義の中で使用するUIバージョンは同じにする必要があります。UIバージョンの詳細は「UIバージョン」を参照してください。
以下はVM貸出申請を例としたワークフロー図で、アクティビティには申請や申請内容の確認などがあります。各アクティビティに必要なカラムはデータモデルにて定義します。
(表)VMの貸出を例としたワークフローのステップとロール一覧
作業名 | ワークフローステップ | 操作者 | ロール | UI | |||
---|---|---|---|---|---|---|---|
種別 | 名称 | アクション | 入力値の規則チェック | ||||
VMの貸出 | |||||||
申請 | 申請者 | Customer User | 申請に必要な情報やカラムはデータモデルで定義し、各カラムに対するアクションなどはUIで定義します。 | ||||
申請内容の確認 | 運用担当 | Operation Management Office Agent |
|||||
VMの生成 | (自動実行) | - | |||||
VMの生成の確認 | 運用担当 | Operation Management Office Agent |
|||||
承認 | 運用管理者 | Operation Management Office Manager |
なお、YAMLファイル定義において、ワークフローの起点となるステップへ、他のステップから遷移することはできません。申請内容の不備により、申請者に差し戻しを行う場合は、起点となるステップにガイダンス表示などのステップを作成しておくことで、ワークフローの起点となるステップが遷移先にならないよう設計してください。
データモデルの詳細については「データモデルの設計」、「Datamodel」を参照してください。
UIの詳細については「UI設計」、「UI」を参照してください。
その他、ユースケースに合わせて以下の機能を利用することができます。
(1)運用に必要なスキルをもったユーザーを設定したい場合
YAMLファイル「Skill」、「Skillset」で定義したスキルを、YAMLファイル「Workflow」でアクティビティごとに必要なスキルセット(スキルの組み合わせ)として設定することができます。スキルセットに合わせたユーザーのアサインはワークフロータブのStepper画面から実施できます。
アサインされたアクティビティは、ユーザーの業務経験に反映されリソースタブから確認することができます。また、スケジュールにも反映されスケジュールタブから確認することができます。
項目 | 定義手段 | 設計のポイント |
---|---|---|
skill、skillset | YAMLファイル | 運用に必要なスキルとスキルセット(スキルの組み合わせ)を設定できます。 |
workflow | YAMLファイル | 各アクティビティに必要なスキルセットを指定することができます。 |
ユーザーへのスキル付与 | GUI | リソースタブからユーザーにスキルを付与することができます。付与したスキルによって、自動でスキルセットも付与されます。 |
各アクティビティへユーザーをアサイン | GUI | スキルセット要件との適合率、経験回数、スケジュールを確認しユーザーをアサインすることができます。 |
YAMLファイルの詳細は「Workflow」、「UI」、「Skill、Skillset」、スキル設定の詳細は「スキル管理」、ユーザーのアサインは「ワークフロー」を参照ください。
(2)並列処理を行いたい場合
複数人で異なる作業を並列に行う場合や手動で作業すると同時に自動化スクリプトで並列に処理をする場合など、複数の並列処理はYAMLファイル「Workflow」でサブフローを定義することにより実施できます。設定したサブフローは、ワークフロータブでメインフローと同様にワークフロー一覧から管理することができます。
サブフローの機能には以下の特徴があります。
- 定義済のフローをサブフローとして利用できます。
- メインフローとサブフローの間でカスタムテーブルや添付ファイルのデータを共有することが可能です。
- 複数のアクティビティを並列実行する場合は、すべてのステップをサブフロー化する必要があります。
- サブフロー種別は以下の選択肢があります。
- static:メインフローの保存時点で、コンテキストを作成
- dynamic:サブフロー実行時にコンテキストを作成
YAMLファイルの詳細は「Workflow」、サブフローの操作画面については「ワークフロー」を参照ください。
(3)標準アクションボタンをカスタムしたい場合
アクションボタンには、Ops Iで用意したボタン(標準アクションボタン)と、ユーザーが独自に設定するボタンがあります。アクションボタンについては「(表)アクションボタンのタイプ(UIバージョン1.0)」、「(表)アクションボタンのタイプ(UIバージョン1.1)」を参照してください。
また、アクションボタン処理を行うときのワークフローの実行段階については「(図)ユーザーの操作とワークフローの実行段階の関係」を参照してください。
UIバージョン1.1の場合、標準アクションボタンをカスタムできます。標準アクションボタンをカスタムする場合、UIのYAMLファイルのbuttonsラベルに以下を指定します。
- type:標準アクションボタンのタイプ("custom"以外)
- action:標準アクションボタンをカスタムするための関数(イベントハンドラ)を定義したScriptファイル
UIのYAMLファイル(UIバージョン1.1)については「UI(UIバージョン1.1)」を参照してください。
関数(イベントハンドラ)はactionラベルに定義するScriptに記述します。Scriptに、ユーザーが自由に処理を定義することで、以下のような処理が可能になります。
- アクションボタンクリック後に処理の続行確認をする
(使用する関数:handleBeforeAction) - データが保存される前にデータの相関チェックを行う
(使用する関数:handleBeforeSave) - データ保存後に操作ログとして他のテーブルに情報を登録する
(使用する関数:handleAfterSave) - ワークフローの次のステップに遷移する前に、パラメータを渡す
(使用する関数:handleBeforeRequestWorkflow/handleBeforeResumeStep)
注意事項
データ保存の前にテーブルを更新しないでください。データ保存の前にテーブルを更新すると、データ保存時にバージョン不整合のエラーが出力されます。
標準アクションボタンをカスタムするための関数(イベントハンドラ)の詳細を以下に示します。関数の引数はありません。
(表)標準アクションボタンをカスタムするための関数(イベントハンドラ)
関数 | 実行タイミング | カスタム対象の標準アクションボタン | 返却値 |
---|---|---|---|
handleBeforeAction | ボタンクリック直後 | start/save/accept/reject/complete/edit(保存・破棄)/cancel | boolean
|
handleBeforeSave | データ保存前 | start/save/accept/reject/complete/edit(保存) | |
handleAfterSave | データ保存後 | ||
handleBeforeRequestWorkflow | ワークフローの次のステップへ遷移する前 | start | Object APIにわたす値をkey-value形式で返却する。「oi_」で始まる値はkeyに指定できない。 例:{paramA: 'aaa', paramB: 'bbb'} |
handleBeforeResumeStep | accept/reject/complete |
関数「handleBeforeRequestWorkflow」の戻り値は、以下のAPIによってワークフローのパラメータにセットされます。
POST: /practice-contexts/{id}/workflow/execute
{params: {paramA: 'aaa', paramB: 'bbb'}}
この場合、ワークフローのYAMLファイルには以下のように定義します。
input:
- paramA
- paramB
vars:
paramA:
type: string
paramB:
type: string
関数「handleBeforeResumeStep」の戻り値は、以下のAPIによってワークフローで受け取るパラメータにセットされます。
POST: /practice-contexts/{id}/{activity}
{oi_response: 'accept', paramA: 'aaa', paramB: 'bbb'}
この場合、ワークフローのYAMLファイルには以下のように定義します。
input:
schema:
type: object
properties:
oi_response:
type: string
required: true
paramA:
type: string
required: false
paramB:
type: string
required: false