Wagby関数を利用する
最終更新日: 2022年10月28日
R8 | R9
Wagbyが提供する関数をスクリプトでも利用することができます。
利用方法
多くの関数は、接頭語 "ExcelFunction." を付与することで利用できます。
customer.autoid = ExcelFunction.NUMTOJTEXT(1234, 1, 0);
利用できない関数
次の関数はスクリプト内部では利用できません。
同様のことをJavaScriptプログラミングで記述することができます。SUM関数の例をこちらに示します。
Javaクラスによって代替する関数
次の関数は「代替表記」を利用してください。
("p"は暗黙オブジェクトとして、スクリプト内で利用できます。)
区分 | 関数名 | 代替表記 | 注記 |
---|---|---|---|
数値 | RAND() | JFCUtils.__rand("項目ID",p) | |
数値 | RANDBETWEEN(開始,終了) | JFCUtils.__randbetween("項目ID",p,開始,終了) | |
文字列 | RANDSTR(桁数) | JFCUtils.__randstr("項目ID",p,桁数) | |
日付時刻 | TODAY() | p.request.getAttribute("__jfc_V_TODAY") | |
日付時刻 | NOW() | p.request.getAttribute("__jfc_V_NOW") | |
日付時刻 | WORKDAY(開始日,日数) | HolidayManager.getInstance().getEigyoDayAsSQLDate(開始日,日数) | |
日付時刻 | NETWORKDAYS(開始日,終了日) | HolidayManager.getInstance().getRestDay(開始日,終了日) | |
権限 | HASMODELPERMISSION(引数文字列) | JFCUtils.isValidPermission(p.user,引数文字列) | |
権限 | HASPRINCIPAL(引数文字列) | JFCUtils.hasPrincipal(p.user,引数文字列) | |
アカウント | USERNAME() | ((p.user!==null)?p.user.getUsername():"") | |
アカウント | USERINFO(引数文字列) | JFCUtils.getJuserAttribute(p,引数文字列) | |
アカウント | JGROUPID() | JFCUtils.getJgroupid(p.user) | |
画面制御 | BROWSERTYPE() | p.request.getAttribute("__jfc_browser_type") | |
画面制御 | EVENT() | JFCUtils.getEvent(p) | |
画面制御 | RESULTSIZE() | JFCUtils.getResultSize(p) | |
画面制御 | SCREENID() | p.request.getAttribute("__jfc_screen_id")
p.request.getAttribute("__jfc_screen_nid") |
(*4) |
画面制御 | SCREENTYPE() | p.request.getAttribute("__jfc_screen_type") | |
画面制御 | WIZARDPAGE() | JFCUtils.getWizardPage(p) | |
国際化 | LOCALE() | JFCUtils.getLocale(p) | |
リソース | MESSAGE() | JFCUtils.Message(p, "M0001") JFCUtils.Message(p, "M0002", "hello") |
|
リソース | ERRORMESSAGE() | JFCUtils.ErrorMessage(p, "E0001") JFCUtils.ErrorMessage(p, "E0002", "hi") |
|
ワークフロー | FLOWSTATUS("モデルID",主キー) | JfcworkstateServiceImpl.PARTICIPANTNODENAME(p,"モデルID",主キー) | (*1) |
ワークフロー | WF_CURRENT_USERID("モデルID",主キー) | JfcworkstateServiceImpl.WFCURRENTUSERID(p,"モデルID",主キー) | (*1) |
ワークフロー | WF_NEXT_USERID("モデルID",主キー) | JfcworkstateServiceImpl.WFNEXTUSERID(p,"モデルID",主キー) | (*1) |
ワークフロー | WF_USERID() | モデル名(キャメル記法)Helper.wf_nextuserid(p,"モデルID",ストアモデル) | (*2) |
ワークフロー | WF_CURRENT_GROUPID("モデルID",主キー) | JfcworkstateServiceImpl.WFCURRENTGROUPID(p,"モデルID",主キー) | (*1) |
ワークフロー | WF_NEXT_GROUPID("モデルID",主キー) | JfcworkstateServiceImpl.WFNEXTGROUPID(p,"モデルID",主キー) | (*1) |
ワークフロー | WF_GROUPID() | モデル名(キャメル記法)Helper.wf_nextgroupid(p,"モデルID",ストアモデル) | (*2) |
ワークフロー | WF_IS_ADMITUSER() | モデル名(キャメル記法)Helper.wf_isadmituser(p,"モデルID",ストアモデル) | (*2) |
外部連携 | REQUEST() | p.request | |
外部連携 | SESSION() | p.request.getSession() | (*3) |
外部連携 | ISREST() | JFCUtils.isRestAPI(p) | |
外部連携 | HTTPSEND(url, "ユーザID:パスワード") | ExcelFunction.httpsend(p.request, url, "ユーザID:パスワード") | |
外部連携 | HTTPSEND(url, 接続タイムアウト, 読み込みタイムアウト, リトライ回数) | ExcelFunction.httpsend(p.request, url, 接続タイムアウト, 読み込みタイムアウト, リトライ回数) | |
外部連携 | HTTPSEND(url, 接続タイムアウト, 読み込みタイムアウト, リトライ回数, "ユーザID:パスワード") | ExcelFunction.httpsend(p.request, url, 接続タイムアウト, 読み込みタイムアウト, リトライ回数, "ユーザID:パスワード") | |
その他 | CLIENTHOST()8.5.9 | JFCUtils.getRealIP(p) | |
その他 | CLIENTHOSTNAME()8.5.9 | JFCUtils.getClientHostname(p) | R8.5.8までは、JFCUtils#getRealIPを呼び出している。R8.5.9以降はJFCUtils#getClientHostnameを呼び出すようになった。 |
その他 | SERVERHOSTNAME() | JFCUtils.getServerIP() | |
集合関数 | AGCOUNT(項目名) | JFCUtils.getAggregateCount(p, "モデルID", "項目ID") | |
集合関数 | AGSUM(項目名) | JFCUtils.getAggregateSum(p, "モデルID", "項目ID") | |
集合関数 | AGAVG(項目名) | JFCUtils.getAggregateAvg(p, "モデルID", "項目ID") | |
集合関数 | AGMAX(項目名) | JFCUtils.getAggregateMax(p, "モデルID", "項目ID") | |
集合関数 | AGMIN(項目名) | JFCUtils.getAggregateMin(p, "モデルID", "項目ID") |
1. スクリプトの先頭でJavaClass型の変数を宣言してください。var JFCUtils = Java.type("jp.jasminesoft.wagby.app.jfcworkstate.JfcworkstateServiceImple"); と記述します。パッケージ名を変更している場合は、"jp.jasminesoft.wagby"を適切に読み替えてください。
2. スクリプトの先頭でJavaClass型の変数を宣言してください。var JFCUtils = Java.type("jp.jasminesoft.wagby.app.<モデルID>.<モデルID>Helper"); と記述します。パッケージ名を変更している場合は、"jp.jasminesoft.wagby"を適切に読み替えてください。
3. 関数 SESSION() は HttpSession クラスを指します。Hibernate の Session ではありません。
4. Myが接頭語に付与されたカスタマイズクラスが存在したとき、__jfc_screen_id の戻り値は My が付与されます。一方で __jfc_screen_nid を指定すると My が除かれた(正規化された)戻り値に統一されます。
例
呼び出される画面によって、処理をスキップさせる
var screen_id = p.request.getAttribute("__jfc_screen_id");
if (screen_id !== null && screen_id === "XXX") { /* 画面名を指定する */
return;
}
... 処理の本体 ...