1. EntityListing

EntityListingはエンティティに対して、

  • エンドユーザが自分で抽出条件を指定したり、運用管理者が定期的なデータ抽出作業用の定型条件を作成

  • その作成した条件や検索結果を保存・共有

する機能を提供しています。

検索条件の動的指定

登録されているエンティティに対して、抽出項目(Select)やフィルター条件(Where)を画面上で自由に指定することができます。

検索条件、検索結果の保存

指定した検索条件や検索結果はCSVに出力することが可能です。 また保存リストとして保存して、再利用したり共有することが可能です。 保存したデータはTopViewパーツとしてTop画面に配置する方法と、メニューから画面遷移する方法を提供しています。

2. 操作説明

2.1. 画面構成

entitylisting ope structure

2.2. 画面操作

データアイテム選択

エンティティ選択

エンティティをドロップダウンから選択します。選択すると アイテム 部分にプロパティが表示されます。

※選択可能なエンティティやプロパティについて
選択可能なエンティティやプロパティはEntityListingメタデータで指定することが可能です。 EntityListingメタデータを利用しない場合は、エンティティ権限の設定により参照可能なエンティティやプロパティが表示されます。 またバイナリプロパティについてはサポートしていないため表示されません。

プロパティ選択

抽出項目 を設定したい場合は、アイテムをダブルクリックするか、 抽出項目 領域にDrag&Dropすることで追加されます。

フィルター条件 に追加したい場合は、フィルター条件下部の「アイテムをドロップしてください」という領域にDrag&Dropすることで追加されます。

entitylisting ope extractionitem

プロパティがReferenceプロパティの場合は、左に右向きの「▼」が表示されます。 このアイテムをクリックすることでReference対象エンティティのプロパティが表示されます。

entitylisting ope reference

抽出項目設定

entitylisting ope extractionitem2
列の並び替え

抽出項目の列の順番はDrag&Dropで並びかえることが可能です。

集計関数設定

抽出項目に対して、集計関数を指定することが可能です。 集計関数として利用できる関数は、Dropされたアイテムのデータ型によって決まります。

entitylisting ope extractionitem aggregation
表示設定

検索結果一覧の表示設定を行うことが可能です。

  • 配置設定
    左寄せ、中央寄せ、右寄せを設定します。未指定の場合、「左寄せ」になります。

  • 列幅設定
    検索結果の表示列幅を設定します。未指定の場合、150pxになります。

  • 数値フォーマット設定(集計項目、数値項目のみ)
    数値をフォーマットするかを設定します。
    未指定の場合、GemConfigServiceの「formatNumberWithComma」がtrueの場合にのみフォーマット表示されます。 GemConfigServiceの「formatNumberWithComma」がtrueの場合で、フォーマット表示したくない場合は、「フォーマットしない」を選択する必要があります。

フィルター条件

entitylisting ope filteritem expression

フィルター条件として指定可能な条件入力方法は、Dropされたアイテムのデータ型によって決まります。

条件式

フィルターに条件が1つでも追加されると、 条件式 の入力エリアが表示されます。 この条件式には各フィルターの組み合わせ条件を指定することができます。

${フィルタの行番号} で対象の条件を指定します。

※条件式には、カッコ、AND、OR、NOT を利用することができます。

フィルター条件式が未指定の場合は、同一プロパティはOR条件として、他プロパティに対してはAND条件として検索します。

画面の例の場合、条件式が指定されていなければ、

 ( 販売ステータス = '準備中' OR 販売ステータス = '販売中' ) AND ( 在庫数 < 500 OR 在庫数 < 100 )

となりますが、

($1 and $2) or ($3 and $4)

を指定した場合は、

 ( 販売ステータス = '準備中' AND 在庫数 < 500 ) OR ( 販売ステータス = '販売中' AND 在庫数 < 100 )

として検索することができます。

検索条件、検索結果の保存

設定した検索条件や検索結果を保存することができます。保存データは別名での保存も可能です。

まだ保存されていない場合
entitylisting ope action save
保存されているデータを編集で開いた場合
entitylisting ope action saved

保存ボタン をクリックすると、ダイアログが表示されます。

entitylisting ope savedlist
保存フォルダ

保存リストの名前に表示されているフォルダをクリックすることで、 保存フォルダ にフォルダが設定されます。 また フォルダの作成 から新しくフォルダを作成することができます。

entitylisting ope savedlist folder
共有

保存した保存リストデータを他のユーザが参照することができるようになります。

他者編集

保存した保存リストデータをもとに、他のユーザが編集画面を表示することができるようになります。 他者編集を許可しない場合は、保存リスト上でデータを参照することはできますが、編集画面には遷移できません。

保存形式
  • 条件を保存
    条件のみ保存されます。このリストを開くと、保存された条件で最新のデータを検索します。

  • スナップショットを保存
    条件とデータを保存します。このリストを開くと、保存時のデータが表示されます。

※スナップショットについて
スナップショットとして保存したデータについては、保存データ編集(検索条件編集)や、保存されたエンティティの参照画面への遷移は行えません。

条件編集

保存リストとして参照する際に、フィルター条件を変更できるかを指定するものです。 例えば、システム管理者がある特定のデータに対する抽出条件を保存リストとして保存して一般ユーザに公開したときに、一般ユーザが検索条件を変更してもいいような場合に利用します。

編集を許可した場合
entitylisting ope list permition
編集を許可しない場合
entitylisting ope list nopermition
リスト初期表示

保存リストを画面に表示する際に、同時に検索を実行するかを指定します。 対象のデータ件数が多い場合、または条件の指定を行ってから検索させたい場合など、リスト初期表示を「しない」に設定することで画面表示時に検索を行いません。

※フォルダやデータの可視範囲について
フォルダや保存データの他者への可視範囲については、エンティティ権限で制御します。 フォルダは「mtp.listing.SavedListFolder」、保存データは「mtp.listing.SavedList」エンティティに対して権限を設定します。

検索結果一覧

抽出項目オブジェクトID が含まれている場合、リンクとして表示されます。 リンクをクリックすることで、エンティティの参照ダイアログが開きます。

entitylisting ope entity reference

※対象エンティティの OID プロパティをカスタマイズしている場合、 OID プロパティが1つのみであれば、その項目に対してもリンクが張られます。 複数項目を利用して OID プロパティを指定している場合(複合指定)は、リンク表示されません。

※EntityListingメタデータを定義することで、 Name プロパティに対してもリンクを表示することが可能です。

※EntityListingメタデータを定義することで、参照時のView指定や編集可能とするかの設定が可能です。 デフォルトでは、 default Viewで編集可として動作します。

3. EntityListingの管理

3.1. EntityListingの作成

EntityListingアイコンを右クリックして、「EntityListingを作成する」を選択してください。

3.2. 設定

メタデータを定義しなくてもEntityListing機能自体は実行することが可能です。
ただし、ユーザによって利用可能なエンティティやプロパティを制御したい場合には、EntityListingメタデータを作成します。

Default Setting

ここでの設定は、下のCustom Settingを設定していないエンティティに対して適用される設定です。

設定項目 設定値

exclude mtp entities

選択可能なエンティティから「mtp.*」を除外します。 下のCustom Settingでエンティティを1つでも選択している場合は、そちらが優先されます。

exclude inherited properties

選択可能なプロパティとして継承プロパティを除外します。 下のCustom Settingでエンティティ別にプロパティ設定をしている場合は、そちらが優先されます。 選択した場合、オブジェクトIDが選択可能なプロパティとして選択できなくなるため、エンティティの参照画面が開けなくなります。 (エンティティ定義でOIDプロパティを独自指定している場合は可能です)

to edit the narrowing condition, as dialog

抽出項目に集計関数がある場合に利用可能な絞り込み条件(Having条件)の指定方法を設定します。

ダイアログモードの場合

絞り込みボタンが表示され、クリックで結果の絞込みを行うダイアログを表示

直接編集モードの場合

フィルタの下に絞り込み対象を指定する領域を表示

handle inherited user property as name

エンティティの「作成者」、「更新者」、「ロックユーザ」を名前で扱います。 Filter条件に指定する場合は、Userエンティティを選択します。 検索結果、CSVファイルには名前が出力されます。(ただしソートはOIDで比較します)

show reference dialog for edit mode

エンティティの参照画面を開く際に編集可能モードで開くかを指定します。
下のCustomSettingでエンティティ別に設定をしている場合は、そちらが優先されます。

show reference dialog from name property

抽出項目としてnameプロパティを指定した際に、参照画面のリンクを表示するかを指定します。
下のCustomSettingでエンティティ別に設定をしている場合は、そちらが優先されます。

can csv download

条件編集画面で「CSV Download」を利用できるかを指定します。
保存リストの詳細画面上で「CSV Download」を許可するかは、TopViewの「SavedList」Partsで行う必要があります。

CSV file name format

CSVファイルダウンロード時のファイル名をGroovyTemplate書式を利用して指定します。 詳細はCSV file name formatを参照してください。

Query interrupter class name

実際に検索が実行される直前に、実行するEQLをカスタママイズするためのクラスを指定します。 詳細はQuery Interrupterを参照してください

CSV file name format

CSVファイルダウンロード時のファイル名をGroovyTemplate書式を利用して指定します。 フォーマットが指定されている場合、ボタンに「(*)」が表示されます。 また、/とスペースについては、_(アンダースコア)に変換します。

利用可能なバインド変数は、編集ダイアログの「Notes」を参照してください。

(例)CSVファイル名の後ろに出力時の時間を付加する。
${csvName}_${yyyy}${MM}${dd}${HH}${mm}${ss}
(例)保存リストの場合は保存名を先頭に付加する。
<%
def fileName = entityDisplayName;
if (savedListName != null) {
    fileName = savedListName + "_" + entityDisplayName;
}
%>
${fileName}_${yyyy}${MM}${dd}${HH}${mm}${ss}
Query interrupter

パフォーマンス改善などの目的で、実際に検索を行う直前のEQLをカスタマイズすることが可能です。 以下のQueryInterrupterを実装したJavaクラスまたはUtilityClassを指定します。

org.iplass.mtp.view.entitylisting.QueryInterrupter

EntityListingの検索では、ページング制御のための件数取得と実際のデータ検索の2回EQLが実行されます。 QueryInterrupterではこの直前にEQLをカスタマイズする処理を追加することができます。

package sample.entitylisting;

import org.iplass.mtp.entity.query.Query;
import org.iplass.mtp.entity.query.hint.CacheHint;
import org.iplass.mtp.entity.query.hint.CacheHint.CacheScope;
import org.iplass.mtp.entity.query.hint.TimeoutHint;
import org.iplass.mtp.view.entitylisting.QueryContext;

//実装するIF定義
import org.iplass.mtp.view.entitylisting.QueryInterrupter;

public class SampleQueryInterrupter implements QueryInterrupter{

    @Override
    public void beforeCount(QueryContext context) {

        //QueryContextからQueryを取得
        Query query = context.getQuery();

        //(例)Queryに対してCacheHintを指定
        query.hint(new CacheHint(CacheScope.GLOBAL, 60));

        System.out.println("interrupt result:" + query.toString());
    }

    @Override
    public void beforeSearch(QueryContext context) {

        //QueryContextからQueryを取得
        Query query = context.getQuery();

        //(例)Queryに対してCacheHint、TimeoutHintを指定
        query.hint(new CacheHint(CacheScope.GLOBAL, 60))
        .hint(new TimeoutHint(120));

        System.out.println("interrupt result:" + query.toString());

        //QueryContextからはEntityListing定義名、エンティティ名も取得可能
        System.out.println("target entity listing definition name:" + context.getDefinitionName());
        System.out.println("target entity definition name:" + context.getEntityName());
    }

}

Custom Setting

Default Settingではなく、エンティティ個別に設定を行いたい場合に指定します。

entitylisting set customsetting

左側にエンティティの一覧が表示されます。選択可能としたいエンティティをチェックすることで、対象エンティティを制御します。 また個別にプロパティなどを絞り込みたい場合は、対象のエンティティをダブルクリックしてください。右側にエンティティごとの設定項目が表示されます。 個別に設定されているエンティティについては「Custom」列に「Y」が表示されます。

※Showをチェックしないで、エンティティに対する個別設定のみをすることも可能です。 この場合、対象とするエンティティはDefault Settingの設定値を利用して決定されます。

Entity Custom Setting

設定項目 設定値

exclude inherited properties

選択可能なプロパティとして継承プロパティを除外します。 下のプロパティ選択部分で1件でも選択されている場合は、そちらが優先されます。

handle inherited user property as name

エンティティの「作成者」、「更新者」、「ロックユーザ」を名前で扱います。

show reference dialog for edit mode

エンティティの参照画面を開く際に編集可能モードで開くかを指定します。

show reference dialog from name property

抽出項目としてnameプロパティを指定した際に、参照画面のリンクを表示するかを指定します。

View Name

エンティティの参照画面を開く際のView名をGroovyTemplate書式を利用して指定します。 詳細はView Nameの指定を参照してください。

CSV file name format

CSVファイルダウンロード時のファイル名をGroovyTemplate書式を利用して指定します。 「Default Setting」と同様です。

Query interrupter class name

実際に検索が実行される直前に、実行するEQLをカスタママイズするためのクラスを指定します。 未指定の場合は「Default Setting」の設定が有効になります。

Propertyリスト

選択可能としたいプロパティをチェックしてください。

View Nameの指定

エンティティの参照画面を開く際のView名をGroovyTemplate書式を利用して指定します。 値が設定されている場合、ボタンに「(*)」が表示されます。

利用可能なバインド変数は、編集ダイアログの「Notes」を参照してください。

(例)文字列直接指定
opeView
(例)GroovyTemplate指定
<%@import org.iplass.mtp.entity.Entity %>

<%
def viewName = "XXXXXXXXX";
%>

${viewName}

検索結果のリンク表示時には、表示対象データのOIDが「oid」としてバインドされています。 Filter条件としてReferenceを指定した場合の参照時はOIDはバインドされません。

3.3. 表示方法

メニューへの登録

条件設定画面を表示するにはメニューにActionMenuItemを登録します。

ActionMenuItemには雛型として gem/template/entitylisting/ViewEntityListingAction というメニューアイテムがあります。 このActionMenuItemをコピーしてメニューアイテムを編集してください。

項目 設定値

Name

管理しやすいように設定してください。

DisplayName

メニューの表示名になります。

Execute Action

gem/entitylisting/view を指定してください。

Parameter

defName=XXX&entityName=XXX&listedId=XXXX

defName

作成したEntityListingメタデータ名を指定します。

entityName

初期表示時に選択したいエンティティ名を指定します。 defNameには表示可能なエンティティを指定する必要があります。

listedId

保存されているListを直接編集モードで開きたい場合に保存リストのOIDを指定します。 これが指定された場合、defName、entityNameは無視されます。 またSnapshotのデータは指定できません(編集不可)。

※EntityListingメタデータが1つでも登録されている場合は、雛形の ViewEntityListingAction から起動しようとするとエラーが発生します。

entitylisting set view error

もしEntityListingメタデータ定義を1件でも作成した場合は、必ずパラメータに defName を指定してください。

4. 保存リスト

SavedListはEntityListingや定型集計・簡易BIのローデータを保存、復元する機能です。

Widget

画面左側のWidget表示エリアに表示されます。

savedlist widget
保存リスト

他のユーザが保存していてかつ公開されているデータも含めて表示されます。

所有リスト

自分で保存したデータが表示されます。 こちらはフォルダ形式ではありません。

データを選択することで、右側に詳細画面が表示されます。

Parts

トップ画面に表示されます。

savedlist parts

保存リストと、所有リストがタブで表示されます。 フォルダの作成や名前変更、削除、保存データの名前変更、削除が可能です。 フォルダや保存データを編集する機能はPartsでのみ提供しています

所有するリスト については、Parts上で 共有他者編集 のON・OFFを設定することができます。

savedlist parts own

4.1. 設定

TopViewのSavedListパーツでは以下の設定が可能です。

設定項目 設定値

Title

タイトルをカスタマイズする場合に設定します。

Icon Tag

Fontawsomeによるアイコンタグを設定します。

visible to top view

PartsをTop画面に表示するかを設定します。(デフォルト:表示) Top画面に保存リストPartsを表示したくない場合で、保存リスト機能に対するその他の設定のみを行う場合に表示不可にします。

can delete other user saved list

他のユーザが保存したデータを削除可能かを設定します。(デフォルト:不可) 削除可能とした場合、他者が作成した保存リストのうち、他者編集を許可しているリストが削除できるようになります。

can create folder

フォルダを作成可能かを設定します。(デフォルト:可) 作成可能とした場合は、 保存リスト のタブに フォルダの作成 ボタンが表示されます。 またポップアップに フォルダの作成 が表示されます。

can delete folder

フォルダを削除可能かを設定します。(デフォルト:不可) 削除可能とした場合は、ポップアップに 削除 が表示されます。

can csv download

CSV Downloadが可能かを設定します。(デフォルト:可)

run a search when loading detailed data

保存リストを表示する際に、初期検索を行うかのデフォルト値を設定します。

link action mode

保存データのリンクをクリックした際に、ダイアログで表示するか画面遷移するかを指定します。(デフォルト:ダイアログ) 画面遷移 を選択した場合は、右クリックで別タブ表示などが行える状態になります。

4.2. 表示方法

メニューへの登録

TopViewの一部としてではなく、専用の保存リスト画面を表示したい場合は、保存リスト画面表示用のActionを利用します。(メニューにActionMenuItemを登録します)

フォルダの作成や他ユーザの作成したデータの削除など、標準動作を変更しない場合は、ActionMenuItemにあらかじめ登録されている ViewSavedListAction という雛型のメニューアイテムをメニューに追加してください。

savedlist menu

この設定によりメニューに 保存リスト が追加され、保存リスト画面を起動することができます。

savedlist view

標準動作を変更したい場合、ActionMenuItemをコピーし、下記パラメータを指定する必要があります。

Key 設定値

listingTitle

画面タイトルをカスタマイズする場合に設定します。

canDelete

他のユーザが保存したデータを削除可能かを設定します。(デフォルト:false) 削除可能とした場合は、 保存リスト のタブに 削除 ボタンが表示されます。 削除不可とした場合は、 所有するリスト タブ側のみ 削除 ボタンが表示されます。

canCreateFolder

フォルダを作成可能かを設定します。(デフォルト:true) 作成可能とした場合は、 保存リスト のタブに フォルダの作成 ボタンが表示されます。

linkActionMode

保存データのリンクをクリックした際に、画面遷移するかを指定します。(デフォルト:DIALOG) 画面遷移 にする場合は、 SCREEN_TRANSITION を指定してください。 画面遷移 の場合は、右クリックで別タブ表示などが行える状態になります。

TopViewでの表示

TopViewの一部として保存リストを表示させたい場合は、以下のようにItemをDropしてください。

savedlist topview

Widget、Parts、または両方を設定することができます。 この設定によりTOP画面から保存されたデータを参照することができます。

汎用検索(Entity Listing)