5.2.1 inputFromNodeメソッド
入出力プラグインを配置したノードからほかのノードに遷移するときに,遷移元ノードの情報を取得して入力する処理を実行します。
ノード遷移時に,遷移元ノードの情報を取得して外部システムと連携するなどの,データ更新系の処理をこのメソッドで実装すると効果的です。
inputFromNodeメソッドの注意事項
-
同じノードに複数の入出力プラグインを配置している場合,先に実行されたinputFromNodeメソッドの結果に関係なく,すべての入出力プラグインのinputFromNodeメソッドが実行されます。したがって,入力パラメタのチェックが必要なプラグインを複数配置するときは,すべての入出力プラグインのinputFromNodeメソッドの入力パラメタをチェックする必要があります。
-
次の場合,inputFromNodeメソッドが複数回実行されます。
-
あとから実行したinputFromNodeメソッドの実行結果がエラーのとき
-
遷移先ノードに入出力プラグインが配置されていて,かつ,outputToNodeメソッドの実行結果がエラーのとき
したがって,inputFromNodeメソッドが複数回実行されても問題がないように,更新対象となるデータの整合性を保って実装してください。なお,メソッドの実行結果はエラーのほかに,正常,警告があります。
-
- 〈この項の構成〉
(1) 形式
public Map<String, Object> inputFromNode(HttpSession session, Map<String, Object> param);
(2) 引数
(a) session
現在のセッションが格納されます。プラグインの中で取得したHttpSessionオブジェクトに対してsetAttribute()メソッドを実行する場合,setAttribute()メソッドの引数nameに次の名前を指定しないでください。
-
"ucnp"で始まる名前
-
"java."で始まる名前
-
"javax."で始まる名前
-
"javax.portlet."で始まる名前
-
"hptl"で始まる名前
-
"com.cosminexus"で始まる名前
-
"jp.co.hitachi.soft.portal"で始まる名前
また,URLのリクエストパラメタを利用することもできます。URLのリクエストパラメタを利用する場合は,ucnp.request.optionsキーでucnpOptionsパラメタを取得する必要があります。
ucnpOptionsパラメタは,セッション単位または画面ID単位で取得できます。ucnpOptionsパラメタの値は画面ID単位で取得することを推奨します。画面ID単位で取得する方法については,「(b) param」を参照してください。
- セッション単位の取得を推奨しない理由
-
同一セッションでナビゲーション プラットフォームの画面を複数表示した場合,あとから操作した画面のucnpOptionsパラメタの値がHTTPセッションに上書きされ,前に操作した画面のucnpOptionsパラメタの情報が削除されるためです。
- ucnp.request.optionsキー
-
セッションから,URLに指定したucnpOptionsパラメタの値を取得するためのキーです。HttpSession.getAttribute()メソッドにこのキーを指定することで,URLデコードされたucnpOptionsパラメタの値を取得できます。URLにucnpOptionsパラメタを指定していない場合は,nullを返します。
public class IoPluginController implements IIoPluginController { /** * 入出力プラグインのサーバ処理を実行します。 * * @param session * 現在のセッションです。 * @param param * クライアントから送信されるパラメタです。 */ public Map<String, Object> inputFromNode(HttpSession session, Map<String, Object> param){ /* 現在のセッションからucnpOptionsパラメタの値を取得します。 */ String ucnpOptions = (String) session.getAttribute("ucnp.request.options"); if (ucnpOptions != null) { /* ucnpOptionsパラメタが指定されていたら,その値に対する処理を記述します。 */ ・・・ } } }
(b) param
入出力プラグインの実行時に,クライアントから送信される情報が格納されます。詳細を次の表に示します。paramパラメタは更新しないでください。
項番 |
キー名 |
値 |
説明 |
---|---|---|---|
1 |
ucnp.current.params.map |
Map<String,String>
|
入出力プラグインの実行時に,次に示すキーと値を対にしたMapとして渡されます。
ガイドに関連づけられていないパラメタはキーに含まれません。 ガイドパーツのキャッシュ値については「(5) ガイドパーツのキャッシュ値」を参照してください。 |
2 |
ucnp.button.type |
String 次のどれか
|
クリックされたボタンの種別,または遷移の種別を示します。
|
3 |
ucnp.isdirectjump |
String 次のどちらか
|
遷移の種別が直接遷移かどうかを示します。
|
4 |
ucnp.current.node.name |
String 0文字以上の文字列 |
遷移元のガイドに対応したノードの名称が渡されます。 名称が設定されていないノードの場合は,空文字が渡されます。 |
5 |
ucnp.next.node.name |
String 0文字以上の文字列 |
遷移先のガイドに対応したノードの名称が渡されます。 名称が設定されていないノードの場合は,空文字が渡されます。 |
6 |
ucnp.current.node.id |
String 0文字以上の文字列 |
遷移元のガイドに対応したノードIDが渡されます。 ノードIDが設定されていない場合は,空文字が渡されます。 |
7 |
ucnp.next.node.id |
String 0文字以上の文字列 |
遷移先のガイドに対応したノードIDが渡されます。 ノードIDが設定されていない場合は空文字が渡されます。 |
8 |
ucnp.flow.contents.id |
String 1文字以上の文字列 |
選択中の業務コンテンツの業務コンテンツIDが渡されます。 |
9 |
ucnp.flow.contents.name |
String 1文字以上の文字列 |
選択中の業務コンテンツの業務名が渡されます。 |
10 |
ucnp.flow.contents.execute.id |
String |
業務コンテンツの実行時に割り当てられるID(業務実行ID)です。 |
11 |
ucnp.flow.contents.version.id |
String |
実行中の業務コンテンツのバージョンIDです。 |
12 |
ucnp.screen.id |
String 1文字以上の文字列 |
業務コンテンツを実行している画面を一意に識別するID(画面ID)が渡されます。 |
13 |
ucnp.screen.ispreview |
String 次のどちらか
|
業務コンテンツを実行している画面がプレビュー画面かどうかを示します。
|
14 |
ucnp.options.param※ |
String |
画面ID単位で取得したucnpOptionsパラメタのURLデコードした値を示します。 ucnpOptionsパラメタが指定されていない場合,このキーは設定されません。 |
- 注※
-
URLに指定したucnpOptionsパラメタの値を画面ID単位で取得するためのキーです。引数paramにこのキーを指定することで,URLデコードされたucnpOptionsパラメタの値を取得できます。URLにucnpOptionsパラメタを指定していない場合は,nullが返されます。
public class IoPluginController implements IIoPluginController { /** * 入出力プラグインのサーバ処理を実行します。 * * @param session * 現在のセッションです。 * @param param * クライアントから送信されるパラメタです。 */ public Map<String, Object> inputFromNode(HttpSession session,Map<String, Object> param) { /* 引数からucnpOptionsパラメタの値を取得します。 */ String ucnpOptions = (String) param.get("ucnp.options.param"); if (ucnpOptions != null) { /* ucnpOptionsパラメタが指定されていたら,その値に対する処理を記述します。 */ } } }
(3) 戻り値
入出力プラグインの実行結果がMapで返されます。詳細を次の表に示します。これ以外の値は無視されます。
項番 |
キー名 |
値 |
説明 |
---|---|---|---|
1 |
ucnp.error.message |
String 0文字以上の文字列 |
inputFromNodeメソッドを実行したあとに利用者にメッセージを表示したい場合,このキーを設定してください。 遷移元のノードに関連づけられたすべての入出力プラグインのinputFromNodeメソッドを実行したあとに,このキーに設定した文字列がメッセージダイアログに表示されます。 このキーを設定するときは,次の点に注意してください。
|
2 |
ucnp.error.type |
String 次のどちらか
|
ucnp.error.messageで設定したメッセージダイアログが表示されたあとに,ノード遷移を抑止するかどうかを設定してください。
次の場合このキーに指定した値は無視されます。
次の場合"NG"が仮定されます。
複数の入出力プラグインの実行時は,設定によって次のように動作が異なります。
|
3 |
ucnp.error.params.list |
List<String> 1文字以上の文字列 |
ノード遷移が抑止されているガイドパーツを強調表示したい場合,そのパーツに関連づけた入力パラメタのリストを,このキーの値に設定してください。色の付いた枠で強調表示されます。 強調表示時の枠の色のデフォルトは赤色です。この枠の色はユーザプロパティファイル(ucnp_user.properties)のucnp.base.client.erroritem.emphasis.border.colorプロパティで変更できます。 ユーザプロパティファイルについては,マニュアル「ナビゲーション プラットフォーム 導入から運用まで」を参照してください。 このキーは,ucnp.error.messageキーと一緒に戻り値のMapに設定してください。ucnp.error.messageキーを設定していない場合は,このキーを設定しても,強調表示されません。 ノード遷移が抑止されていないときは,このキーに指定した値は無視されます。 |
inputFromNodeメソッドの戻り値と遷移元ノードに関連づけた入出力プラグイン実行後の動作を次の表に示します。
項番 |
ucnp.error.messageの指定値 |
ucnp.error.typeの指定値 |
ucnp.error.params.listの指定値 |
メソッドの実行結果 |
ダイアログの表示の有無 |
ノード遷移の有無 |
強調表示の有無 |
---|---|---|---|---|---|---|---|
1 |
指定なし,またはnull |
NG |
指定あり(null以外) |
正常 |
無 |
無 |
無 |
2 |
指定なし,またはnull |
正常 |
無 |
無 |
無 |
||
3 |
WARNING |
指定あり(null以外) |
正常 |
無 |
無 |
無 |
|
4 |
指定なし,またはnull |
正常 |
無 |
無 |
無 |
||
5 |
NGおよびWARNING以外 |
指定あり(null以外) |
正常 |
無 |
無 |
無 |
|
6 |
指定なし,またはnull |
正常 |
無 |
無 |
無 |
||
7 |
指定あり(null以外) |
NG |
指定あり(null以外) |
エラー |
有 |
有 |
有 |
8 |
指定なし,またはnull |
エラー |
有 |
有 |
無 |
||
9 |
WARNING |
指定あり(null以外) |
警告 |
有 |
無 |
無 |
|
10 |
指定なし,またはnull |
警告 |
有 |
無 |
無 |
||
11 |
NGおよびWARNING以外 |
指定あり(null以外) |
エラー |
有 |
有 |
有 |
|
12 |
指定なし,またはnull |
エラー |
有 |
有 |
無 |
(4) 例外
なし
(5) ガイドパーツのキャッシュ値
プラグインで保持されるガイドパーツのキャッシュ値を次の表に示します。
項番 |
パーツの種類 |
キャッシュ値 |
初期値 |
---|---|---|---|
1 |
固定テキスト |
表示文字列 |
[属性の設定]画面の[表示文字列]テキストボックスに指定した値 |
2 |
画像 |
URLとツールチップの属性値を改行で連結した文字列 (ツールチップが空文字の場合でも,改行コードはキャッシュ値に含まれます。) |
[属性の設定]画面の[URL]テキストボックスに指定した値と[ツールチップ]テキストボックスに指定した値を改行で連結した値 |
3 |
テキストボックス |
テキストボックスに入力されている値 |
[属性の設定]画面の[初期値]テキストボックスに指定した値 |
4 |
テキストエリア |
テキストエリアに入力されている値 |
[属性の設定]画面の[初期値]テキストエリアに指定した値 |
5 |
ラジオボタン |
選択されているラジオボタンの[属性の設定]画面の[値]テキストボックスに指定した値 (ラジオボタンが選択されていない場合はnull) |
null |
6 |
チェックボックス |
「true」:チェック状態の場合 「false」:チェック状態でない場合 (どちらの場合も,文字列で半角小文字) |
[属性の設定]画面の[初期値をチェック状態にする]チェックボックスの状態によって値が異なります。
|
7 |
ドロップダウン |
選択されている[選択項目一覧]の値 (値にコンマや引用符(")が含まれている場合でも,CSVのエスケープはしないで,そのままの値を指定します。例えば,「神"奈川"」という値をキャッシュ値とする場合も,「"神""奈川"""」にはなりません。) |
|
8 |
ハイパーリンク |
アンカーの文字列とURLに指定した値を改行で連結した文字列 (ツールチップは文字列に含まれません。) |
|
9 |
インラインフレーム |
表示されているページのURL (フレーム枠の有無は含まれません。) |
[属性の設定]画面の[URL]テキストボックスに指定した値 |
10 |
HTMLパーツ |
表示されているHTMLコンテンツ |
[属性の設定]画面の[HTMLソース文字列]テキストボックスに指定した値 |
全パーツ共通の注意事項
-
業務実行画面で業務を進めたり戻ったりして,ガイド領域を表示したときに表示される値の優先順位を次に示します。
-
入出力プラグインの出力値
-
業務実行画面で利用者が以前入力した値(固定テキストパーツを除く)
-
各パーツのキャッシュ値の初期値(表5-5)
-
-
キャッシュ値のライフサイクルは,業務を開始してから,業務を終了するか,または破棄するまでとなります。中断再開プラグインを利用して一時保存した業務を再開する場合は,キャッシュ値も引き継がれます。
-
同じプロセスノードに対応するガイド領域の,同じガイドパーツのキャッシュ値は一つの値が共有されます。そのため,合流を含むフローの場合,一度表示したプロセスノードを別のルートを通って再度表示した場合,以前表示したときのキャッシュ値がそのまま利用されます。キャッシュ値を条件に応じて変更したいときには,入出力プラグインを利用して変更してください。
-
キャッシュ値の改行は「\r\n」です。このメソッドの戻り値で指定するキャッシュ値に改行を含める場合,「\r\n」を改行として指定してください。
テキストボックスの注意事項
-
キャッシュ値として,プラグインから改行を含む文字列が出力された場合,改行を取り除いた文字列がキャッシュ値となります。
ドロップダウンの注意事項
-
親ドロップダウンのキャッシュ値を指定した場合,親ドロップダウンのキャッシュ値とプラグインで指定された値が異なると,子ドロップダウンのキャッシュ値はリセットされます。リセットされた子ドロップダウンのキャッシュ値は,[属性の設定]画面の[選択項目一覧]のうち,対応する親ドロップダウンの最初の値です。
例えば,[属性の設定]画面で次のように設定されているドロップダウンに関して,親ドロップダウンのキャッシュ値が「kanagawa」,プラグインで指定された値が「tokyo」の場合,「tokyo」に対応する最初の値である「shibuyaku」が,リセットされた子ドロップダウンのキャッシュ値となります。
なお,業務実行画面で親ドロップダウンの選択状態を変更した場合も,同様に子ドロップダウンの値がリセットされます。
-
キャッシュ値は,プラグインのパラメタの順序に従って反映されます。そのため,親子関係のあるドロップダウンのキャッシュ値を更新する場合は,子ドロップダウンには親ドロップダウンに関連づけたパラメタよりもあとにあるパラメタを関連づける必要があります。
-
キャッシュ値に指定した値が,[属性の設定]画面の[親の値]に対応する[選択項目一覧]に存在しない場合,指定したキャッシュ値は無視されます。
ハイパーリンクの注意事項
-
キャッシュ値に改行が含まれない場合は,ラベルだけが指定されたものと見なされます。