intra-mart Accel Kaiden! MasterBuilder 設定ガイド 第12版 2023-12-22

4.3. 設定の流れ

本項では、MasterBuilderの設定の流れを説明します。

4.3.1. テーブル定義

はじめに、対象となるマスタテーブルの定義を行います。
要件に合わせて次の各カラムを組み合わせて定義を行ってください。

4.3.1.1. 必須カラム

MasterBuilderを使用する場合は次のカラムは必ず設定してください。(全て「not null」制約)
論理名 物理名 PostgreSQL Oracle SqlServer
登録日時 entry_ts timestamp without time zone timestamp datetime2
登録ユーザ entry_user_cd varchar(100) varchar2(100) nvarchar(100)
更新カウント renew_cnt numeric(18,0) numeric(18,0) numeric(18,0)
更新日時 renew_ts timestamp without time zone timestamp datetime2
更新ユーザ renew_user_cd varchar(100) varchar2(100) nvarchar(100)

4.3.1.2. 特性カラム

会社化特性
会社化特性のマスタを作成する場合は次のカラムを設定してください。(全て「not null」制約)
論理名 物理名 PostgreSQL Oracle SqlServer
会社コード company_cd varchar(100) varchar2(100) nvarchar(100)
期間化特性
期間化特性のマスタを作成する場合は次のカラムを設定してください。(全て「not null」制約)
論理名 物理名 PostgreSQL Oracle SqlServer
期間コード term_cd varchar(50) varchar2(50) nvarchar(50)
開始日 start_date timestamp without time zone timestamp datetime2
終了日 end_date timestamp without time zone timestamp datetime2
削除フラグ delete_flag varchar(1) varchar2(1) nvarchar(1)
国際化特性
国際化特性のマスタを作成する場合は次のカラムを設定してください。(全て「not null」制約)
論理名 物理名 PostgreSQL Oracle SqlServer
ロケールID locale_id varchar(50) varchar2(50) nvarchar(50)

4.3.1.3. その他カラム

拡張用の項目として次のカラムを用意することでカスタマイズ性が向上します。
次のカラムはintra-mart Accel Kaiden!が提供するすべてのマスタに設定されています。
論理名 物理名 PostgreSQL Oracle SqlServer
予備項目A extension_a varchar(1000) varchar2(1000) nvarchar(1000)
予備項目B extension_b varchar(1000) varchar2(1000) nvarchar(1000)
予備項目C extension_c varchar(1000) varchar2(1000) nvarchar(1000)
予備項目D extension_d varchar(1000) varchar2(1000) nvarchar(1000)
予備項目E extension_e varchar(1000) varchar2(1000) nvarchar(1000)
予備項目F extension_f varchar(1000) varchar2(1000) nvarchar(1000)
予備項目G extension_g varchar(1000) varchar2(1000) nvarchar(1000)
予備項目H extension_h varchar(1000) varchar2(1000) nvarchar(1000)
予備項目I extension_i varchar(1000) varchar2(1000) nvarchar(1000)
予備項目J extension_j varchar(1000) varchar2(1000) nvarchar(1000)

4.3.1.4. 定義サンプル

次項以降では、次の定義を利用した場合の設定の流れを説明します。
  • PostgreSQL
    create table k99m_sample
    (
        company_cd                     varchar(100) not null,
        term_cd                        varchar(50) not null,
        start_date                     timestamp without time zone not null,
        end_date                       timestamp without time zone not null,
        delete_flag                    varchar(1) not null,
        locale_id                      varchar(50) not null,
        sample_cd                      varchar(100) not null,
        sample_name                    varchar(1000) not null,
        extension_a                    varchar(1000),
        extension_b                    varchar(1000),
        extension_c                    varchar(1000),
        extension_d                    varchar(1000),
        extension_e                    varchar(1000),
        extension_f                    varchar(1000),
        extension_g                    varchar(1000),
        extension_h                    varchar(1000),
        extension_i                    varchar(1000),
        extension_j                    varchar(1000),
        entry_ts                       timestamp without time zone not null,
        entry_user_cd                  varchar(100) not null,
        renew_cnt                      numeric(18,0) not null,
        renew_ts                       timestamp without time zone not null,
        renew_user_cd                  varchar(100) not null
    );
    alter table k99m_sample add primary key  (company_cd, sample_cd, locale_id, term_cd);
    
  • Oracle
    create table k99m_sample
    (
        company_cd                     varchar2(100) not null,
        term_cd                        varchar2(50) not null,
        start_date                     timestamp not null,
        end_date                       timestamp not null,
        delete_flag                    varchar2(1) not null,
        locale_id                      varchar2(50) not null,
        sample_cd                      varchar2(100) not null,
        sample_name                    varchar2(1000) not null,
        extension_a                    varchar2(1000),
        extension_b                    varchar2(1000),
        extension_c                    varchar2(1000),
        extension_d                    varchar2(1000),
        extension_e                    varchar2(1000),
        extension_f                    varchar2(1000),
        extension_g                    varchar2(1000),
        extension_h                    varchar2(1000),
        extension_i                    varchar2(1000),
        extension_j                    varchar2(1000),
        entry_ts                       timestamp not null,
        entry_user_cd                  varchar2(100) not null,
        renew_cnt                      numeric(18,0) not null,
        renew_ts                       timestamp not null,
        renew_user_cd                  varchar2(100) not null
    );
    alter table k99m_sample add primary key  (company_cd, sample_cd, locale_id, term_cd);
    
  • SqlServer
    create table k99m_sample
    (
        company_cd                     nvarchar(100) not null,
        term_cd                        nvarchar(50) not null,
        start_date                     datetime2 not null,
        end_date                       datetime2 not null,
        delete_flag                    nvarchar(1) not null,
        locale_id                      nvarchar(50) not null,
        sample_cd                      nvarchar(100) not null,
        sample_name                    nvarchar(1000) not null,
        extension_a                    nvarchar(1000),
        extension_b                    nvarchar(1000),
        extension_c                    nvarchar(1000),
        extension_d                    nvarchar(1000),
        extension_e                    nvarchar(1000),
        extension_f                    nvarchar(1000),
        extension_g                    nvarchar(1000),
        extension_h                    nvarchar(1000),
        extension_i                    nvarchar(1000),
        extension_j                    nvarchar(1000),
        entry_ts                       datetime2 not null,
        entry_user_cd                  nvarchar(100) not null,
        renew_cnt                      numeric(18,0) not null,
        renew_ts                       datetime2 not null,
        renew_user_cd                  nvarchar(100) not null
    );
    alter table k99m_sample add primary key  (company_cd, sample_cd, locale_id, term_cd);
    

4.3.2. Service、Entity作成

次にService、Entityの作成を行います。

4.3.2.1. Service、Entityの作成

Service、Entityを作成します。
作成方法の詳細は『intra-mart Accel Kaiden! プログラミングガイド』の「Service、Entity作成」を参照してください。

4.3.2.2. Service、Entityの配置

作成したService、Entityをプロジェクトに配置します。
配置先のパス、およびパッケージは必要に応じて変更してください。
また、必要に応じて「applicationContext.xml」を作成してください。
作成方法の詳細は『intra-mart Accel Kaiden! プログラミングガイド』の「基本 - 事前準備 - 開発環境構築 - applicationContext.xmlの作成」を参照してください。
(本説明では、intra-mart Accel Kaiden! 基盤モジュールに配置した想定で作成しています。)
  • K99mSample.java
    %ModuleProject%/src/main/generated/jp/co/slcs/kaiden/v2/base/foundation/model/entity/K99mSample.java
    package jp.co.slcs.kaiden.v2.base.foundation.model.entity;
    
    import java.io.Serializable;
    import java.sql.Timestamp;
    import com.miragesql.miragesql.annotation.Column;
    import com.miragesql.miragesql.annotation.PrimaryKey;
    import com.miragesql.miragesql.annotation.PrimaryKey.GenerationType;
    import com.miragesql.miragesql.annotation.Table;
    
    /**
     * サンプルマスタ.
     * 
     * @author XXX
     */
    @Table(name = "k99m_sample")
    public final class K99mSample extends GenerateEntity implements Serializable {
        
        /** シリアルバージョンUID. */
        private static final long serialVersionUID = 1L;
    
        /** フィールド名[会社コード]. */
        public static final String COMPANY_CD = "companyCd";
    
        /** フィールド名[期間コード]. */
        public static final String TERM_CD = "termCd";
    
        /** フィールド名[開始日]. */
        public static final String START_DATE = "startDate";
    
        /** フィールド名[終了日]. */
        public static final String END_DATE = "endDate";
    
        /** フィールド名[削除フラグ]. */
        public static final String DELETE_FLAG = "deleteFlag";
    
        /** フィールド名[ロケールid]. */
        public static final String LOCALE_ID = "localeId";
    
        /** フィールド名[サンプルコード]. */
        public static final String SAMPLE_CD = "sampleCd";
    
        /** フィールド名[サンプル名]. */
        public static final String SAMPLE_NAME = "sampleName";
        
        /** 会社コード. */
        @PrimaryKey(generationType = GenerationType.APPLICATION)
        @Column(name = "company_cd")
        public String companyCd;
        
        /** 期間コード. */
        @PrimaryKey(generationType = GenerationType.APPLICATION)
        @Column(name = "term_cd")
        public String termCd;
        
        /** 開始日. */
        @Column(name = "start_date")
        public Timestamp startDate;
        
        /** 終了日. */
        @Column(name = "end_date")
        public Timestamp endDate;
        
        /** 削除フラグ. */
        @Column(name = "delete_flag")
        public String deleteFlag;
        
        /** ロケールid. */
        @PrimaryKey(generationType = GenerationType.APPLICATION)
        @Column(name = "locale_id")
        public String localeId;
        
        /** サンプルコード. */
        @PrimaryKey(generationType = GenerationType.APPLICATION)
        @Column(name = "sample_cd")
        public String sampleCd;
        
        /** サンプル名. */
        @Column(name = "sample_name")
        public String sampleName;
        
    }
    
  • K99mSampleService.java
    %ModuleProject%/src/main/generated/jp/co/slcs/kaiden/v2/base/foundation/model/service/K99mSampleService.java
    package jp.co.slcs.kaiden.v2.base.foundation.model.service;
    
    import org.springframework.beans.factory.config.ConfigurableBeanFactory;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
    import jp.co.slcs.kaiden.v2.base.foundation.model.entity.K99mSample;
    
    /**
     * {@link K99mSample}のサービスクラス.
     * 
     * @author XXX
     */
    @Component
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    public final class K99mSampleService extends GenerateService<K99mSample> {
        //
    }
    

4.3.3. MasterBuilder定義作成

続いて、MasterBuilder定義を作成します。
本説明では、マスタIDを「sample」とします。

4.3.3.1. MasterBuilder定義ファイル作成

定義用のファイルを作成します。
ファイル名は必ず「%マスタID%.xml(sample.xml)」とします。

配置先
%ModuleProject%/src/main/storage/system/kaiden/generic/master/sample.xml

内容
<?xml version="1.0" encoding="UTF-8"?>
<genericMasterSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/genericMasterSettings">
</genericMasterSettings>

4.3.3.2. 基本設定

マスタIDや作成したServiceを基に基本設定を行います。

内容
<?xml version="1.0" encoding="UTF-8"?>
<genericMasterSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/genericMasterSettings">
  
  <!-- 基本設定 -->
  <masterId>sample</masterId>
  <surfaceKey>master_name</surfaceKey>
  <service>k99mSampleService</service>
  <resources>service://kaiden/master/sample</resources>
</genericMasterSettings>
  • マスタID(genericMasterSettings / masterId)
    「sample」を設定します。
  • サーフィスキー(genericMasterSettings / surfaceKey):必須
    「master_name」を設定します。
    実際のサーフィスは、後述のサーフィス設定で行います。
  • サービスクラス(genericMasterSettings / service):任意
    Service、Entity作成」で作成したServiceのコンポーネント名「k99mSampleService」を設定します。
  • 認可リソース(genericMasterSettings / resources):任意
    「service://kaiden/master/sample」を設定します。
    合わせて、認可設定を行います。

4.3.3.3. 項目設定

作成したEntityを基に項目設定を行います。
Entityに保持していない項目(会社名など)もSQLで取得する場合は設定します。
次の例では、カスタマイズ用の予備項目はテキストボックスとして設定しています。

また、作成したEntityに直接保持はしていませんが、GenerateEntityに保持する次の項目の設定します。
  • 登録日(entryTs)
  • 登録者(entryUserCd)
  • 更新カウント(renewCnt)
  • 更新日(renewTs)
  • 更新者(renewUserCd)
  • 予備項目A~J(extensionA~J)
内容
<?xml version="1.0" encoding="UTF-8"?>
<genericMasterSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/genericMasterSettings">
  
  <!-- 基本設定 -->
  <!-- 略 -->
  
  <!-- 項目設定 -->
  <items>
    <!-- 会社コード -->
    <item name="companyCd" surfaceKey="company_code" primary="true">
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'companyExists', 'args':['companyCd','searchCriteriaDate','true']}"/>
      </validates>
    </item>
    <!-- 会社名 -->
    <item name="companyName" surfaceKey="company_name"/>
    <!-- 期間コード -->
    <item name="termCd" surfaceKey="term_code" primary="true"/>
    <!-- 開始日 -->
    <item name="startDate" surfaceKey="start_date">
      <convert display="STRING_DATE" process="TIMESTAMP"/>
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'date'}"/>
      </validates>
    </item>
    <!-- 終了日 -->
    <item name="endDate" surfaceKey="end_date">
      <convert display="STRING_DATE" process="TIMESTAMP_SHIFT"/>
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'date'}"/>
        <validate type="DEFAULT" args="{'type':'dateMin', 'args':'startDate'}"/>
      </validates>
    </item>
    <!-- 削除フラグ -->
    <item name="deleteFlag" surfaceKey="delete_flag">
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'flag'}"/>
      </validates>
    </item>
    <!-- ロケールID -->
    <item name="localeId" surfaceKey="locale_id" primary="true">
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'locale'}"/>
      </validates>
    </item>
    <!-- サンプルコード -->
    <item name="sampleCd" surfaceKey="sample_code" type="TEXT_CODE" primary="true">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="100"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'kaidenId'}"/>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'100'}"/>
      </validates>
    </item>
    <!-- サンプル名 -->
    <item name="sampleName" surfaceKey="sample_name" type="TEXT_LOCALES">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目A -->
    <item name="extensionA" surfaceKey="extension_a" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目B -->
    <item name="extensionB" surfaceKey="extension_b" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目C -->
    <item name="extensionC" surfaceKey="extension_c" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目D -->
    <item name="extensionD" surfaceKey="extension_d" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目E -->
    <item name="extensionE" surfaceKey="extension_e" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目F -->
    <item name="extensionF" surfaceKey="extension_f" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目G -->
    <item name="extensionG" surfaceKey="extension_g" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目H -->
    <item name="extensionH" surfaceKey="extension_h" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目I -->
    <item name="extensionI" surfaceKey="extension_i" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目J -->
    <item name="extensionJ" surfaceKey="extension_j" type="TEXT_LOCALES">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 登録日 -->
    <item name="entryTs" surfaceKey="entry_ts">
      <convert display="STRING_TIMESTAMP" process="TIMESTAMP"/>
    </item>
    <!-- 登録者 -->
    <item name="entryUserCd" surfaceKey="entry_user_cd"/>
    <!-- 更新カウント -->
    <item name="renewCnt" surfaceKey="renew_cnt">
      <convert display="STRING" process="LONG"/>
    </item>
    <!-- 更新日 -->
    <item name="renewTs" surfaceKey="renew_ts">
      <convert display="STRING_TIMESTAMP" process="TIMESTAMP"/>
    </item>
    <!-- 更新者 -->
    <item name="renewUserCd" surfaceKey="renew_user_cd"/>
  </items>
</genericMasterSettings>

4.3.3.4. 拡張設定

本説明では、拡張設定は行いません。
MasterBuilderの標準機能を拡張(カスタマイズ)する場合は必要に応じて設定してください。

4.3.3.5. サーフィス設定

項目設定で設定した各項目のサーフィスを設定します。
次の例では、デフォルトのサーフィスのみ設定を行っていますが、
複数ロケール用の設定を行う場合は、「サーフィス設定」を参考に設定を行ってください。

内容
<?xml version="1.0" encoding="UTF-8"?>
<genericMasterSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/genericMasterSettings">
  
  <!-- 基本設定 -->
  <!-- 略 -->
  
  <!-- 項目設定 -->
  <!-- 略 -->
  
  <!-- サーフィス設定 -->
  <surfaces>
    <surface surfaceKey="master_name"   surface="サンプル" />
    <surface surfaceKey="company_code"  surface="会社コード"/>
    <surface surfaceKey="company_name"  surface="会社名"/>
    <surface surfaceKey="term_code"     surface="期間コード"/>
    <surface surfaceKey="start_date"    surface="開始日"/>
    <surface surfaceKey="end_date"      surface="終了日"/>
    <surface surfaceKey="delete_flag"   surface="削除フラグ"/>
    <surface surfaceKey="locale_id"     surface="ロケールID"/>
    <surface surfaceKey="sample_code"   surface="サンプルコード"/>
    <surface surfaceKey="sample_name"   surface="サンプル名"/>
    <surface surfaceKey="extension_a"   surface="予備項目A"/>
    <surface surfaceKey="extension_b"   surface="予備項目B"/>
    <surface surfaceKey="extension_c"   surface="予備項目C"/>
    <surface surfaceKey="extension_d"   surface="予備項目D"/>
    <surface surfaceKey="extension_e"   surface="予備項目E"/>
    <surface surfaceKey="extension_f"   surface="予備項目F"/>
    <surface surfaceKey="extension_g"   surface="予備項目G"/>
    <surface surfaceKey="extension_h"   surface="予備項目H"/>
    <surface surfaceKey="extension_i"   surface="予備項目I"/>
    <surface surfaceKey="extension_j"   surface="予備項目J"/>
    <surface surfaceKey="entry_ts"      surface="登録日"/>
    <surface surfaceKey="entry_user_cd" surface="登録者"/>
    <surface surfaceKey="renew_cnt"     surface="更新カウント"/>
    <surface surfaceKey="renew_ts"      surface="更新日"/>
    <surface surfaceKey="renew_user_cd" surface="更新者"/>
  </surfaces>
</genericMasterSettings>

4.3.3.6. メンテナンス設定

項目設定で設定した各項目の内、メンテナンス機能で利用する項目を設定します。
次の例では、サンプルコード・サンプル名を一覧画面、編集画面に表示されるように設定しています。

内容
<?xml version="1.0" encoding="UTF-8"?>
<genericMasterSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/genericMasterSettings">
  
  <!-- 基本設定 -->
  <!-- 略 -->
  
  <!-- 項目設定 -->
  <!-- 略 -->
  
  <!-- サーフィス設定 -->
  <!-- 略 -->
  
  <!-- メンテナンス設定 -->
  <mainte>
    <listItems>
      <item name="sampleCd" width="250px"/>
      <item name="sampleName"/>
    </listItems>
    <editItems>
      <item name="sampleCd"/>
      <item name="sampleName"/>
    </editItems>
  </mainte>
</genericMasterSettings>

4.3.3.7. 検索・リストデータ設定

項目設定で設定した各項目の内、検索・リストデータ機能で利用する項目を設定します。
次の例では、サンプルコード・サンプル名を検索結果画面に、サンプル名をセレクトボックスに表示されるように設定しています。

内容
<?xml version="1.0" encoding="UTF-8"?>
<genericMasterSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/genericMasterSettings">
  
  <!-- 基本設定 -->
  <!-- 略 -->
  
  <!-- 項目設定 -->
  <!-- 略 -->
  
  <!-- サーフィス設定 -->
  <!-- 略 -->
  
  <!-- メンテナンス設定 -->
  <!-- 略 -->
  
  <!-- 検索設定 -->
  <search type="SEARCH">
    <items>
      <item name="sampleCd"   type="CODE"/>
      <item name="sampleName" type="NAME"/>
    </items>
  </search>
  
</genericMasterSettings>

4.3.3.8. インポート設定

項目設定で設定した各項目の内、インポート機能で利用する項目を設定します。
次の例では、インポートファイルのレイアウトが「会社コード,開始日,終了日,削除フラグ,ロケールID,サンプルコード,サンプル名」となる様に設定しています。
インポートファイルのレイアウトを変更する場合は、設定順を変更してください。

内容
<?xml version="1.0" encoding="UTF-8"?>
<genericMasterSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/genericMasterSettings">
  
  <!-- 基本設定 -->
  <!-- 略 -->
  
  <!-- 項目設定 -->
  <!-- 略 -->
  
  <!-- サーフィス設定 -->
  <!-- 略 -->
  
  <!-- メンテナンス設定 -->
  <!-- 略 -->
  
  <!-- 検索設定 -->
  <!-- 略 -->
  
  <!-- インポート設定 -->
  <importJob>
    <items>
      <item name="companyCd"/>
      <item name="startDate"/>
      <item name="endDate"/>
      <item name="deleteFlag"/>
      <item name="localeId"/>
      <item name="sampleCd"/>
      <item name="sampleName"/>
    </items>
  </importJob>
</genericMasterSettings>

4.3.3.9. エクスポート設定

項目設定で設定した各項目の内、エクスポート機能で利用する項目を設定します。
次の例では、エクスポートファイルのレイアウトが「会社コード,開始日,終了日,削除フラグ,ロケールID,サンプルコード,サンプル名」となる様に設定しています。
エクスポートファイルのレイアウトを変更する場合は、設定順を変更してください。

内容
<?xml version="1.0" encoding="UTF-8"?>
<genericMasterSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/genericMasterSettings">
  
  <!-- 基本設定 -->
  <!-- 略 -->
  
  <!-- 項目設定 -->
  <!-- 略 -->
  
  <!-- サーフィス設定 -->
  <!-- 略 -->
  
  <!-- メンテナンス設定 -->
  <!-- 略 -->
  
  <!-- 検索設定 -->
  <!-- 略 -->
  
  <!-- インポート設定 -->
  <!-- 略 -->
  
  <!-- エクスポート設定 -->
  <exportJob>
    <items>
      <item name="companyCd"/>
      <item name="startDate"/>
      <item name="endDate"/>
      <item name="deleteFlag"/>
      <item name="localeId"/>
      <item name="sampleCd"/>
      <item name="sampleName"/>
    </items>
  </exportJob>
</genericMasterSettings>

4.3.3.10. MasterBuilder定義

前項までの設定を行ったMasterBuilder定義は次の様になります。

内容
<?xml version="1.0" encoding="UTF-8"?>
<genericMasterSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/genericMasterSettings">
  
  <!-- 基本設定 -->
  <masterId>sample</masterId>
  <surfaceKey>master_name</surfaceKey>
  <service>k99mSampleService</service>
  <resources>service://kaiden/master/sample</resources>
  
  <!-- 項目設定 -->
  <items>
    <!-- 会社コード -->
    <item name="companyCd" surfaceKey="company_code" primary="true">
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'companyExists', 'args':['companyCd','searchCriteriaDate','true']}"/>
      </validates>
    </item>
    <!-- 会社名 -->
    <item name="companyName" surfaceKey="company_name"/>
    <!-- 期間コード -->
    <item name="termCd" surfaceKey="term_code" primary="true"/>
    <!-- 開始日 -->
    <item name="startDate" surfaceKey="start_date">
      <convert display="STRING_DATE" process="TIMESTAMP"/>
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'date'}"/>
      </validates>
    </item>
    <!-- 終了日 -->
    <item name="endDate" surfaceKey="end_date">
      <convert display="STRING_DATE" process="TIMESTAMP_SHIFT"/>
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'date'}"/>
        <validate type="DEFAULT" args="{'type':'dateMin', 'args':'startDate'}"/>
      </validates>
    </item>
    <!-- 削除フラグ -->
    <item name="deleteFlag" surfaceKey="delete_flag">
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'flag'}"/>
      </validates>
    </item>
    <!-- ロケールID -->
    <item name="localeId" surfaceKey="locale_id" primary="true">
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'locale'}"/>
      </validates>
    </item>
    <!-- サンプルコード -->
    <item name="sampleCd" surfaceKey="sample_code" type="TEXT_CODE" primary="true">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="100"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'kaidenId'}"/>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'100'}"/>
      </validates>
    </item>
    <!-- サンプル名 -->
    <item name="sampleName" surfaceKey="sample_name" type="TEXT_LOCALES">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'required'}"/>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目A -->
    <item name="extensionA" surfaceKey="extension_a" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目B -->
    <item name="extensionB" surfaceKey="extension_b" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目C -->
    <item name="extensionC" surfaceKey="extension_c" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目D -->
    <item name="extensionD" surfaceKey="extension_d" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目E -->
    <item name="extensionE" surfaceKey="extension_e" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目F -->
    <item name="extensionF" surfaceKey="extension_f" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目G -->
    <item name="extensionG" surfaceKey="extension_g" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目H -->
    <item name="extensionH" surfaceKey="extension_h" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目I -->
    <item name="extensionI" surfaceKey="extension_i" type="TEXT">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 予備項目J -->
    <item name="extensionJ" surfaceKey="extension_j" type="TEXT_LOCALES">
      <args>
        <arg key="style"     value="width:300px;"/>
        <arg key="maxlength" value="250"/>
        <arg key="imeMode"   value="on"/>
      </args>
      <validates>
        <validate type="DEFAULT" args="{'type':'maxLength', 'args':'250'}"/>
      </validates>
    </item>
    <!-- 登録日 -->
    <item name="entryTs" surfaceKey="entry_ts">
      <convert display="STRING_TIMESTAMP" process="TIMESTAMP"/>
    </item>
    <!-- 登録者 -->
    <item name="entryUserCd" surfaceKey="entry_user_cd"/>
    <!-- 更新カウント -->
    <item name="renewCnt" surfaceKey="renew_cnt">
      <convert display="STRING" process="LONG"/>
    </item>
    <!-- 更新日 -->
    <item name="renewTs" surfaceKey="renew_ts">
      <convert display="STRING_TIMESTAMP" process="TIMESTAMP"/>
    </item>
    <!-- 更新者 -->
    <item name="renewUserCd" surfaceKey="renew_user_cd"/>
  </items>
  
  <!-- サーフィス設定 -->
  <surfaces>
    <surface surfaceKey="master_name"   surface="サンプル" />
    <surface surfaceKey="company_code"  surface="会社コード"/>
    <surface surfaceKey="company_name"  surface="会社名"/>
    <surface surfaceKey="term_code"     surface="期間コード"/>
    <surface surfaceKey="start_date"    surface="開始日"/>
    <surface surfaceKey="end_date"      surface="終了日"/>
    <surface surfaceKey="delete_flag"   surface="削除フラグ"/>
    <surface surfaceKey="locale_id"     surface="ロケールID"/>
    <surface surfaceKey="sample_code"   surface="サンプルコード"/>
    <surface surfaceKey="sample_name"   surface="サンプル名"/>
    <surface surfaceKey="extension_a"   surface="予備項目A"/>
    <surface surfaceKey="extension_b"   surface="予備項目B"/>
    <surface surfaceKey="extension_c"   surface="予備項目C"/>
    <surface surfaceKey="extension_d"   surface="予備項目D"/>
    <surface surfaceKey="extension_e"   surface="予備項目E"/>
    <surface surfaceKey="extension_f"   surface="予備項目F"/>
    <surface surfaceKey="extension_g"   surface="予備項目G"/>
    <surface surfaceKey="extension_h"   surface="予備項目H"/>
    <surface surfaceKey="extension_i"   surface="予備項目I"/>
    <surface surfaceKey="extension_j"   surface="予備項目J"/>
    <surface surfaceKey="entry_ts"      surface="登録日"/>
    <surface surfaceKey="entry_user_cd" surface="登録者"/>
    <surface surfaceKey="renew_cnt"     surface="更新カウント"/>
    <surface surfaceKey="renew_ts"      surface="更新日"/>
    <surface surfaceKey="renew_user_cd" surface="更新者"/>
  </surfaces>
  
  <!-- メンテナンス設定 -->
  <mainte>
    <listItems>
      <item name="sampleCd" width="250px"/>
      <item name="sampleName"/>
    </listItems>
    <editItems>
      <item name="sampleCd"/>
      <item name="sampleName"/>
    </editItems>
  </mainte>
  
  <!-- 検索設定 -->
  <search type="SEARCH">
    <items>
      <item name="sampleCd"   type="CODE"/>
      <item name="sampleName" type="NAME"/>
    </items>
  </search>
  
  <!-- インポート設定 -->
  <importJob>
    <items>
      <item name="companyCd"/>
      <item name="startDate"/>
      <item name="endDate"/>
      <item name="deleteFlag"/>
      <item name="localeId"/>
      <item name="sampleCd"/>
      <item name="sampleName"/>
    </items>
  </importJob>
  
  <!-- エクスポート設定 -->
  <exportJob>
    <items>
      <item name="companyCd"/>
      <item name="startDate"/>
      <item name="endDate"/>
      <item name="deleteFlag"/>
      <item name="localeId"/>
      <item name="sampleCd"/>
      <item name="sampleName"/>
    </items>
  </exportJob>
</genericMasterSettings>

4.3.4. 検索用SQL作成

最後に、MasterBuilderで使用する検索用のSQLを作成します。

配置先
%ModuleProject%/src/main/resources/META-INF/sql/jp/co/slcs/kaiden/v2/generic/master/sample.sql

4.3.4.1. 検索項目設定

一覧検索、対象検索、期間検索、マスタ検索、エクスポートで使用する検索項目を設定します。
次の例では、「テーブル定義」で定義した項目に加え、会社名を抽出する様に設定しています。

内容
select
    target.company_cd
  , dept.department_name as company_name
  , target.term_cd
  , target.start_date
  , target.end_date
  , target.delete_flag
  , target.locale_id
  , target.sample_cd
  , target.sample_name
  , target.extension_a
  , target.extension_b
  , target.extension_c
  , target.extension_d
  , target.extension_e
  , target.extension_f
  , target.extension_g
  , target.extension_h
  , target.extension_i
  , target.extension_j
  , target.entry_ts
  , target.entry_user_cd
  , target.renew_cnt
  , target.renew_ts
  , target.renew_user_cd
from
  k99m_sample target
  left join
    imm_department dept
    on  dept.company_cd        =  target.company_cd
    and dept.department_set_cd =  target.company_cd
    and dept.department_cd     =  target.company_cd
    and dept.locale_id         =  /*searchCriteriaLocale*/'ja'
    and dept.start_date        <= /*searchCriteriaDate*/'2000/01/01'
    and dept.end_date          >  /*searchCriteriaDate*/'2000/01/01'

4.3.4.2. 一覧検索条件設定

メンテナンス機能の一覧画面表示用の条件を設定します。
SQLに引き渡される検索条件は、「一覧検索用SQL」を参照してください。

内容
/* 略 */

/*IF searchType == "search"*/
/*BEGIN*/
where
  /*IF searchCriteriaCompany != null*/
  target.company_cd = /*searchCriteriaCompany*/'searchCriteriaCompany'
  /*END*/
  /*IF searchCriteriaDate != null*/
  and target.start_date <= /*searchCriteriaDate*/'2000/01/01'
  and target.end_date   >  /*searchCriteriaDate*/'2000/01/01'
  /*END*/
  /*IF searchWithDisabled != null*/
  and target.delete_flag = /*searchWithDisabled*/'searchWithDisabled'
  /*END*/
  /*IF searchCriteriaLocale != null*/
  and target.locale_id = /*searchCriteriaLocale*/'searchCriteriaLocale'
  /*END*/
  /*IF searchCriteriaKeyword != null*/
  and (
    target.sample_cd           like /*searchCriteriaKeyword*/'%' ESCAPE '$'
    or target.sample_name      like /*searchCriteriaKeyword*/'%' ESCAPE '$'
  )
  /*END*/
/*END*/
/*IF orderBy != null*/
order by /*$orderBy*/sample_cd
/*END*/
/*END*/

4.3.4.3. 対象検索条件設定

メンテナンス機能の編集画面(編集部品)表示用の条件を設定します。
SQLに引き渡される検索条件は、「対象検索用SQL」を参照してください。

内容
/* 略 */

/*IF searchType == "search"*/
  /* 略 */
/*END*/

/*IF searchType == "select"*/
/*BEGIN*/
where
  /*IF sampleCd != null*/
  target.sample_cd = /*sampleCd*/'sampleCd'
  /*END*/
  /*IF companyCd != null*/
  and target.company_cd = /*companyCd*/'companyCd'
  /*END*/
  /*IF termCd != null*/
  and target.term_cd = /*termCd*/'termCd'
  /*END*/
/*END*/
order by sample_cd
/*END*/

4.3.4.4. 期間検索条件設定

メンテナンス機能の編集画面(期間部品)表示用の条件を設定します。
SQLに引き渡される検索条件は、「期間検索用SQL」を参照してください。

内容
/* 略 */

/*IF searchType == "search"*/
  /* 略 */
/*END*/

/*IF searchType == "select"*/
  /* 略 */
/*END*/

/*IF searchType == "term"*/
/*BEGIN*/
where
  /*IF sampleCd != null*/
  target.sample_cd = /*sampleCd*/'sampleCd'
  /*END*/
  /*IF companyCd != null*/
  and target.company_cd = /*companyCd*/'companyCd'
  /*END*/
  /*IF localeId != null*/
  and target.locale_id = /*localeId*/'localeId'
  /*END*/
/*END*/
order by sample_cd, start_date
/*END*/

4.3.4.5. マスタ検索条件設定

検索部品やセレクトボックス表示用の条件を設定します。
SQLに引き渡される検索条件は、「マスタ検索用SQL」を参照してください。

内容
/* 略 */

/*IF searchType == "search"*/
  /* 略 */
/*END*/

/*IF searchType == "select"*/
  /* 略 */
/*END*/

/*IF searchType == "term"*/
  /* 略 */
/*END*/

/*IF searchType == "master"*/
/*BEGIN*/
where
  /*IF sampleCd != null*/
  target.sample_cd = /*sampleCd*/'sampleCd'
  /*END*/
  /*IF searchCriteriaCompany != null*/
  and target.company_cd = /*searchCriteriaCompany*/'searchCriteriaCompany'
  /*END*/
  /*IF searchCriteriaDate != null*/
  and target.start_date <= /*searchCriteriaDate*/'2000/01/01'
  and target.end_date    > /*searchCriteriaDate*/'2000/01/01'
  /*END*/
  /*IF deleteFlag != null*/
  and target.delete_flag = /*deleteFlag*/'deleteFlag'
  /*END*/
  /*IF searchCriteriaLocale != null*/
  and target.locale_id = /*searchCriteriaLocale*/'searchCriteriaLocale'
  /*END*/
  /*IF searchCriteriaKeyword != null*/
  and (
    target.sample_cd           like /*searchCriteriaKeyword*/'%' ESCAPE '$'
    or target.sample_name      like /*searchCriteriaKeyword*/'%' ESCAPE '$'
  )
  /*END*/ 
/*END*/
order by sample_cd
/*END*/

4.3.4.6. エクスポート条件設定

エクスポート用の条件を設定します。
SQLに引き渡される検索条件は、「エクスポート用SQL」を参照してください。

内容
/* 略 */

/*IF searchType == "search"*/
  /* 略 */
/*END*/

/*IF searchType == "select"*/
  /* 略 */
/*END*/

/*IF searchType == "term"*/
  /* 略 */
/*END*/

/*IF searchType == "master"*/
  /* 略 */
/*END*/

/*IF searchType == "export"*/
/*BEGIN*/
where
  /*IF searchCriteriaCompany != null*/
  target.company_cd = /*searchCriteriaCompany*/'searchCriteriaCompany'
  /*END*/
  /*IF targetDate != null*/
  and target.start_date <= /*targetDate*/'2000/01/01'
  and target.end_date    > /*targetDate*/'2000/01/01'
  /*END*/
  /*IF renewTs != null*/
  and target.renew_ts >= /*renewTs*/'2000/01/01'
  /*END*/
/*END*/
order by sample_cd, start_date, locale_id
/*END*/

4.3.4.7. 検索用SQL

前項までの設定を行った検索用SQLは次の様になります。

内容
select
    target.company_cd
  , dept.department_name as company_name
  , target.term_cd
  , target.start_date
  , target.end_date
  , target.delete_flag
  , target.locale_id
  , target.sample_cd
  , target.sample_name
  , target.extension_a
  , target.extension_b
  , target.extension_c
  , target.extension_d
  , target.extension_e
  , target.extension_f
  , target.extension_g
  , target.extension_h
  , target.extension_i
  , target.extension_j
  , target.entry_ts
  , target.entry_user_cd
  , target.renew_cnt
  , target.renew_ts
  , target.renew_user_cd
from
  k99m_sample target
  left join
    imm_department dept
    on  dept.company_cd        =  target.company_cd
    and dept.department_set_cd =  target.company_cd
    and dept.department_cd     =  target.company_cd
    and dept.locale_id         =  /*searchCriteriaLocale*/'ja'
    and dept.start_date        <= /*searchCriteriaDate*/'2000/01/01'
    and dept.end_date          >  /*searchCriteriaDate*/'2000/01/01'

/*IF searchType == "search"*/
/*BEGIN*/
where
  /*IF searchCriteriaCompany != null*/
  target.company_cd = /*searchCriteriaCompany*/'searchCriteriaCompany'
  /*END*/
  /*IF searchCriteriaDate != null*/
  and target.start_date <= /*searchCriteriaDate*/'2000/01/01'
  and target.end_date   >  /*searchCriteriaDate*/'2000/01/01'
  /*END*/
  /*IF searchWithDisabled != null*/
  and target.delete_flag = /*searchWithDisabled*/'searchWithDisabled'
  /*END*/
  /*IF searchCriteriaLocale != null*/
  and target.locale_id = /*searchCriteriaLocale*/'searchCriteriaLocale'
  /*END*/
  /*IF searchCriteriaKeyword != null*/
  and (
    target.sample_cd           like /*searchCriteriaKeyword*/'%' ESCAPE '$'
    or target.sample_name      like /*searchCriteriaKeyword*/'%' ESCAPE '$'
  )
  /*END*/
/*END*/
/*IF orderBy != null*/
order by /*$orderBy*/sample_cd
/*END*/
/*END*/

/*IF searchType == "select"*/
/*BEGIN*/
where
  /*IF sampleCd != null*/
  target.sample_cd = /*sampleCd*/'sampleCd'
  /*END*/
  /*IF companyCd != null*/
  and target.company_cd = /*companyCd*/'companyCd'
  /*END*/
  /*IF termCd != null*/
  and target.term_cd = /*termCd*/'termCd'
  /*END*/
/*END*/
order by sample_cd
/*END*/

/*IF searchType == "term"*/
/*BEGIN*/
where
  /*IF sampleCd != null*/
  target.sample_cd = /*sampleCd*/'sampleCd'
  /*END*/
  /*IF companyCd != null*/
  and target.company_cd = /*companyCd*/'companyCd'
  /*END*/
  /*IF localeId != null*/
  and target.locale_id = /*localeId*/'localeId'
  /*END*/
/*END*/
order by sample_cd, start_date
/*END*/

/*IF searchType == "master"*/
/*BEGIN*/
where
  /*IF sampleCd != null*/
  target.sample_cd = /*sampleCd*/'sampleCd'
  /*END*/
  /*IF searchCriteriaCompany != null*/
  and target.company_cd = /*searchCriteriaCompany*/'searchCriteriaCompany'
  /*END*/
  /*IF searchCriteriaDate != null*/
  and target.start_date <= /*searchCriteriaDate*/'2000/01/01'
  and target.end_date    > /*searchCriteriaDate*/'2000/01/01'
  /*END*/
  /*IF deleteFlag != null*/
  and target.delete_flag = /*deleteFlag*/'deleteFlag'
  /*END*/
  /*IF searchCriteriaLocale != null*/
  and target.locale_id = /*searchCriteriaLocale*/'searchCriteriaLocale'
  /*END*/
  /*IF searchCriteriaKeyword != null*/
  and (
    target.sample_cd           like /*searchCriteriaKeyword*/'%' ESCAPE '$'
    or target.sample_name      like /*searchCriteriaKeyword*/'%' ESCAPE '$'
  )
  /*END*/ 
/*END*/
order by sample_cd
/*END*/

/*IF searchType == "export"*/
/*BEGIN*/
where
  /*IF searchCriteriaCompany != null*/
  target.company_cd = /*searchCriteriaCompany*/'searchCriteriaCompany'
  /*END*/
  /*IF targetDate != null*/
  and target.start_date <= /*targetDate*/'2000/01/01'
  and target.end_date    > /*targetDate*/'2000/01/01'
  /*END*/
  /*IF renewTs != null*/
  and target.renew_ts >= /*renewTs*/'2000/01/01'
  /*END*/
/*END*/
order by sample_cd, start_date, locale_id
/*END*/

4.3.5. 動作確認

これまでに設定した内容を動作確認します。

配置先
src
└─main
    ├─generated
    │  └─jp
    │      └─co
    │          └─slcs
    │              └─kaiden
    │                  └─v2
    │                      └─base
    │                           └─foundation
    │                              └─model
    │                                  ├─entity
    │                                  │   └─K99mSample.java
    │                                  └─service
    │                                      └─K99mSampleService.java
    │
    ├─resources
    │  └─META-INF
    │     └─sql
    │         └─jp
    │             └─co
    │                 └─slcs
    │                     └─kaiden
    │                         └─v2
    │                             └─generic
    │                                 └─master
    │                                     └─sample.sql
    │
    │
    └─storage
        └─system
            └─kaiden
                └─generic
                    └─master
                        └─sample.xml

コラム

配置先には記載していませんが、「テーブル定義」で定義したテーブルを作成してください。

4.3.5.1. メンテナンス機能

メンテナンス機能は、次の手順で動作確認を行います。
  1. 認可リソース作成・設定
    MasterBuilder定義で設定した認可リソース「service://kaiden/master/sample」を設定し、検証用のユーザに設定します。
    また、認可リソース「service://kaiden/generic/master」を検証用のユーザに設定します。
    ../../../_images/mainte_001.png
    ../../../_images/mainte_002.png
  2. メンテナンス機能表示
    「http://<HOST>:<PORT>/<CONTEXT_PATH>/kaiden/v2/generic/master?masterId=sample」にアクセスし、マスタメンテナンス画面を表示します。
    ../../../_images/mainte_003.png
  3. 動作確認
    一覧検索や新規登録、更新、削除などが正しく行われることを確認します。
    ../../../_images/mainte_004.png
    ../../../_images/mainte_005.png

コラム

メニューに設定する場合は、次の様に設定します。
../../../_images/mainte_006.png
  • メニューアイテムID
    任意の値を設定してください。
  • メニューアイテム名
    任意の値を設定してください。
  • URL
    kaiden/v2/generic/master
  • 呼出し方法
    POST
  • 引数
    値には、マスタIDを設定します。
    キー
    masterId sample

4.3.5.2. 検索部品・セレクトボックス

検索部品・セレクトボックスは、次の手順で動作確認を行います。
事前にマスタメンテナンス機能を利用して、検索対象のマスタデータを作成してください。
  1. 確認用アプリケーション作成
    検索部品・セレクトボックスの動作確認を行うためのアプリケーションを作成します。

    Controller
    %ModuleProject%/src/main/java/jp/co/slcs/kaiden/v2/base/feature/controller/kaiden/sample/SampleController.java
    package jp.co.slcs.kaiden.v2.base.feature.controller.kaiden.sample;
    
    import org.springframework.beans.factory.config.ConfigurableBeanFactory;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    /**
     * Sample(Controller).
     * 
     * @author Sumitomo Life Information Systems Co.,Ltd.
     */
    @Controller
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    @RequestMapping("kaiden/v2/sample/sample")
    public class SampleController {
        
        /**
         * index.
         * 
         * @return /kaiden/v2/base/sample/sample.jsp
         */
        @RequestMapping(value = {"", "/index"})
        public String index() {
            return "/kaiden/v2/base/sample/sample.jsp";
        }
    }
    

    JSP
    %ModuleProject%/src/main/webapp/WEB-INF/views/kaiden/v2/base/sample/sample.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
    <%@ taglib prefix="k" uri="http://kaiden.slcs.co.jp/taglib/v2/ui" %>
    <%@ taglib prefix="k_generic" uri="http://kaiden.slcs.co.jp/taglib/v2/generic" %>
    <%@ taglib prefix="imui" uri="http://www.intra-mart.co.jp/taglib/imui" %>
    <%@ taglib prefix="imart" uri="http://www.intra-mart.co.jp/taglib/im-tenant" %>
    
    
    <c:set var="gadgetClass">sampleGadget</c:set>
    <c:set var="gadgetVariation">v01</c:set>
    <c:set var="gadgetInstance">0</c:set>
    <c:set var="gadgetId">${gadgetClass}_${gadgetVariation}_${gadgetInstance}</c:set>
    <c:set var="blockId">inputArea</c:set>
    <c:set var="extensionId">${gadgetClass}_${gadgetVariation}</c:set>
    
    <imart type="head">
      <title>サンプル</title>
      <jsp:include page="/WEB-INF/views/kaiden/v2/base/foundation/commonIncludeHeader.jsp"></jsp:include>
    </imart>
    
    <div class="imui-title">
      <h1>サンプル</h1>
    </div>
    
    <div class="imui-form-container-wide" style="overflow:auto;min-width:930px">
      <div id="kaiden-contents-container" style="overflow:hidden">
        <div id="kaiden-system-container" style="display:none">
          <jsp:include page="/WEB-INF/views/kaiden/v2/base/foundation/genericErrorContainer.jsp" ></jsp:include>
          <jsp:include page="/WEB-INF/views/kaiden/v2/base/foundation/dateTextController.jsp"></jsp:include>
        </div>
        <jsp:include page="/WEB-INF/views/kaiden/v2/base/foundation/tmtable/tmtableOperationPanel.jsp"></jsp:include>
        <div id="kaiden-mainte-controller">
            <k:gadgetContainer gadgetId="KaidenMainteController_v01_0"
                               gadgetClass="KaidenMainteController"
                               gadgetVariation="v01"
                               gadgetInstance="0">
            </k:gadgetContainer>
        </div>
        <div id="kaiden-mainte-mainte-container">
          <k:gadgetContainer
            gadgetClass="${gadgetClass}"
            gadgetVariation="${gadgetVariation}"
            gadgetInstance="${gadgetInstance}"
            gadgetTitle="Sample"
            gadgetId="${gadgetId}">
            <k:blockContainer id="${blockId}">
              <table class="imui-form" style="width:100%">
                <colgroup>
                  <col style="width:200px;" />
                  <col />
                </colgroup>
                <tr>
                  <th><k:surface surfaceKey="検索基準日"/></th>
                  <td><k:date name="searchCriteriaDate" mode="0"/></td>
                </tr>
                <tr>
                  <th><k:surface surfaceKey="検索基準ロケール"/></th>
                  <td>
                    <k_generic:master
                      masterId="locale"
                      extensionId="${extensionId}"
                      searchType="search"
                      mode="0"
                      name="searchCriteriaLocale"
                      viewName="searchCriteriaLocaleName"
                      surfaceKey=""
                      criteria="{'localeId':'searchCriteriaLocale'}"
                      resultChain="{'searchCriteriaLocale':'localeId', 'searchCriteriaLocaleName':'localeName'}"
                      resultValue="localeName"
                      primaryTarget="searchCriteriaLocale"
                      style="width:200px;"
                    />
                  </td>
                </tr>
                
                <tr>
                  <th><k:surface surfaceKey="検索基準会社"/></th>
                  <td>
                    <k_generic:master
                      masterId="company"
                      extensionId="${extensionId}"
                      searchType="search"
                      mode="0"
                      name="searchCriteriaCompany"
                      viewName="searchCriteriaCompanyName"
                      surfaceKey=""
                      criteria="{'searchCriteriaCompany':'searchCriteriaCompany', 'searchCriteriaDate':'searchCriteriaDate', 'searchCriteriaLocale':'searchCriteriaLocale', 'includeDisabled':'true'}"
                      resultChain="{'searchCriteriaCompany':'companyCd', 'searchCriteriaCompanyName':'companyName'}"
                      resultValue="companyName"
                      primaryTarget="searchCriteriaCompany"
                      
                      refreshTarget="searchCriteriaDate,searchCriteriaLocale"
                      gadgetId="${gadgetId}"
                      gadgetBlockId="${blockId}"
                      style="width:200px;"
                    />
                  </td>
                </tr>
              </table>
              <br/>
              <table class="imui-form" style="width:100%">
                <colgroup>
                  <col />
                  <col />
                  <col />
                </colgroup>
                <tr>
                  <th><k:surface surfaceKey="指定なし"/></th>
                  <th><k:surface surfaceKey="検索部品指定"/></th>
                  <th><k:surface surfaceKey="セレクトボックス指定"/></th>
                </tr>
                <tr>
                  <td>
                    <k_generic:master
                      masterId="sample"
                      extensionId="${extensionId}"
                      mode="0"
                      name="sampleCd"
                      viewName="sampleName"
                      surfaceKey=""
                      criteria="{'searchCriteriaCompany':'searchCriteriaCompany', 'searchCriteriaDate':'searchCriteriaDate', 'searchCriteriaLocale':'searchCriteriaLocale', 'sampleCd':'sampleCd', 'includeDisabled':'true', 'includeBlank':'true'}"
                      resultChain="{'sampleCd':'sampleCd', 'sampleName':'sampleName'}"
                      resultValue="sampleName"
                      primaryTarget="sampleCd"
                      
                      refreshTarget="searchCriteriaCompany,searchCriteriaDate,searchCriteriaLocale"
                      gadgetId="${gadgetId}"
                      gadgetBlockId="${blockId}"
                      style="width:200px;"
                    />
                  </td>
                  <td>
                    <k_generic:master
                      masterId="sample"
                      extensionId="${extensionId}"
                      searchType="search"
                      mode="0"
                      name="search_sampleCd"
                      viewName="search_sampleName"
                      surfaceKey=""
                      criteria="{'searchCriteriaCompany':'searchCriteriaCompany', 'searchCriteriaDate':'searchCriteriaDate', 'searchCriteriaLocale':'searchCriteriaLocale', 'sampleCd':'search_sampleCd', 'includeDisabled':'true', 'includeBlank':'true'}"
                      resultChain="{'search_sampleCd':'sampleCd', 'search_sampleName':'sampleName'}"
                      resultValue="sampleName"
                      primaryTarget="search_sampleCd"
                      
                      refreshTarget="searchCriteriaCompany,searchCriteriaDate,searchCriteriaLocale"
                      gadgetId="${gadgetId}"
                      gadgetBlockId="${blockId}"
                      style="width:200px;"
                    />
                  </td>
                  <td>
                    <k_generic:master
                      masterId="sample"
                      extensionId="${extensionId}"
                      searchType="select"
                      mode="0"
                      name="select_sampleCd"
                      viewName="select_sampleName"
                      surfaceKey=""
                      criteria="{'searchCriteriaCompany':'searchCriteriaCompany', 'searchCriteriaDate':'searchCriteriaDate', 'searchCriteriaLocale':'searchCriteriaLocale', 'sampleCd':'select_sampleCd', 'includeDisabled':'true', 'includeBlank':'true'}"
                      resultChain="{'select_sampleCd':'sampleCd', 'select_sampleName':'sampleName'}"
                      resultValue="sampleName"
                      primaryTarget="select_sampleCd"
                      
                      refreshTarget="searchCriteriaCompany,searchCriteriaDate,searchCriteriaLocale"
                      gadgetId="${gadgetId}"
                      gadgetBlockId="${blockId}"
                      style="width:200px;"
                    />
                  </td>
                </tr>
              </table>
            </k:blockContainer>
          </k:gadgetContainer>
        </div>
      </div>
      <script type="text/javascript">
        jQuery(function($) {
          var accessor = KAIDEN.getGadget("${gadgetId}").blockAccessors["${blockId}"];
          var eventManager = KAIDEN.getGadget("${gadgetId}").eventManager;
          
          eventManager.registPushListener("initialize", function(/**String*/args) {
            
            // 検索基準日
            var _nowDate = KAIDEN.Util.nowDate();
            accessor("searchCriteriaDate").setValue(_nowDate);
            
            // 検索基準ロケール
            accessor("searchCriteriaLocale").setValue("ja");
            KAIDEN.MasterSearch.refresh(accessor("searchCriteriaLocaleName").elem(true), true);
            
            // 検索基準会社
            accessor("searchCriteriaCompany").setValue("comp_sample_01");
            KAIDEN.MasterSearch.refresh(accessor("searchCriteriaCompanyName").elem(true), true);
            
            // リストデータの更新
            $("[data-kaiden-select-list]").each(function() {
              KAIDEN.SelectListData.refresh(this);
            });
          });
          KAIDEN.gadgetMan.execPush("initialize");
        });
      </script>
    </div>
  2. 確認用アプリケーション表示
    「http://<HOST>:<PORT>/<CONTEXT_PATH>/kaiden/v2/sample/sample」にアクセスし、確認用アプリケーションを表示します。
    ../../../_images/search_001.png
  3. 動作確認
    検索部品・セレクトボックスが正しく動作することを確認します。
    ../../../_images/search_002.png
    ../../../_images/search_003.png
    また、MasterBuilder定義の「検索タイプ(genericMasterSettings / search @ type)」に設定した値を切り替えることで、
    検索部品・セレクトボックスが切り替わることを確認します。
    ../../../_images/search_004.png

4.3.5.3. インポートジョブ

インポートジョブ機能は、次の手順で動作確認を行います。
  1. インポートジョブ作成
    「サイトマップ」→「ジョブ管理」→「ジョブ設定」を表示し、インポート用のジョブを作成します。
    ../../../_images/import_001.png
    • ジョブカテゴリ
      任意の値を設定してください。
    • ジョブID
      任意の値を設定してください。
    • ジョブ名
      任意の値を設定してください。
    • 実行言語
      Java
    • 実行プログラム
      jp.co.slcs.kaiden.v2.base.feature.job.generic.MasterImportJob
    • 実行パラメータ
      値には、マスタIDを設定します。
      キー
      masterId sample
  2. インポートジョブネット作成
    「サイトマップ」→「ジョブ管理」→「ジョブネット設定」を表示し、インポート用のジョブネットを作成します。
    ../../../_images/import_002.png
    • ジョブネットカテゴリ
      任意の値を設定してください。
    • ジョブネットID
      任意の値を設定してください。
    • ジョブネット名
      任意の値を設定してください。
    • 実行ジョブ
      「インポートジョブ作成」で作成したジョブ
  3. インポートファイル作成
    「%Public Storage%/kaiden/generic/master/sample/import.csv」にインポートファイルを作成します。
    "comp_sample_01","1900/01/01","2999/12/31","0","en","sample01","sample01"
    "comp_sample_01","1900/01/01","2999/12/31","0","ja","sample01","sample01"
    "comp_sample_01","1900/01/01","2999/12/31","0","zh_CN","sample01","sample01"
    "comp_sample_01","1900/01/01","2999/12/31","0","en","sample02","sample02"
    "comp_sample_01","1900/01/01","2999/12/31","0","ja","sample02","sample02"
    "comp_sample_01","1900/01/01","2999/12/31","0","zh_CN","sample02","sample02"
    "comp_sample_01","1900/01/01","2999/12/31","0","en","sample03","sample03"
    "comp_sample_01","1900/01/01","2999/12/31","0","ja","sample03","sample03"
    "comp_sample_01","1900/01/01","2999/12/31","0","zh_CN","sample03","sample03"
    "comp_sample_01","1900/01/01","2999/12/31","0","en","sample04","sample04"
    "comp_sample_01","1900/01/01","2999/12/31","0","ja","sample04","sample04"
    "comp_sample_01","1900/01/01","2999/12/31","0","zh_CN","sample04","sample04"
    "comp_sample_01","1900/01/01","2999/12/31","0","en","sample05","sample05"
    "comp_sample_01","1900/01/01","2999/12/31","0","ja","sample05","sample05"
    "comp_sample_01","1900/01/01","2999/12/31","0","zh_CN","sample05","sample05"
    
  4. 動作確認
    「サイトマップ」→「ジョブ管理」→「ジョブネット設定」を表示し、インポート用のジョブネットを即時実行します。
    ../../../_images/import_003.png
    実行後、メンテナンス機能を利用して、インポートが正しく実行されたことを確認します。

4.3.5.4. エクスポートジョブ

エクスポートジョブ機能は、次の手順で動作確認を行います。
事前にマスタメンテナンス機能を利用して、エクスポート対象のマスタデータを作成してください。
  1. エクスポートジョブ作成
    「サイトマップ」→「ジョブ管理」→「ジョブ設定」を表示し、エクスポート用のジョブを作成します。
    ../../../_images/export_001.png
    • ジョブカテゴリ
      任意の値を設定してください。
    • ジョブID
      任意の値を設定してください。
    • ジョブ名
      任意の値を設定してください。
    • 実行言語
      Java
    • 実行プログラム
      jp.co.slcs.kaiden.v2.base.feature.job.generic.MasterExportJob
    • 実行パラメータ
      値には、マスタIDを設定します。
      キー
      masterId sample
  2. エクスポートジョブネット作成
    「サイトマップ」→「ジョブ管理」→「ジョブネット設定」を表示し、エクスポート用のジョブネットを作成します。
    ../../../_images/export_002.png
    • ジョブネットカテゴリ
      任意の値を設定してください。
    • ジョブネットID
      任意の値を設定してください。
    • ジョブネット名
      任意の値を設定してください。
    • 実行ジョブ
      「エクスポートジョブ作成」で作成したジョブ
  3. 動作確認
    「サイトマップ」→「ジョブ管理」→「ジョブネット設定」を表示し、エクスポート用のジョブネットを即時実行します。
    ../../../_images/export_003.png
    「%Public Storage%/kaiden/generic/master/sample/export.csv」にマスタデータがエクスポートされることを確認します。
    "comp_sample_01","1900/01/01","2999/12/31","0","en","sample01","sample01"
    "comp_sample_01","1900/01/01","2999/12/31","0","ja","sample01","sample01"
    "comp_sample_01","1900/01/01","2999/12/31","0","zh_CN","sample01","sample01"
    "comp_sample_01","1900/01/01","2999/12/31","0","en","sample02","sample02"
    "comp_sample_01","1900/01/01","2999/12/31","0","ja","sample02","sample02"
    "comp_sample_01","1900/01/01","2999/12/31","0","zh_CN","sample02","sample02"
    "comp_sample_01","1900/01/01","2999/12/31","0","en","sample03","sample03"
    "comp_sample_01","1900/01/01","2999/12/31","0","ja","sample03","sample03"
    "comp_sample_01","1900/01/01","2999/12/31","0","zh_CN","sample03","sample03"
    "comp_sample_01","1900/01/01","2999/12/31","0","en","sample04","sample04"
    "comp_sample_01","1900/01/01","2999/12/31","0","ja","sample04","sample04"
    "comp_sample_01","1900/01/01","2999/12/31","0","zh_CN","sample04","sample04"
    "comp_sample_01","1900/01/01","2999/12/31","0","en","sample05","sample05"
    "comp_sample_01","1900/01/01","2999/12/31","0","ja","sample05","sample05"
    "comp_sample_01","1900/01/01","2999/12/31","0","zh_CN","sample05","sample05"