目次


Maximo シリーズ

Part 8 – Workflow 詳解

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: Maximo シリーズ

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:Maximo シリーズ

このシリーズの続きに乞うご期待。

はじめに

前回はワークフローの基本的な使用方法を解説しました。本稿ではそれぞれのロール、アクションの解説とそれぞれのノードの具体的な解説を行います。

ロール

「ロール」アプリケーションは個人またはグループや電子メール・アドレスなどをまとめ、その役割を定義します。ロールはワークフロー・タスクの割り当てや電子メール通知などに使用されます。ワークフローでは通常「ユーザー」や「担当者」などの値は直接用いられず、それらの値はロールを通じて使用されます。それはワークフロー・タスクに割り当てられる”担当者”は頻繁に変更されるのに対して、役割や役職は変更が起きにくいためです。例えばある業務は組織の上長に割り当てられるとします。この場合、上長が「ロール」です。実際に割り当たる人は現在上長の立場にいる人です。業務において上長の役割は変化しませんが、実際に割り当たる人は職掌の変化などにより変化します。システム開発の立場では、ワークフローの変更よりロールに割り当てられている担当者の変更の方がコストは低く、ロールを隔てることで担当者とワークフローの結合度を弱め、ワークフローへの変更を減らすことができます。

ロールの種類と機能

「担当者」は任意の個人を割り当てることができます。値フィールドには「担当者」アプリケーションの値を挿入することができます。

図 1. 「担当者」のプロパティー

「担当者グループ」は担当者グループの全員または各人に割り当て、または電子メールを送信したい場合に使用されます。「ブロードキャスト」フラグが設定されている場合、メンバー全員に送信されます。設定されていない場合、① 呼び出し元のオブジェクトと同じ「サイト」、「組織」を持つ担当者を選択 ② その内、カレンダーで業務時間内にいる担当者またはカレンダー登録されていない担当者を選択 ③ 「担当者グループ」の順序が最も若い担当者が選択される。いずれも該当しない場合、「担当者グループ」のデフォルトの値にチェックがついている担当者が選択されます (「担当者グループ」アプリケーションを確認してください)。また、「オブジェクト」フィールドに値が挿入されている場合、「作業指示書」や「チケット」などの属性に定義されている担当者グループを指定することができます。

図 2. 「担当者グループ」のプロパティー

「レコード関連のデータ・セット」は「作業指示書」や「チケット」などのオブジェクトに「担当者」、「担当者グループ」またはテキストの電子メール・アドレスが割り当てられているフィールドを用いて担当者 (または担当者グループ) を識別します。例として作業指示書の「報告者」、「担当者グループ」などがあります。電子メールとして割り当てる場合、「電子メール」フラグをセットすることもできます。

図 3. 「レコード関連のデータ・セット」のプロパティー

「電子メール・アドレス」は任意の電子メール・アドレスを 1 つ割り当てることができます。この値は通知に使用できますが、ワークフローの担当者割り当てには使用できません。

図 4. 「電子メール・アドレス」のプロパティー

「ログイン・ユーザー関連のデータ・セット」は現在ログインしているユーザーの属性を割り当てることができます。例えばユーザーの「監督者」などが使用できます。

図 5. 「ログイン・ユーザー関連のデータ・セット」のプロパティー

「カスタム・クラス」は Java プログラムを用いて担当者を選択することができます。Java クラスには「psdi.common.role.CustomRoleInterface」を実装する必要があります。図の例では Java プログラム内でワークフローの差出人を返すコードが実装されています。「カスタム・クラス」は最も柔軟に担当者を選択することが可能です。

図 6. 「カスタム・クラス」のプロパティー

アクション / アクション・グループ

「アクション」アプリケーションは前述したワークフローから実行できるアクションを作成することができます。実行できるアクションにはフィールドの挿入、ステータスの変更、各種作業指示書およびチケットの作成などがあります。また、Maximo の Java カスタマイズ機能を用いればより柔軟なアクションを実行することができます。以下ではそれぞれのアクションのタイプについて解説します。

表 1. アクション・タイプの一覧
タイプ名説明
アプリケーション・アクションアプリケーションに対して特定のアクションを実行します。実行出来るアクションは次の表で示します。
ステータスの変更オブジェクトのステータス変更を行います。
カスタム (カスタマイズ)ユーザーが作成した Java クラスを実行します。クラスには「psdi.common.action.ActionCustomClass」インターフェースを実装する必要があります。
コマンド・ライン実行Maximo が動作しているアプリケーション・サーバー上にある実行ファイル (exe, sh, bin など) を実行します。
アクション・グループ複数のアクションをまとめて実行します。「メンバーの選択」ボタンからアクションの登録を行います。グループは順序に定義されている順番で実行されます。
値の設定フィールドに値を挿入します。

アプリケーション・アクション・タイプにも複数のタイプが存在します。以下のようなアクションをオブジェクトに対して実行可能です。

表 2. アプリケーション・アクションのタイプ一覧
アプリケーション・タイプ名説明
SLA の適用指定した SLA (Service Level Agreement) をオブジェクトに対して適用します。
変更の作成変更の作業指示書を作成します。
インシデントの作成インシデントのチケットを作成します。
問題の作成問題のチケットを作成します。
リリースの作成リリースの作業指示書を作成します。
サービス要求の作成サービス要求のチケットを作成します。
作業指示書の作成作業指示書を作成します。
ワークフローの受入ワークフロー・タスクを正の接続線へ接続します。
ワークフロー・エスカレーションワークフロー・タスクのロールをエスカレーション・ロールに割り当てます。
ワークフローの初期化パラメーターにワークフローID を入力し、ワークフローを起動します。
ワークフローの拒否ワークフロー・タスクを負の接続線へ接続します。

また、アクションには製品の標準で提供されているカスタム・クラスがあります。「NOSTATUS」と「OKSTATUS」はステータス変更の制御を行うことが可能です。「NOSTATUS」を実行するとステータス変更が抑止され、「OKSTATUS」でステータス変更が許可されます。これはワークフローの承認タスクなどで承認されるまでステータスの変更を禁止したい場合などに使用します。これによって不用意なステータスの変更を抑制することができます。

図 7. ステータス抑止の例

各種ノードと接続線の説明

ワークフローで定義可能な各種ノードについて説明します。各種ノードにはそれぞれの機能があり、それらはノードごとのプロパティーで定義することができます。ノード間は正 (または負) の接続線で関連づける必要があります。

開始・停止ノード

「開始ノード」はワークフローの開始点です。ワークフローは開始ノードから実行され、開始ノードには必ず正の接続線が一つだけ定義されている必要があります。また、プロパティーはありません。停止ノードはそのワークフローの終了点です。停止ノードは複数設置することができます。

条件ノード

「条件ノード」は SQL で条件式を元に次のルートを決定します。条件には SQL 文とカスタム・クラスが使用できます。カスタム・クラスにはカスタム条件クラス「psdi.common.condition.CustomCondition」を実装した Java クラスが必要です。クエリ結果が真または一つ以上のレコードを返せば正の接続線へフローが遷移します。

図 8. 条件ノードのプロパティー

タスク・ノード

「タスク・ノード」は担当者にタスクを割り当てます。「ロール」を使用して割り当てる担当者を決定します。割り当てられたタスクは担当者の「スタート・センター」にある「受信ボックス」または対象のアプリケーションからアクセスできます。

図 9. 受信ボックス

「タスク・ノードのプロパティー」の上部にあるフィールドはタスク全体に関わる設定が集まっています。以下にそれぞれのフィールドについて説明します。

図 10. タスク・ノードのタスク全体プロパティー

「アプリケーション」フィールドは受信ボックスのリンクで開くアプリケーション (例えば「WOTRACK」作業指示書など) を指定できます。「1 つ表示」チェック・ボックスは担当者に 1 つしか割り当てがされていない場合でもダイアログを表示し、タスクのキャンセルや別の担当者への割り当てを行えるようにします。「WF タスク・タイプ」に入力された値は「WFTRANSACTION」 (ワークフロー履歴) テーブルに記録されます。履歴の検索時に、タイプ別にタスクをフィルターするのに役立ちます。「タイム・リミット」はこのタスクの有効期限 (予定日) を計算するのに使用されます。具体的な使用方法は後に説明します。

次に個別の割り当て機能について説明します。これはこのタスクを割り当てる個人を設定します。割り当てには複数指定でき、プロパティー下部の容認アクション設定で割り当てに登録されているすべての人の承認が必要であるか、または登録された一人の承認で十分であるか選択することができます。

図 11. タスク・ノードの割り当てプロパティー

「ロール ID」にはこのタスクを割り当てるロールを指定します。ここでは電子メール・タイプのロールは使用できません。「割り当て対象者の関係」に関係 ID を入力することで割り当て対象者を選択することもできます。例えば「WORKORDER」の「OWNERPERSON」を設定すると、作業指示書の主担当者に割り当てられます。対象の関係先は「PEROSN」「PERSONGROUP」「ROLE」です。「ロール ID」と「割り当て対象者の関係」はどちらか一方にしか値を設定することはできません。「アプリケーション」はタスク全体と意味は同じです。ここでは割り当て別にアプリケーションを設定できます。これは権限によってアプリケーションを変えている場合に有効です。「式」はこの割り当てを有効にするか判定する条件式を記述します。条件が真である場合、割り当てを行います。すべての割り当てで条件が偽であった場合 (つまり一つも割り当てが有効になる条件式がない場合) はエラーとなります。「カスタム・クラス」にチェックすると「式」でカスタム条件クラスが使用できます。

「通信テンプレート」はタスク割り当て時に送る電子メールを指定します。電子メールを送信するには「電子メールを送信?」にチェックします。プロパティー下部にある通知テーブルとの違いはテーブルに定義された通信テンプレートは割り当てに関係なく送信されるのに対し、割り当てに設定された通信テンプレートは割り当てられた個人に対して送信されます。

タスク割り当てのエスカレーション機能

タスク・ノードの「エスカレーション・ロール」は「タイム・リミット」で指定された時間を過ぎると「エスカレーション・ロール」へ割り当てが変更される機能です。「タイム・リミット」はタスク全体とそれぞれの割り当ての両方を定義することができます。タスク全体の「タイム・リミット」に値を入力すると、割り当てを「新規行」で作成した際にタスク全体の値が個別の割り当ての「タイム・リミット」にコピーされます。タスク・ノードが実行されると「WFASSIGNMENT」テーブルにレコードが記録されます。「WFASSIGNMENT」テーブルの「DUEDATE(予定日)」にタスクが実行された時間と「タイム・リミット」を足した時間が記録されます。その際、割り当ての「カレンダーに基づく」がチェックされていた場合、担当者のカレンダーに定義されている就業時間を元に「DUEDATE(予定日)」がセットされます。例えば、タスクが開始された時間が AM 0:00 として、「タイム・リミット」が 2 時間、担当者の就業時間が AM 9:00 – PM5:00 とした場合、カレンダーに基づいた場合「DUEDATE」は AM 11:00 に、基づかない場合に AM 2:00 となります。

割り当てのエスカレーションを有効にするには、タスク・ノード設定の他にエスカレーション (詳しい説明はMaximo シリーズ: Part6 - エスカレーションを参照してください) を設定する必要があります。エスカレーション定義の例を以下に示します。

「エスカレーション」アプリケーションを開き、新規作成します。「エスカレーション」に任意の ID を、「適用先」に「WFASSIGNMENT」を、「条件」に「assignstatus = ‘アクティブ’」に設定します。

図 12. エスカレーションの設定

エスカレーション・ポイントの「新規行」を押下し、「エスカレーション・ポイントの条件」に「SYSDATE > DUEDATE」を入力します。これは現在時刻が予定日を超えた場合にエスカレーション・アクションが起動する設定です。

図 13. エスカレーション・ポイントの設定

アクションの「新規行」を押下し、アクションの詳細メニューから「リンク先 アクション」を選択し、アクションの設定画面を開きます。「アクション」に任意の ID を、「オブジェクト」に「WFASSIGNMENT」、「タイプ」に「アプリケーション・アクション」、「値」に「ワークフロー・エスカレーション」、「アクセス可能範囲」に「エスカレーション」を入力し、右上の「値を入力して戻る」を押下します。

図 14. アクションの設定

最後にエスカレーションでアクションの選択から「エスカレーションのアクティブ化/非アクティブ化」を選択してエスカレーションをアクティブにします。これで、一定時間経過後に誰もアクションをしなかったタスクが委任者へ自動的にエスカレーションされるようになります。

こちらの仕組みを活用するとさまざまな応用が可能です。一定時間経過後、暗黙の承認を行う場合は、アクションに「ワークフローの受入」を選択します。これで予定日を超えたタスクは自動承認されます。また、「ワークフローの拒否」を選択した場合は自動的に拒否することができます。エスカレーション・ポイントで条件を変更することによって予定日を超えたらエスカレーション、予定日から 1 日を超えたら自動的に拒否など柔軟な運用が可能になります。

サブプロセス・ノード

サブプロセスは複数のプロセスを連結させるために使用されます。これを使用することによりワークフローを適切な単位に分割し、再利用性を高めることができます。

相互作用ノード

「相互作用ノード」はユーザーが Maximo 上での作業を迷うことなく行えるように、画面遷移、アクションの実行または、指示の表示などの対話インターフェースを自動化できます。「相互作用ノード」は以下のようなアクション実行する事ができます。

  • アプリケーションまたはアプリケーションのタブへ移動

    アプリケーションから他のアプリケーションへ移動します。「タブ名」には遷移したときに開きたいタブの ID を指定します。一覧であれば「list」を、個別のレコードの詳細であれば「main」が一般的な ID です。また、「関係」に値を入力することでワークフローを開始したオブジェクトに関係式で関連づけられているオブジェクトを検索することができます。WORKORDER に入力された ASSET を検索して、「資産」アプリケーションを開きメイン・タブを開きたい場合は以下のように入力します。

    図 15. アプリケーション遷移の相互作用ノードのプロパティー
  • UI アクションの実行

    現在起動しているアプリケーションから UI アクションを実行します。UI アクションは署名オプションの値を指定でき、ダイアログの展開や作業指示書の作成、保存、削除などが実行出来ます。以下の例は「作業指示書管理 (WOTRACK)」アプリケーションで、「オーナーの選択」を実行します。

    図 16. UI アクション実行の相互作用ノードのプロパティー
  • ワークフロー・プロセスの起動

    相互作用からワークフローを起動することができます。ワークフローはサブプロセス・ノードやアクションから呼び出すことができますが、相互作用は別のアプリケーションを開いた状態で起動できることが特徴です。別のオブジェクトでワークフローを動かす場合、UI 操作があるワークフロー (相互作用や手動入力ノード) はアプリケーションからのみ起動することができます。相互作用で別のアプリケーションに移動後ワークフローを起動し、移動したアプリケーション上で UI アクションを呼び出すといった操作が可能になります。以下の例では、「資産」アプリケーション上でワークフローを起動します。その場合、関係は必ず入力し、関係元と関係先は 1:1 の関係である必要があります。相互作用では一度に複数のワークフローを実行することができないためです。

    図 17. ワークフロー・プロセスの起動の相互作用ノードのプロパティー
  • 指示の表示

    画面にダイアログ・ボックスを表示します。アクションの実行内容の表示やユーザーが行わなければならない操作のガイドなどを表示します。「指示のタイトル」と「指示の本文」に値を入力することでダイアログの表示が可能です。指示の表示は上記の UI アクション呼び出しなどとも同時に使用することができます。

手動入力ノード

「手動入力ノード」はユーザーに次に遷移するノードを選択させることができます。手動入力ノードが実行された場合、画面にダイアログ・ボックスが表示され選択肢から 1 つノードを選ぶことができます。「1 つ表示」チェック・ボックスを指定すると選択肢が 1 つであった場合でもダイアログ・ボックスを表示します。チェックしていない場合はダイアログ・ボックスが表示されず自動的に次のノードへ遷移します。「アクション」テーブルには正の接続線で実行されるアクションがリストされます。こちらは正の接続線を手動入力ノードに追加すると自動的に登録されます。

図 18. 手動入力ノードのプロパティー
図 19. 手動入力ノードの例

正負の接続線

「正の接続線」と「負の接続線」はノードが次のノードへと遷移するときのパスを表します。正負の接続線上で 1 つ、アクションが実行できます。また正の接続線は「手動入力ノード」を使用するときの候補としても使用されます。「指示」フィールドは手動入力ノードの選択肢のタイトルとしても使われます。手動入力ノードに接続されている接続線は「式」を使用してアクションを実行するか判定することができます。こちらも他の「式」と同様にカスタム・クラスを使用することができます。

図 20. アクションのプロパティー

待機ノード

「待機ノード」は復帰条件を満たすまでワークフローを待機します。「待機ノード」は主に他のシステムから応答を待つ場合などに使用されます。待機するイベントはピリオド区切りでどの MBO*1 がどのような条件で待機するかを指定します。始めのパートは「maximo」と指定します。この値は固定です。次に MBO の名前を指定します。MBO には workorder や asset などがあります。こちらの値は「データベースの構成」アプリケーションで確認することができます。次にイベントの種類を指定します。使用できるイベントの種類は、「init」、「update」、「statuschange」の 3 つが存在します。「statuschange」の場合、次にどのステータスに変更されるかを指定します。これは 3 番目に「statuschange」を指定したときのみ使用され、ステータスに使用されるシノニム・ドメインの内部値を指定します。

表 3. 待機ノードのイベント例
イベント説明
maximo.workorder.initWORKORDER オブジェクトの初期化時
maximo.asset.updateASSET オブジェクトの更新時
maximo.workorder.statuschange.APPRWORKORDER オブジェクトのステータスが「承認済み」に変更されたとき
maximo.po.statuschange.*PO オブジェクトのステータスが変更されたとき

おわりに

本稿ではロール、アクション、各種ノードの設定について解説しました。Maximo のワークフローの役割としてはタスク割り当て、操作の制限、自動化が主となっています。ぜひ簡単な実装を行いながら、理解を深めてください。

注釈

*1 Maximo Business Object の略です。MBO は Maximo シリーズ Part2 で解説しています。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=DevOps, セキュリティ
ArticleID=987904
ArticleTitle=Maximo シリーズ: Part 8 – Workflow 詳解
publish-date=11062014