4本ナレッジでは、プラグインで提供されている「ワークフロー遷移」コマンドを使い、Forguncyのワークフロー機能において代理承認を実現する例を紹介します。ここでは、代理承認の実現方法として、予め定義された承認者よりも上位の承認者であれば代理承認を行えるという運用ルールを想定しています。解説Forguncyのワークフローでは、ワークフローの「状態」と処理の任命者となる「担当者」で管理されます。ワークフロー処理の流れ(ルート)はアプリケーションの作成時に定義する必要があり、実行時は定義されたルートに沿って自動的に処理が行われます。このため、ワークフロー機能のみでは、代理承認のように定義時に担当として割り当てられていない担当者は承認できません。プラグインの「ワークフロー遷移」コマンドはワークフローの「状態」および「担当者」を任意に変更できるコマンドです。そのため、代理承認のように定義時に担当として割り当てられていない場合でも、定義されていないルートで処理を行うことが可能になります。ワークローの履歴への追記も可能なため、通常ルートとは異なる処理がされたことを任意の処理名(アクション名)やコメントに記載し履歴として残せます添付のサンプルについて添付のサンプルは、上位の承認者であれば部下の承認の代理承認が行えることとし、「ワークフロー遷移」コマンドを利用して代理承認の機能を実装した例です。以下は、サンプルに関する説明です。4.0.105.0以降のバージョンで読み込むことができます。サンプルには「ワークフローコマンド」に含まれる「ワークフロー遷移」コマンドが必要です。サンプルプロジェクトを開く前に、お使いの環境に「ワークフローコマンド」をインストールしてください。部長、4)事業部長の順に購入申請の承認を行います。各ロール設定によって確定されます。この際、「部長」はリーダーの代理承認/却下を、「事業部長」はリーダーと部長の代理承認/却下を行えます。サンプルでは、「Takafumi」(部長)、「Taro」(事業部長)でログインし、メニューより「代理承認」をクリックすると代理承認可能な申請の情報が表示されます。代理承認の機能は、「代理承認」ページの[承認]、[却下]の各ボタンに実装されています。代理承認/却下の際には、現在割り当てられている「担当者」の代理で承認/却下を行うのと、承認の際には自分の承認処理もまとめて行っています。代理で承認/却下を行った元々の「担当者」へ「メール送信」コマンドを使用して代理承認を行った旨のメールを送信しています。(メールサーバーの設定と、メールを送信する担当者(送信先)のメールアドレス設定が必要です。メールサーバーを設定しないと代理承認時にエラーが発生します。)また「ワークフロー遷移」コマンドで「状態」を書き換える際にはワークフローの次の「担当者」も設定する必要があります。この際、自分の承認後の次の「担当者」は、「%CurrentUser.OrganizationSuperior%」キーワードを利用して取得します。サンプルではワークフローの状態に合わせて4つの一覧ページを用意しています。各ページの内容と申請の抽出条件を以下に示します。自分が申請した申請の一覧を表示します。申請の抽出方法:レコードの「作成者」フィールドのユーザーが自分(%CurrentUser%と同じ)の申請を抽出します。ワーフクローの処理が自分にアサインされている(自分が承認/却下を行うべき)申請の一覧を表示します。申請の抽出方法:レコードの「担当者」フィールド(ワークフローのためのフィールド)のユーザーが自分(%CurrentUser%と同じ)の申請を抽出します。自分が承認し上司にアサインされている申請で、まだ処理が完了していない申請を表示します。代理承認された申請を含みます。※現在自分にアサインされている申請は除きます。申請の抽出方法:以下の条件で抽出します。「状態」フィールドが「新規」でない。「担当者」フィールドが現在のユーザーではない。※自分にアサインされいてる申請は、b)で表示します。自分の上司に割り振られている※上司の情報は「%CurrentUser.OrganizationSuperior%」キーワードより取得します。※「%CurrentUser.事業部%」(組織情報の「組織レベル」の情報)より取得します。自分の部下が承認先としてアサインされている申請を抽出します。※現在自分にアサインされているものは除きます。申請の抽出方法:以下の条件で抽出します。「担当者」フィールドが現在のユーザーではない。※自分にアサインされいてる申請は、b)で表示します。自分の上司にアサインされていない※上司の情報は「%CurrentUser.OrganizationSuperior%」キーワードより取得します。