スクリプト内で利用できる暗黙変数
ワークフローのスクリプトで利用できる暗黙変数は次の通りです。
変数名 |
説明 |
例 |
modelname |
当該ワークフローのモデルID。 |
kianモデルで実行すると print(modelname) で "kian" と出力される。 |
modelpkey |
当該ワークフローモデルデータの主キーの値。 |
主キー1000のデータで実行すると print(modelpkey) で "1000" と出力される。 |
p.user.username |
ログオンしているユーザーID。 |
"amuro" |
p.request |
Javaが提供するrequestオブジェクト。 |
p.request.getParameter("foo") で、HTTPリクエストパラメータfooの値を取得できる。 |
p.errors |
Wagbyが提供するエラーメッセージを管理するオブジェクト。 |
- |
p.appctx |
Springフレームワークが提供するApplicationContextオブジェクト。 |
p.appctx.getBean("ビーンID")で、Springが管理するオブジェクトを取得できる。 |
errorManager 8.5.5 |
(エラーメッセージで解説) |
- |
<モデルID> |
当該ワークフローモデルのストアモデルオブジェクト。(*1) |
"年休申請(nenkyu)"の"理由(reason)"項目の値は nenkyu.reason で参照できる。 |
<モデルID_p> |
当該ワークフローモデルのプレゼンテーションオブジェクト。 |
|
jfcworkstate |
当該ワークフローモデルデータの申請状況。申請後のみ利用可能。承認履歴の最も最新の情報を表現するデータを保持している。 |
|
jfcworkstate.comment |
直近のコメント |
|
jfcworkstate.username |
直近の処理者のユーザーID |
|
jfcworkstate.updateDate |
直近の処理日時 |
|
wman |
Wagbyが提供するワークフロー管理クラスWorkFlowManagerのインスタンス |
|
JFCUtils,ExcelFunction |
使い方はoperation-script-excelfunction.htmlを参照。 |
|
applicant |
申請者のユーザーID。実体は juser オブジェクト。 |
|
$applicant |
申請者の UserElement オブジェクト |
|
$rootGroup |
最上位のグループを表現するGroupElementオブジェクト |
|
$allUsers |
すべてのアカウントを表現するUserElementオブジェクト |
|
ストアモデルの詳細 (*1)
1. 標準では、ストアモデルオブジェクトは参照連動や自動計算の処理を行っていません。これはパフォーマンスを優先しているためです。参照連動項目を解決し、計算式の値を取得する場合は、次のように EntityService を経由してください。
var entityService = p.appctx.getBean("LeaveEntityService");
var leave = entityService.findById(modelpkey);
2. ここで得られるストアモデルは参照では利用できますが、更新では利用できません。[詳細...]
UserElementの詳細
UserElementは複数または単一のユーザーを表現するクラスとなっています。このクラスが提供する API は次のとおりです。
API |
説明 |
group() |
申請者の所属グループ (GroupElement) を取得する。複数の場合もある。 |
name() |
ユーザー名を取得する。複数のユーザー名の場合は区切り文字「|」で連結する。 |
GroupElementの詳細
上の API で説明した group() で取得できるグループは GroupElementとなっています。GroupElementは複数または単一のグループを表現するクラスです。このクラスが提供する API は次のとおりです。
API |
説明 |
parent() |
親グループを取得する。GroupElementが複数のグループの場合は、それぞれの親グループを取得できる。 |
children() |
子グループを取得する。複数の場合もある。 |
descendants() |
現在のグループと、すべての下位階層のグループを取得する。 |
jgroupid() |
グループID(数値)の配列を取得する。 |
userid() |
ユーザIDの配列を取得する。 |
users() |
グループに所属しているユーザーをUserElementとして取得する。GroupElementが複数のグループの場合は、それぞれのグループの所属ユーザーすべてを取得することができる。 |
findUsers() |
グループに所属しているユーザーを検索する。引数に By.principal を指定することができる。[後述] |
$applicantの使い方
$applicantは申請者スクリプトでは利用できません。承認者および決裁者スクリプトで利用できます。
次の式は、申請者の1階層上位グループ(GroupElement)を取得します。
次の式は、申請者の所属グループのグループID(数値の配列)を取得します。
$applicant.group().jgroupid();
(例) 申請者がamuroの場合は1000となります。
次の式は、申請者と同じグループに属するユーザー(UserElement)を取得します。
$applicant.group().users();
次の式は、申請者と同じグループに属するユーザーのユーザーIDを取得します。
$applicant.group().users().name();
(例) 申請者がamuroの場合は”amuro|kinjo”となります。
次の式は、申請者と同じグループに属するユーザーのうち、プリンシパル“nenkyu_authorizer”を持つユーザー (UserElement)のユーザーIDを取得します。
$applicant.group().findUsers(By.principal("nenkyu_authorizer")).name();
ワークフローのスクリプトで、By.principal を使ってプリンシパルで絞り込みを行うことができます。
By.principal("プリンシパル名")
By.principal("プリンシパル名","プリンシパル名",...)
複数のプリンシパル名をコンマ区切りで指定することもできます。
(例) 申請者がamuroの場合は”yamashiro”となります。
次の式は、申請者の所属グループの1階層上のグループ(GroupElement)のグループIDを取得します。
$applicant.group().parent().jgroupid();
(例) 申請者がamuroの場合は”2000”(営業部)となります。
次の式は、申請者の所属グループの1階層上のグループに属するユーザー(UserElement)のユーザーIDを取得します。
$applicant.group().parent().users().name();
(例) 申請者がamuroの場合は “uehara|onaga” となります。
次の式は、申請者の所属グループの1階層上のグループおよび、その下位階層グループ(GroupElement)のグループIDを取得します。
$applicant.group().parent().descendants().jgroupid();
(例) 申請者がamuroの場合は1000,1001,2000(営業1課、営業2課、営業部)となります。
次の式は、申請者の所属グループの1階層上のグループおよび、その下位階層グループに属するユーザー(UserElement)を取得します。
$applicant.group().parent().descendants().users().name();
(例) 申請者がamuroの場合は “uehara|onaga|yamashiro|kinjo|amuro|shinjo|miyagi|taira” となります。
次の式は、申請者の所属グループの1階層上のグループおよび、その下位階層グループに属するユーザー(UserElement)のうち、プリンシパル"nenkyu_finalist"を持つユーザーを取得します。
$applicant.group().parent().descendants().findUsers(By.principal("nenkyu_finalist")).name();
(例) 申請者がamuroの場合は”taira”となります。
次の式は、申請者の所属グループの1階層上のその下位階層グループ(GroupElement)のグループIDを取得します。
$applicant.group().parent().children().jgroupid();
(例) 申請者がamuroの場合は1000,1001 ("営業1課"、"営業2課")となります。"営業部" は含まれません。
$allUsersの使い方
次の式は、全ユーザーのうちのうち、プリンシパル"nenkyu_finalist"を持つユーザIDを取得します。
$allUsers.find(By.principal("nenkyu_finalist"));
次の式は、全ユーザーのうちのうち、グループID1000に所属し、かつプリンシパル"nenkyu_finalist"を持つユーザIDを取得します。
$allUsers.find(By.jgroupId(1000), By.principal("nenkyu_finalist"));
By.principal と同様に、グループIDで絞り込むための By.jgroupid も用意されています。
By.jgroupid(グループID)
By.jgroupid(グループID,グループID,...)
コンマ区切りで複数のグループIDを指定することもできます。
次の式は、全ユーザーのうちのうち、グループIDが1000,1001,1002に所属し、かつプリンシパル"nenkyu_finalist"を持つユーザIDを取得します。
$allUsers.find(By.jgroupId(1000,1001,1002), By.principal("nenkyu_finalist"));
$rootGroupの使い方
$rootGroup は、グループ階層を設定している場合のみ利用できます。
次の式は、全グループを取得します。
$rootGroup.descendants();
次の式は、最上位グループを取得します。図18の例では"管理部"、"第二技術部"、"第一技術部" が該当します。