6.1 Workflow
以下にWorkflow定義と定義例を示します。Workflow定義では、ワークフロー全体の定義を行う部分と個々のアクティビティの定義を行う部分の大きく2つに分類されます。ワークフローの詳細については「ワークフロー」と「ワークフローの設計」を参照してください。
| ラベル | デフォルト値 | 必須※ | 説明 | |||
|---|---|---|---|---|---|---|
| apiVersion: | Yes | APIバージョン 1.0を指定する |
||||
| kind: | Yes | workflowを指定する | ||||
| type: | No | resourceを指定する Ops Iの運用機能に追加する新しい定義であることを示す |
||||
| name: | Yes | Workflow定義の内部名 nameは以下のルールに従う必要があります。
|
||||
| label: | Yes | YAMLファイルに記載する運用機能の表示名 | ||||
| includes: | No | このYAMLファイルで利用する関連YAMLファイルを記載
メモ
|
||||
| - kind: | Yes | 読み込むYAMLファイルの種類 | ||||
| name: | Yes | 読み込むYAMLファイルの内部名 | ||||
| description: | No | このYAMLファイルに対する詳細説明 テンプレート機能を利用して記述することができる |
||||
| parameters: | No | ワークフローのパラメータ。 JSON Schemaで記述する。 |
||||
| steps: | No | ワークフローのステップを定義。 タスクの進行状況を表示するために使用する。 |
||||
| - name: | No | ステップ名 | ||||
| label: | No | ステップの表示名 | ||||
| description: | No | ステップの詳細説明 | ||||
| (workflow model): | Yes | ワークフローを定義。 StackStormで定義できるWorkflow Model内容を記述。 詳細は「(表)Workflow model」を参照 |
||||
| (task model): | Yes | アクティビティを定義。 StackStormで定義できるTask Model内容を記述。 詳細は「(表)Task model」を参照 |
||||
| role: | No | 各アクティビティに対して、そのアクティビティを実行できるロールを定義する。 以下に記述例を示す。 例) tasks: mytask: action: core.ask role: "Service Desk Agent" |
||||
| group: | No | 各アクティビティに対して、そのアクティビティを実行できるグループを定義する。指定されたグループが自動的にこのアクティビティにアサインされる。 | ||||
| requirements: | No | このアクティビティに対する要求事項 | ||||
| skillset: | No | このアクティビティを実行するのに必要なスキルセット。詳細については、「スキル管理」および「Skill、Skillset」を参照。 | ||||
| ui: | No | このアクティビティを実行するときに表示するUI。 ワークフローの最初の画面を表示するステップでは、アクションタイプにcore.noopを指定する必要があります。それ以外のステップでは、アクションのタイプにcore.askを指定してください。 |
||||
| step: | No | このアクティビティが所属するステップ名 | ||||
| label: | No | 表示名 | ||||
上記のworkflow modelにはStackStorm で定義されているworkflow modelと同じものを記述します。
StackStorm で定義されているworkflow modelについては以下に示します。
詳細についてはStackStorm公式ページを参照してください。
https://docs.stackstorm.com/3.7/orquesta/languages/orquesta.html#workflow-model
注意事項
- ワークフローの最初の画面はサービスカタログ画面から新規ワークフローを開いた時、または未開始のワークフローを開いた時に表示されます。作業項目管理機能からワークフローを実行した場合は、最初の画面のタスクはユーザー入力を待たず次のタスクに遷移します。したがって、最初の画面のタスクで指定したグループやロールの設定は、新規ワークフローまたは未開始のワークフローを開く場合に適用されます。
- 1つのワークフローの中で複数のUIを指定する場合、Workflow定義の中で使用するUIバージョンは同じにする必要があります。UIバージョンの詳細は「UIバージョン」を参照してください。
| ラベル | 必須 | 説明 |
|---|---|---|
| version: | Yes | ワークフロー定義形式のバージョン |
| input: | No | ワークフローに対する入力項目 |
| vars: | No | ワークフロー内で利用できる変数のリスト定義 |
| tasks: | Yes | ワークフローを構成する各アクティビティ定義 |
| output: | No | ワークフローから出力される変数のリスト定義 |
以下にTask model内で記述できる内容を示します。
Ops IではStackStormのTask modelと同じものを使用します。
詳細についてはStackStorm公式ページを参照してください。
https://docs.stackstorm.com/3.7/orquesta/languages/orquesta.html#task-model
| ラベル | 必須 | 説明 | ||
|---|---|---|---|---|
| (taskname): | Yes | アクティビティごとに名前を付け、そのアクティビティごとに以下を定義 | ||
| delay: | No | アクティビティの実行を遅らせる秒数 | ||
| join: | No | 前段で並行して走っているアクティビティがある場合に、アクティビティの開始の仕様を定義。 例)前段のアクティビティの3/3が終了したら開始、前段のアクティビティの2/3が終了したら開始する。 |
||
| action: | No | アクティビティで何を実行するかを定義。 使用できるリストは以下を参照 |
||
| input: | No | タスクで利用する入力のリスト | ||
| retry: | No | アクティビティの再試行の定義。 使用できる属性については「(表)retryで使用できる属性」を参照 |
||
| next: | No | 次に実行するアクティビティ。 使用できる属性については「(表)nextで使用できる属性」を参照 |
||
| subflow: | No | 指定した場合、サブフローとして実行する。 | ||
| type: | Yes | サブフローの種別。以下の値のどちらかを指定。
|
||
Ops Iユーザーは以下のactionを使用可能です。
Ops Iユーザーがactionを定義する際に使用可能なStackStorm部品を以下に示します。
詳細についてはStackStorm公式ページを参照してください。
https://docs.stackstorm.com/3.7/actions.html
| Action | 説明 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| core.ask | ユーザーからの入力を待機する。 | ||||||||||||||||
| core.http | HTTPリクエストを送る。 | ||||||||||||||||
| core.noop | 何もしない。 | ||||||||||||||||
| core.sendmail | メールを送付する。 | ||||||||||||||||
| core.local | ローカルホスト上で任意のLinuxコマンドを実行する。 | ||||||||||||||||
| vault.read | シークレット情報を取得する。 シークレット管理からシークレット情報を取得する際に利用します。 vault.readを使用する場合は、以下のパラメータを設定する必要があります。
|
| ラベル | 必須 | 説明 |
|---|---|---|
| when: | No | retryを実行するための条件 |
| count: | Yes | 再試行する回数 |
| delay: | No | 再試行間の秒数 |
| ラベル | 必須 | 説明 |
|---|---|---|
| when: | No | 遷移するための条件 |
| publish: | No | ワークフロー内で利用できる変数に値を設定 |
| do: | No | 条件が満たされているときに呼び出す次のタスク |
<定義例>
apiVersion: 1.0
kind: workflow
type: resource
name: create_vm_wf
label: VM貸出申請
description: デモ用VM貸出申請のワークフローです
includes:
- kind: ui
name: create_vm_ui_00
- kind: ui
name: create_vm_ui_01
- kind: ui
name: create_vm_ui_02
- kind: ui
name: create_vm_ui_04
- kind: ui
name: create_vm_ui_05
version: 1.0
steps:
- name: create_vm_wf_00_step
label: 開始
description: 開始
- name: create_vm_wf_01_step
label: 申請
description: 申請
- name: create_vm_wf_02_step
label: 申請内容の確認
description: 申請内容の確認
- name: create_vm_wf_03_step
label: VM生成
description: VM生成
- name: create_vm_wf_04_step
label: VM生成の確認
description: VM生成の確認
- name: create_vm_wf_05_step
label: 承認
description: 承認
tasks:
start:
action: core.noop
ui: create_vm_ui_00
step: create_vm_wf_00_step
next:
- when: <% succeeded() %>
do: create_vm_wf_01
- when: <% failed() %>
do: fail
create_vm_wf_01:
label: 申請
action: core.ask
ui: create_vm_ui_01
step: create_vm_wf_01_step
next:
- when: <% succeeded() %>
do: create_vm_wf_02
- when: <% failed() %>
do: fail
create_vm_wf_02:
label: 申請内容の確認
action: core.ask
ui: create_vm_ui_02
step: create_vm_wf_02_step
role: ope-team
input:
schema:
type: object
properties:
oi_response:
type: string
required: true
next:
- when: <% result().response.oi_response = accept %>
do: create_vm_wf_03
- when: <% result().response.oi_response = reject %>
do: create_vm_wf_01
- when: <% failed() %>
do: fail
create_vm_wf_03:
label: VM生成
action: core.noop
step: create_vm_wf_03_step
next:
- when: <% succeeded() %>
do: create_vm_wf_04
- when: <% failed() %>
do: fail
(中省略)
create_vm_wf_05:
label: 承認
action: core.ask
ui: create_vm_ui_05
role: ope-team
step: create_vm_wf_05_step
input:
schema:
type: object
properties:
oi_response:
type: string
required: true
next:
- when: <% result().response.oi_response = accept %>
do: finish
- when: <% result().response.oi_response = reject %>
do: create_vm_wf_04
- when: <% failed() %>
do: fail
finish:
action: core.noop
似たセクションが続く箇所は(中省略)として省略しています。
節構成
メモ