-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01

Copyright © 2012 NTT DATA INTRAMART CORPORATION

↑Top

1

-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01

目次
1. 改訂情報
2. IM-共通マスタの拡張について
2.1. 前提となる知識
2.1.1. Plugin Manager
2.2. 表記について
3. 汎用検索画面の拡張
3.1. 動作の概要
3.1.1. 汎用検索画面タブの動作概要
3.2. 実装の詳細
3.2.1. 汎用検索画面タブの実装
4. Appendix
4.1. 汎用検索画面の拡張に関する情報
4.1.1. 汎用検索画面の拡張ポイント2

-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01

改訂情報
変更年月日

変更内容

2012-10-01 初版3

-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01

IM-共通マスタの拡張について
IM-共通マスタのスマートフォン版における拡張は、汎用検索画面タブの拡張のみです。
PC版の共通検索画面と同じように汎用検索画面タブインターフェースが存在し、独自の検索処理を追加のタブとして実装することで統合された操作を実現しやすくなります。
本ガイドでは上記の拡張それぞれの作成方法を説明します。

前提となる知識本ドキュメントではIM-共通マスタで実際に提供している機能を元に、サンプルとなるコードを提示して実装方法を説明しています。
その前提として、スマートフォン版では、画面の検索タブを拡張する際にはスクリプト開発モデルについての知識が必要になります。（スクリプト開発モデルのサーバサイドJavaScriptのみ必要です。HTMLの知識は不要です）
その他の技術的な要素として、PluginManagerについての知識が必要になりますが、これらについて本ガイドでは詳細に解説していません。
適時、次に上げるドキュメントを参照してください。

Plugin Manager
IM-共通マスタのマスタメンテナンス画面やAPIはプラグインという形で機能を拡張できるようになっています。
プラグインを追加する場合には、拡張ポイントに応じた内容でプラグインの実装を作成し、対象の拡張ポイントへPluginするための設定ファイルを記述します。
拡張ポイントと、プラグインの関係はPlugin Managerによって管理されます。
PluginManagerは同じ拡張ポイントへの拡張に競合などがあった際は優先度の高いプラグインを自動的に選択します。
IM-共通マスタのマスタメンテナンス画面やAPIの拡張を作成する際、PluginManagerについて理解しておく必要があります。
Plugin Managerの詳細についてはAPIリストのPlugin Managerについての項を参照してください。

表記について本ガイドの中で、環境や実装によって変わる記述について以下のような表記を用いています。
それぞれインストールした環境や、作成した実装に読み替えてください。
表記

意味%plugin_id% プラグインのID。プラグイン実装者が定義する値です。

4

-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01

汎用検索画面の拡張
汎用検索画面はIM-共通マスタの検索処理をアプリケーションから共用できるよう実装された検索機能です。
スマートフォン版の汎用検索画面は画面処理基盤、プラグインの2つの要素で構成されています。
検索機能をプラグインとして追加することで、汎用検索画面に統合された検索処理を作成することが出来ます。

動作の概要
汎用検索画面の基盤とプラグインのインタフェースを中心に、実装の構成と動作の概要を説明します。

汎用検索画面タブの動作概要
汎用検索画面は、検索画面のウィンドウを作成し、プラグインの呼び出しや、検索結果の受け渡しをする基盤部
分と、実際に検索処理を行い、基盤に対してユーザの選択値を渡すプラグインという構成で成り立っています。
検索条件の受付、検索、結果の返却までをすべてプラグインの処理として実装します。
基盤部分では、初期表示、基本となる条件（検索基準日、ロケール、削除情報を含めるか否かなど）の管理と、検索結果の表示、受け渡し、取りまとめを行います。
汎用検索画面の構成の概要を以下の【図:汎用検索画面タブの動作概要】に示します。

【図:汎用検索画面タブの動作概要】

単一選択モードと複数選択モード
画面基盤は起動時のパラメータにより、検索画面で結果を複数選択するか、単一で選択するか処理を切り変えることが出来ます。
単一選択の場合、検索結果一覧で選択された項目が選択結果として使用されますが、複数選択の場合、検索結果一覧の下部に選択内容一覧が表示され、そこに選択項目を貯めておくことができます。

5

-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01【図:単一選択モードと複数選択モード】
PC版と異なり、選択した項目の決定・取り消しはすべて基盤側で制御します。

基盤部分から発生するイベントのハンドリング
スマートフォン版汎用検索画面では、4種類の画面テンプレートがあります。
検索処理、返却内容をもとにどのテンプレートを使用するかを決定します。
使用するテンプレートごとに基盤から発生するイベントが変わります。
基盤側から呼び出されるイベントは、使用するテンプレートによって異なります。
使用するテンプレートごとに、プラグインではそれぞれの要求に応えられるように実装する必要があります。

キーワード
1. search「検索」をタップした時に呼び出されます。

階層
1. search6

-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01「検索」をタップした時に呼び出されます。
2. searchTreeAll
初期処理時に呼び出されます。大量データモードがOFFの時に呼び出されます。
3. searchTreeInclusion
初期処理、階層移動時に呼び出されます。大量データモードがONの時に呼び出されます。

キーワード＋追加条件一覧
1. search
一次検索結果一覧で項目をタップしたとき、追加条件一覧で項目を選択したときに呼び出されます。
2. preSearch「検索」をタップした時に呼び出されます。
3. searchAdditionalCondition
一次検索結果一覧で項目をタップしたときに呼び出されます。

階層＋追加条件一覧
1. search「検索」をタップした時に呼び出されます。
2. searchTreeAll
初期処理時に呼び出されます。大量データモードがOFFの時に呼び出されます。
3. searchTreeInclusion
初期処理、階層移動時に呼び出されます。大量データモードがONの時に呼び出されます。
4. searchAdditionalCondition
階層一覧で階層項目をタップした時に呼び出されます。
これらの処理をサーバサイドJavaScriptとして実装し、適切にハンドリングしなければなりません。

大量データモードにおける階層移動
階層テンプレート、階層＋追加条件一覧テンプレートでは、「階層移動」アイコンが階層項目に表示されます。
大量データモードの状態によって、表示の仕方と基盤から発生するイベントが異なります。
大量データモードOFF（デフォルト）
階層の情報は、初期処理でsearchTreeAllが呼び出され全ての階層情報を取得します。
階層ごとに配下の階層が存在する場合に、「階層移動」アイコンが表示されます。
階層移動によってサーバへ通信することはありません。
大量データモードON
階層の情報は、初期処理や階層移動時にsearchTreeInclusionが呼び出され、1階層ずつ情報を取得します。
配下の階層の存在有無に関わらず、「階層移動」アイコンが表示されます。
「階層移動」アイコンをタップした時、配下の階層が存在した場合は、配下の階層情報が表示されます。
配下の階層が存在しない場合は「階層移動」アイコンが表示されません。

7

-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01
配下の階層の存在有無は記憶していません。
そのため別の階層へ移動後に元の階層に戻った場合「階層移動」アイコンは全階層表示されます。

実装の詳細
汎用検索画面タブの実装
汎用検索画面で使用するプラグインを追加するためには次のものを準備する必要があります。
プラグインの構成情報を記述するplugin.xml
基盤部分からのイベントに応答するためのjs （ssjs）

プラグインの構成情報を記述するplugin.xmlの作成
ここではユーザ検索（キーワード）プラグインのplugin.xmlを例に説明します。
12345678
910111213
1415
16<?xml version="1.0" encoding="utf-8"?><plugin><extension point="jp.co.intra_mart.common.search.tabs.smartphone"><searchname="standard"
id="jp.co.intra_mart.im_master.app.search.tabs.department.tree.smartphone"version="8.0.0" rank="1"><contenttitle="%tabtitle"
template="tree"
page="im_master_smartphone/plugins/department/tree_plugin"large_data_mode="false"></content></search></extension></plugin>【リスト:ユーザ検索（キーワード）タブのplugin.xml】
extensionタグ
point属性 ：汎用検索画面のプラグインを指定します。
スマートフォン版では「jp.co.intra_mart.common.search.tabs.smartphone」固定です。
searchタグ
name、version、rank などの属性はPlugin Managerによって依存関係の管理などに使用されます。
詳細はPlugin Managerのドキュメントを参照してください。
id属性 ：Plugin Managerによって依存関係の管理などに使用されます。
スマートフォン用であることを識別するため末尾に「.smartphone」を付けます。
content タグ
title属性：汎用検索画面のプラグインを切り替えるコンボに表示される名称を設定します。
%表記は国際化メッセージキーを表します。国際化に関してはPlugin Managerのマニュアルを参照してください。
template属性：利用するテンプレート種類を設定します。

8

-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01
page属性：プラグイン処理を実装したSSJSのページパス（拡張子なし）を設定します。
large_data_mode属性：大量データモードのON/OFFを指定します。
未設定時はOFFとして動作します。
“false”：大量データモードOFFとして動作します。初期表示時に階層情報をすべて取得します。
“true”：大量データモードONとして動作します。
階層移動するたびに検索処理が行われます。検索件数の打ち切りなどはプラグイン側で実装します。
content タグでは、さらに以下のタグを記述することで、基盤側から呼び出されるイベントごとに関数の呼び出しファイルを変更できます。
基盤から呼び出されるメソッド名を変更できません。
searchタグ
page属性：関数「検索」を実装したSSJSのページパス（拡張子なし）を設定します。
search_tree_allタグ
page属性：関数「全階層情報検索」を実装したSSJSのページパス（拡張子なし）を設定します。
search_tree_inclusionタグ
page属性：関数「配下の階層情報検索」を実装したSSJSのページパス（拡張子なし）を設定します。
pre_searchタグ
page属性：関数「一次検索」を実装したSSJSのページパス（拡張子なし）を設定します。
search_additional_conditionタグ
page属性：関数「一次検索」を実装したSSJSのページパス（拡張子なし）を設定します。
このxmlファイルをPlugin Managerの管理するフォルダに配置します。
具体的には以下のパスです。
なお、%plugin_id%にはスマートフォンであることがわかるように「smartphone」を入れることを推奨します。
<（展開したwar）/WEB-INF/plugin/%plugin_id%/plugin.xml>
plugin.xmlを変更した場合は、intra-martの再起動が必要です。

基盤からのイベントに応答するためのjsの作成
基盤からは特定のタイミングでプラグインの特定のメソッドを呼び出します。
呼び出されるメソッドは使用するテンプレートで異なります。
テンプレートごとに実装する処理を示します。
各メソッドのインタフェース詳細は、「IM-共通マスタ スマートフォン拡張インタフェース定義一覧」を参照してください。
このファイルは「プラグインの構成情報を記述するplugin.xmlの作成 」でcontentタグのpageプロパティと一致する場所に配置します。

キーワード
メソッド名

戻り値

説明

9

-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01
1

メソッド名

戻り値

説明

search(Object,Object「検索」をタップしたときに呼び出されます。

Boolean, String)

検索結果を所定の形式で返却します。
引数の説明：
Object: 起動パラメータ
Boolean: 大量データモード
String: 検索キーワード【表:キーワードテンプレートに必要なメソッドの一覧】

階層

1

メソッド名

戻り値

説明

searchTreeAll(Object,Object

基盤の初期処理時に呼び出されます。

Boolean)

このメソッドは大量データモードがOFFのときに呼び出されます。
すべての階層を含んだ検索結果を所定の形式で返却します。
引数の説明：
Object: 起動パラメータ
Boolean: 大量データモード

2

searchTreeInclusion(Object, Object

基盤の初期処理時、および階層移動時に呼び出されます。

Boolean, Object)

このメソッドは大量データモードがONのときに呼び出されます。
該当の階層のみを含んだ検索結果を所定の形式で返却します。
引数の説明：
Object: 起動パラメータ
Boolean: 大量データモード
Object: 移動先の階層

3search(Object, Boolean,Object)

Object階層一覧で階層項目をタップしたときに呼び出されます。
検索結果を所定の形式で返却します。
引数の説明：
Object: 起動パラメータ
Boolean: 大量データモード
Object: 階層一覧で選択した階層【表:階層テンプレートに必要なメソッドの一覧】

キーワード＋追加条件一覧
メソッド名

戻り値

説明

10

-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01
1

メソッド名

戻り値

説明

preSearch(Object, Boolean,Object「検索」をタップしたときに呼び出されます。

String)検索結果を所定の形式で返却します。
引数の説明：
Object: 起動パラメータ
Boolean: 大量データモード
String: 検索キーワード

2

searchAdditionalCondition(Object, Object

一次検索結果一覧で項目をタップしたときに呼び出さBoolean, Object)れます。
検索結果を所定の形式で返却します。
引数の説明：
Object: 起動パラメータ
Boolean: 大量データモード
Object: 一次検索結果一覧で選択した項目

3

search(Object, Boolean, Object,Object

Object)

一次検索結果一覧で項目をタップしたとき、および追加条件一覧で項目を選択したときに呼び出されます。
検索結果を所定の形式で返却します。
引数の説明：
Object: 起動パラメータ
Boolean: 大量データモード
Object: 一次検索結果一覧で選択した項目
Object: 追加条件一覧で選択した項目【表:キーワード＋追加条件一覧テンプレートに必要なメソッドの一覧】

階層＋追加条件一覧

1

メソッド名

戻り値

説明

searchTreeAll(Object, Boolean)

Object基盤の初期処理時に呼び出されます。
このメソッドは大量データモードがOFFのときに呼び出されます。
すべての階層を含んだ検索結果を所定の形式で返却します。
引数の説明：
Object: 起動パラメータ
Boolean: 大量データモード

2

searchTreeInclusion(Object,Boolean, Object)

Object基盤の初期処理時、および階層移動時に呼び出されます。
このメソッドは大量データモードがONのときに呼び出されます。
該当の階層のみを含んだ検索結果を所定の形式で返却します。
引数の説明：
Object: 起動パラメータ
Boolean: 大量データモード
Object: 移動先の階層

11

-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01
メソッド名
3

戻り値

説明

searchAdditionalCondition(Object, Object

階層一覧で階層項目をタップした時に呼び出されま

Boolean, Object)

す。
検索結果を所定の形式で返却します。
引数の説明：
Object: 起動パラメータ
Boolean: 大量データモード
Object: 階層一覧で選択した項目

4

search(Object, Boolean, Object,

ObjectObject)

階層一覧で項目をタップしたとき、および追加条件一覧で項目を選択したときに呼び出されます。
検索結果を所定の形式で返却します。
引数の説明：
Object: 起動パラメータ
Boolean: 大量データモード
Object: 階層一覧で選択した項目
Object: 追加条件一覧で選択した項目【表:階層＋追加条件一覧テンプレートに必要なメソッドの一覧】

結果の形式について結果は以下の形式のオブジェクトを配列にして返してください。
プロパティ名型

説明

data

Object

実際にデータベースから取得したレコードの内容をオブジェクトとして設定します。
プロパティ名をカラム名として、値にそのカラムの値を設定します。

typestring

データの種類を表す文字列です。
取得した情報元のテーブル物理名を設定します。

keyFields

Array

文字列の配列。
data 内で一意性を表すキーとなるプロパティのプロパティ名を配列として設定してください。
画面処理基盤側で重複選択を避ける為の情報として使用します。
具体的にはdataからkeyFieldsに設定された名前のプロパティを取得し、それら全ての値とタイプが一致するものは同一データであると判断しています。
displayName string オブジェクトを画面に表示する際に使用する表示文字列です。

12

-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド 初版 2012-10-01

Appendix
汎用検索画面の拡張に関する情報
汎用検索画面の拡張ポイント
汎用検索画面にプラグインを追加するための拡張ポイントは以下の一つのみです。
拡張ポイント1

汎用検索画面 追加プラグイン jp.co.intra_mart.common.search.tabs.smartphone13