intra-mart Accel Kaiden! GadgetBuilder 設定ガイド 初版 2017-10-01

4.1. GadgetBuilder定義

本項では、GadgetBuilderの設定ファイル(以降、GadgetBuilder定義)の作成方法を説明します。

4.1.1. 概要

4.1.1.1. GadgetBuilder定義とは?

GadgetBuilder定義は、XML形式で設定を行います。
本項では、経費明細を例に解説を行います。

コラム

GadgetBuilder定義は、ガジェットマスタの設定階層に準拠しています。
GadgetBuilder定義の全体イメージは「Sample」を参照してください。

4.1.1.2. GadgetBuilder定義の配置先

GadgetBuilder定義は次のパスに配置します。
「%ストレージパス%/kaiden/generic/gadget/%ガジェットクラス%_%ガジェットバリエーション%.xml」

ストレージはシステムストレージ、パブリックストレージのどちらでも配置可能で、パブリックストレージが優先的に読み込まれます。
intra-mart Accel Kaiden!のGadgetBuilder定義は、システムストレージに配置されます。
上記の読み込み順を使用して、独自のGadgetBuilder定義を優先的に読み込ませることが可能です。
(テナント別にGadgetBuilder定義を作成したい場合も、パブリックストレージを使用してください。)

4.1.2. GadgetBuilder定義

設定
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gadgetBuilderSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/gadgetBuilderSettings">
  <gadgetClass>expenseDetail</gadgetClass>
  <gadgetVariation>v01</gadgetVariation>
  <jspPath>/WEB-INF/view/kaiden2/extension_imw/generic/gadget/generic_v01.jsp</jspPath>
  <javaPath>jp.co.slcs.kaiden2.extension_imw.feature.logic.kaiden.gadget.builder.GadgetBuilderLogic</javaPath>
  <sortKey>51001</sortKey>
  <surfaceKey>chapterTitle</surfaceKey>
  <descriptions>
  
    <!-- 略 -->
    
  </descriptions>
  <blocks>
  
    <!-- 略 -->
    
  </blocks>
  <surfaces>
    
    <!-- 略 -->
    
  </surfaces>
  <tags>
  
    <!-- 略 -->
    
  </tags>
</gadgetBuilderSettings>
解説
  • ガジェットクラス(gadgetBuilderSettings / gadgetClass):必須
    ガジェットクラスを設定します。
  • ガジェットバリエーション(gadgetBuilderSettings / gadgetVariation):必須
    ガジェットバリエーションを設定します。
  • JSPパス(gadgetBuilderSettings / jspPath):必須
    ガジェットのJSPパスを定義します。

    コラム

    標準のJSPパスを使用する場合、「/WEB-INF/view/kaiden2/extension_imw/generic/gadget/generic_v01.jsp」を設定します。
    標準のJSPパスから変更する場合、独自に作成したJSPパスを設定してください。
  • Javaパス(gadgetBuilderSettings / javaPath):必須
    ガジェットのJavaクラスパス(Logicクラスのクラスパス)を設定します。

    コラム

    標準のLogicクラスを使用する場合、「jp.co.slcs.kaiden2.extension_imw.feature.logic.kaiden.gadget.builder.GadgetBuilderLogic」を設定します。
    標準のLogicクラスから変更する場合、独自に作成したLogicクラスのパスを設定してください。
  • ソートキー(gadgetBuilderSettings / sortKey):必須
    ガジェットの表示順等で使用するソートキーを設定します。
  • サーフィスキー(gadgetBuilderSettings / surfaceKey):必須
    ガジェットのサーフィスキーを設定します。
  • ガジェットタイトル表示有無(gadgetBuilderSettings / displayTitle):任意
    JSP上でガジェットのタイトルを表示するか否かを設定します。
    省略時は「true:表示する」が設定されます。
  • ガジェット概要設定(gadgetBuilderSettings / descriptions):必須
    ガジェット概要を設定します。
    後述の「ガジェット概要設定」を参照してください。
  • ガジェットブロック設定(gadgetBuilderSettings / blocks):任意
    ガジェットブロックを設定します。
    後述の「ガジェットブロック設定」を参照してください。
  • ガジェットサーフィス設定(gadgetBuilderSettings / surfaces):任意
    ガジェットサーフィスを設定します。
    後述の「ガジェットサーフィス設定」を参照してください。
  • ガジェットタグ設定(gadgetBuilderSettings / tags):任意
    ガジェットタグを設定します。
    後述の「ガジェットタグ設定」を参照してください。
  • ガジェット引数設定(gadgetBuilderSettings / args):任意
    ガジェット引数を設定します。
  • 拡張設定(gadgetBuilderSettings / extension):任意
    標準機能を拡張(カスタマイズ)する場合の拡張先の設定を行います。
  • 拡張設定(Logic)(gadgetBuilderSettings / extension / logic):任意
    標準のLogicクラスを変更する場合に設定します。

    コラム

    標準のLogicクラス「jp.co.slcs.kaiden2.base.feature.logic.kaiden.generic.impl.GadgetLogic」を変更する場合に設定します。
    標準のLogicクラスは、構成情報の返却やデータの登録・更新・削除・検索などを行います。

    「Javaパス(gadgetBuilderSettings / javaPath)」に設定したクラスは、利用用途による処理を行います。
    (申請書用のクラスの場合は、申請処理や承認処理など)
  • 拡張設定(URL)(gadgetBuilderSettings / extension / url):任意
    標準のURLを変更する場合に設定します。

    コラム

    標準のURL「kaiden/gadget/gadgetBuilder」を変更する場合に設定します。
    標準のURLを変更することで、Actionクラスの拡張が行えます。

4.1.2.1. ガジェット概要設定

ガジェット概要設定では、申請書マスタメンテナンス機能などで表示される、各ガジェットの概要を設定します。

ガジェット概要設定は、「gadgetBuilderSettings / descriptions / description」階層に設定を行います。
「gadgetBuilderSettings / descriptions / description」階層は、1件以上の複数設定(ロケール別)が可能です。

設定
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gadgetBuilderSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/gadgetBuilderSettings">
  
  <!-- 略 -->
  
  <descriptions>
    <description localeId="en"    gadgetName="Expenses Particulars" description="Enter Expenses Particulars.&#xD;Only Japanese Yen is available."/>
    <description localeId="ja"    gadgetName="経費明細"              description="経費明細の入力を行います。&#xD;日本円のみ利用可能です。"/>
    <description localeId="zh_CN" gadgetName="经费明细"              description="输入经费明细。&#xD;只可使用日元。"/>
  </descriptions>
  
  <!-- 略 -->
  
</gadgetBuilderSettings>
解説
  • ロケールID(gadgetBuilderSettings / descriptions / description @ localeId):必須
    ロケールIDを設定します。
  • ガジェット名(gadgetBuilderSettings / descriptions / description @ gadgetName):必須
    ガジェット名を設定します。
  • ガジェット概要(gadgetBuilderSettings / descriptions / description @ description):必須
    ガジェット概要を設定します。

4.1.2.2. ガジェットブロック設定

ガジェットブロック設定では、ガジェットブロックの定義を設定します。

ガジェットブロック設定は、「gadgetBuilderSettings / blocks / block」階層に設定を行います。
「gadgetBuilderSettings / blocks / block」階層は、複数設定が可能です。

設定
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gadgetBuilderSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/gadgetBuilderSettings">
  
  <!-- 略 -->
  
  <blocks>
    <block id="expenseDetail" type="DETAIL" surfaceKey="chapterTitle">
      <service basic="k30tExpenseDetailService" archive="ka30tExpenseDetailService">
        <sqls>
         <sql id="init"    path="META-INF/sql/jp/co/slcs/kaiden2/generic/gadget/ExpenseDetail.sql"/>
         <sql id="copy"    path="META-INF/sql/jp/co/slcs/kaiden2/generic/gadget/ExpenseDetail.sql"/>
         <sql id="merge"   path="META-INF/sql/jp/co/slcs/kaiden2/generic/gadget/ExpenseDetail.sql"/>
         <sql id="archive" path="META-INF/sql/jp/co/slcs/kaiden2/generic/gadget/ExpenseDetail.sql"/>
         <sql id="select"  path="META-INF/sql/jp/co/slcs/kaiden2/generic/gadget/ExpenseDetail.sql"/>
        </sqls>
      </service>
      <groups>
        
        <!-- 略 -->
        
      </groups>
      <table rowNumberTarget="rowNumber" type="HORIZONTAL">
        <colgroups>
          <colgroup style="width:50px; overflow:hidden"/>
          <colgroup style="overflow:hidden"/>
          <colgroup style="width:23%; overflow:hidden"/>
          <colgroup style="width:23%; overflow:hidden"/>
          <colgroup style="width:23%; overflow:hidden"/>
        </colgroups>
        <rows>
          <row>
            <cols>
              <col groupId="rowNumber"  rowspan="3"/>
              <col groupId="occurDate"/>
              <col groupId="summary"    colspan="3"/>
            </cols>
          </row>
          <row>
            <cols>
              <col groupId="expType"    colspan="2"/>
              <col groupId="department"/>
              <col groupId="project"/>
            </cols>
          </row>
          <row>
            <cols>
              <col groupId="payType"/>
              <col groupId="payee"      colspan="2"/>
              <col groupId="transAmount"/>
            </cols>
          </row>
        </rows>
      </table>
      <completions>
        
        <!-- 略 -->
        
      </completions>
      <claims>
        
        <!-- 略 -->
        
      </claims>
      <events>
        
        <!-- 略 -->
        
      </events>
      <includes>
        
        <!-- 略 -->
        
      </includes>
    </block>
    
    <!-- 略 -->
    
  </blocks>
  
  <!-- 略 -->
  
</gadgetBuilderSettings>
解説
  • ブロックID(gadgetBuilderSettings / blocks / block @ id):必須
    ブロックIDを設定します。
  • ブロックタイプ(gadgetBuilderSettings / blocks / block @ type):必須
    ガジェットブロックの種類を設定します。

    コラム

    「NORMAL」「DETAIL」のいずれかを設定します。
    • 明細行を保持しない場合は「NORMAL」を設定します。
    • 明細行を保持する場合は「DETAIL」を設定します。
  • ソートキー(gadgetBuilderSettings / blocks / block @ sortKey):任意
    ソートキーを設定します。
    未設定の場合はガジェットブロック設定順に連番となります。
  • サーフィスキー(gadgetBuilderSettings / blocks / block @ surfaceKey):必須
    ガジェットブロックのサーフィスキーを設定します。
  • サービス設定(gadgetBuilderSettings / blocks / block / service):任意
    サービスやSQLパスなどを設定します。
  • 基本サービスクラス(gadgetBuilderSettings / blocks / block / service @ basic):任意
    基本テーブルのサービスクラス(コンポーネント名)を設定します。
  • アーカイブサービスクラス(gadgetBuilderSettings / blocks / block / service @ archive):任意
    アーカイブテーブルのサービスクラス(コンポーネント名)を設定します。
  • SQL設定(gadgetBuilderSettings / blocks / block / service / sqls / sql):任意
    検索などで使用するSQLや検索用クラスを設定します。
  • SQLID(gadgetBuilderSettings / blocks / block / service / sqls / sql @ id):必須
    SQL設定のIDを設定します。

    コラム

    SQL設定を使用した検索を行う場合、検索条件にSQLIDも含まれます。
    SQLIDと主な用途は次の通りです。
    ID 主な用途
    INIT
    初期表示時のデータ検索
    INIT_ARCHIVE
    アーカイブデータ初期表示時のデータ検索
    COPY
    コピー時のコピー元データ検索
    MERGE
    マージ時のマージ元データ検索
    ARCHIVE
    アーカイブ時のアーカイブ元データ検索
    SELECT
    対象検索
    SEARCH
    一覧検索
  • SQLパス(gadgetBuilderSettings / blocks / block / service / sqls / sql @ path):任意
    SQLパスを設定します。
  • 代替クラス(gadgetBuilderSettings / blocks / block / service / sqls / sql @ component):任意
    検索を代替するクラス(コンポーネント名)を設定します。
    API等を使用して検索を行う場合に使用します。

    コラム

    設定クラスは次のクラスを継承したクラスである必要があります。
    • jp.co.slcs.kaiden2.base.foundation.gadget.builder.select.AbstractGadgetSelect

    コラム

    検索を行わない場合(初期表示しない、コピーしないなど)、次の様に設定することで検索を抑止できます。
    (「notSelect」クラス(コンポーネント名)は検索を行わないクラスです。)

    <sql id=”copy” component=”notSelect”/>
  • フィールドグループ設定(gadgetBuilderSettings / blocks / block / groups):任意
    フィールドグループを設定します。
    後述の「フィールドグループ設定」を参照してください。
  • 構成設定(gadgetBuilderSettings / blocks / block / table):任意
    ガジェット構成を設定します。
    未設定の場合、ガジェット構成時にフィールドグループ設定順で構成されます。
  • 構成タイプ(gadgetBuilderSettings / blocks / block / table @ type):必須
    ガジェット構成のタイプを設定します。
    「HORIZONTAL」「VERTICAL」のいずれかを設定します。

    コラム

    「HORIZONTAL」(横配置)を設定した場合、後述の「行 - 列設定」を使用します。
    画面構成は次の様になります。
    ../../../_images/tableType_001.png

    コラム

    「VERTICAL」(縦配置)を設定した場合、後述の「列 - 行設定」を使用します。
    画面構成は次の様になります。
    ../../../_images/tableType_002.png
  • 行番号フィールド(gadgetBuilderSettings / blocks / block / table @ rowNumberTarget):任意
    ブロックタイプ「DETAIL」を設定した場合の行番号フィールドを設定します。
    TmTableタグの「rowNumberTarget」属性に設定されます。
  • カラムグループ設定(gadgetBuilderSettings / blocks / block / table / colgroups / colgroup):任意
    ガジェット構成時のカラムグループを設定します。
  • カラムグループスタイル(gadgetBuilderSettings / blocks / block / table / colgroups / colgroup @ style):任意
    ガジェット構成時のカラムグループのスタイルを設定します。
  • 行 - 列設定(gadgetBuilderSettings / blocks / block / table / rows / row / cols / col):任意
    ガジェット構成時の行 - 列を設定します。

    コラム

    構成タイプで「HORIZONTAL」を設定した場合に使用します。
  • フィールドグループID(gadgetBuilderSettings / blocks / block / table / rows / row / cols / col @ groupId):任意
    当該構成を行うフィールドグループのIDを設定します。
  • 列結合数(gadgetBuilderSettings / blocks / block / table / rows / row / cols / col @ colspan):任意
    当該構成の列結合数を設定します。
  • 行結合数(gadgetBuilderSettings / blocks / block / table / rows / row / cols / col @ rowspan):任意
    当該構成の行結合数を設定します。
  • 列 - 行設定(gadgetBuilderSettings / blocks / block / table / cols / col / rows / row):任意
    ガジェット構成時の列 - 行を設定します。

    コラム

    構成タイプで「VERTICAL」を設定した場合に使用します。
  • フィールドグループID(gadgetBuilderSettings / blocks / block / table / cols / col / rows / row @ groupId):任意
    当該構成を行うフィールドグループのIDを設定します。
  • 列結合数(gadgetBuilderSettings / blocks / block / table / cols / col / rows / row @ colspan):任意
    当該構成の列結合数を設定します。
  • 行結合数(gadgetBuilderSettings / blocks / block / table / cols / col / rows / row @ rowspan):任意
    当該構成の行結合数を設定します。
  • 補完設定(gadgetBuilderSettings / blocks / block / completions):任意
    補完処理を設定します。
    後述の「補完設定」を参照してください。
  • 通信設定(gadgetBuilderSettings / blocks / block / claims):任意
    ガジェット間通信を設定します。
    後述の「通信設定」を参照してください。
  • イベント設定(gadgetBuilderSettings / blocks / block / events):任意
    ガジェットの各イベントを設定します。
    後述の「イベント設定」を参照してください。
  • インクルード設定(gadgetBuilderSettings / blocks / block / includes):任意
    JSPへのインクルード先を設定します。
    後述の「インクルード設定」を参照してください。
  • ブロック引数設定(gadgetBuilderSettings / blocks / block / args):任意
    ブロック引数を設定します。

4.1.2.2.1. フィールドグループ設定

フィールドグループ設定では、単一または複数のフィールドをまとめたグループの定義を設定します。

フィールドグループ設定は、「gadgetBuilderSettings / blocks / block / groups / group」階層に設定を行います。
「gadgetBuilderSettings / blocks / block / groups / group」階層は、複数設定が可能です。

設定
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gadgetBuilderSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/gadgetBuilderSettings">
  
  <!-- 略 -->
  
  <blocks>
    <block id="expenseDetail" type="DETAIL" surfaceKey="chapterTitle">
      
      <!-- 略 -->
      
      <groups>
        <group id="rowNumber" surfaceKey="rowNumber" requiredType="ALWAYS_ANY" inputType="LABEL">
          <args>
            <arg key="style_pc" value="text-align:center;"/>
          </args>
          <fields>
            
            <!-- 略 -->
            
          </fields>
        </group>
        
        <!-- 略 -->
        
      </groups>
    </block>
    
    <!-- 略 -->
    
  </blocks>
  
  <!-- 略 -->
  
</gadgetBuilderSettings>
解説
  • フィールドグループID(gadgetBuilderSettings / blocks / block / groups / group @ id):必須
    フィールドグループIDを設定します。
  • サーフィスキー(gadgetBuilderSettings / blocks / block / groups / group @ surfaceKey):必須
    フィールドグループのサーフィスキーを設定します。
  • 必須タイプ(gadgetBuilderSettings / blocks / block / groups / group @ requiredType):任意
    フィールドグループの必須タイプを設定します。
    未設定の場合は「SETTING_ANY」(変更可能(デフォルト任意))となります。
    選択可能な必須タイプは次の通りです。
    設定値 説明
    SETTING_ANY 変更可能(デフォルト任意)
    SETTING_REQ 変更可能(デフォルト必須)
    ALWAYS_ANY 常時任意
    ALWAYS_REQ 常時必須
  • 入力タイプ(gadgetBuilderSettings / blocks / block / groups / group @ inputType):任意
    フィールドグループの入力タイプを設定します。
    未設定の場合は「CONFIG」(設定変更可)となります。
    選択可能な入力タイプは次の通りです。
    設定値 説明
    CONFIG 設定変更可
    LABEL ラベル(変更不可)
    TEXT テキスト(変更不可)
    TEXT_LABEL テキスト(処理時入力不可・変更不可)
  • ソートキー(gadgetBuilderSettings / blocks / block / groups / group @ sortKey):任意
    ソートキーを設定します。
    未設定の場合はフィールドグループ設定順に連番となります。
  • 必須マーク(gadgetBuilderSettings / blocks / block / groups / group @ requiredMark):任意
    フィールドグループの必須マーク(true / false)を設定します。

    コラム

    申請書用のガジェットの場合は、申請書マスタメンテナンスでの設定で上書きされます。
  • フィールド設定(gadgetBuilderSettings / blocks / block / groups / group / fields):任意
    内包するフィールドを設定します。
    後述の「フィールド設定」を参照してください。
  • 引数設定(gadgetBuilderSettings / blocks / block / groups / group / args):任意
    フィールドグループへの引数を設定します。
    主に、「class」属性や「style」属性の値となります。

4.1.2.2.2. フィールド設定

フィールド設定では、フィールドの構成やバリデーションなどを設定します。

フィールド設定は、「gadgetBuilderSettings / blocks / block / groups / group / fields / field」階層に設定を行います。
「gadgetBuilderSettings / blocks / block / groups / group / fields / field」階層は、複数設定が可能です。

設定
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gadgetBuilderSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/gadgetBuilderSettings">
  
  <!-- 略 -->
  
  <blocks>
    <block id="expenseDetail" type="DETAIL" surfaceKey="chapterTitle">
      
      <!-- 略 -->
      
      <groups>
        <group id="rowNumber" surfaceKey="rowNumber" requiredType="ALWAYS_ANY" inputType="LABEL">
          
          <!-- 略 -->
          
          <fields>
            <field id="rowNumber" surfaceKey="rowNumber" requiredType="INHERIT" inputType="INHERIT" type="PANEL"/>
            <field id="imwApplyBaseDate" surfaceKey="imwApplyBaseDate" requiredType="ALWAYS_ANY" inputType="INHERIT" type="DTO"/>
            <field id="searchCriteriaCompany" surfaceKey="searchCriteriaCompany" requiredType="ALWAYS_ANY" inputType="INHERIT" type="DTO"/>
            <field id="payMethodCd" surfaceKey="payMethod" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN"/>
          </fields>
        </group>
        <group id="occurDate" surfaceKey="occurDate" requiredType="ALWAYS_REQ" inputType="CONFIG">
          <fields>
            <field id="occurDate" surfaceKey="occurDate" requiredType="INHERIT" inputType="INHERIT" type="TEXT_DATE">
              <args>
                <arg key="autoFormat" value="true"/>
              </args>
              <validates>
                <validate event="default" config="{'id':'date'}"/>
              </validates>
            </field>
          </fields>
        </group>
        
        <!-- 略 -->
        
      </groups>
    </block>
    
    <!-- 略 -->
    
  </blocks>
  
  <!-- 略 -->
  
</gadgetBuilderSettings>
解説
  • フィールドID(gadgetBuilderSettings / blocks / block / groups / group / fields / field @ id):必須
    フィールドIDを設定します。
  • サーフィスキー(gadgetBuilderSettings / blocks / block / groups / group / fields / field @ surfaceKey):必須
    フィールドのサーフィスキーを設定します。
  • 必須タイプ(gadgetBuilderSettings / blocks / block / groups / group / fields / field @ requiredType):任意
    フィールドの必須タイプを設定します。
    未設定の場合は「INHERIT」(フィールドグループの設定を引き継ぐ)となります。
    選択可能な必須タイプは次の通りです。
    設定値 説明
    SETTING_ANY 変更可能(デフォルト任意)
    SETTING_REQ 変更可能(デフォルト必須)
    ALWAYS_ANY 常時任意
    ALWAYS_REQ 常時必須
    INHERIT フィールドグループの設定を引き継ぐ
  • 入力タイプ(gadgetBuilderSettings / blocks / block / groups / group / fields / field @ inputType):任意
    フィールドの入力タイプを設定します。
    未設定の場合は「INHERIT」(フィールドグループの設定を引き継ぐ)となります。
    選択可能な入力タイプは次の通りです。
    設定値 説明
    CONFIG 設定変更可
    LABEL ラベル(変更不可)
    TEXT テキスト(変更不可)
    TEXT_LABEL テキスト(処理時入力不可・変更不可)
    INHERIT フィールドグループの設定を引き継ぐ
  • ソートキー(gadgetBuilderSettings / blocks / block / groups / group / fields / field @ sortKey):任意
    ソートキーを設定します。
    未設定の場合はフィールド設定順に連番となります。
  • フィールドタイプ(gadgetBuilderSettings / blocks / block / groups / group / fields / field @ type):任意
    フィールドタイプを設定します。
    設定可能なフィールドタイプは「フィールドタイプ」を参照してください。
  • 引数設定(gadgetBuilderSettings / blocks / block / groups / group / fields / field / args/ arg):任意
    フィールドへの引数を設定します。
    設定可能な引数(属性)はフィールドタイプに依存します。
    詳細は「フィールドタイプ」を参照してください。
  • バリデート設定(gadgetBuilderSettings / blocks / block / groups / group / fields / field / validates / validate):任意
    フィールドへのバリデートを設定します。
  • バリデート実行イベント(gadgetBuilderSettings / blocks / block / groups / group / fields / field / validates / validate @ event):必須
    フィールドバリデートの実行イベントを設定します。
    主なイベントは次の通りです。
    設定値 説明
    default 全てのイベントで実行
    apply 申請イベントのみ実行
    tempsave 一時保存イベントのみ実行
    reapply 再申請イベントのみ実行
    process 処理イベントのみ実行
  • バリデート実行対象(gadgetBuilderSettings / blocks / block / groups / group / fields / field / validates / validate @ target):任意
    フィールドバリデートの実行対象を設定します。
    選択可能な実行対象は次の通りです。(省略時は「ALWAYS」)
    設定値 説明
    CLIENT クライアントサイドのみ実行
    SERVER サーバーサイドのみ実行
    ALWAYS クライアントサイド、サーバーサイドの両方で実行
  • バリデート内容(gadgetBuilderSettings / blocks / block / groups / group / fields / field / validates / validate @ config):任意
    フィールドバリデートの内容を設定します。
    詳細は「バリデート処理」を参照してください。

4.1.2.2.3. 補完設定

補完設定では、各フィールドに対する補完処理を設定します。

補完設定は、「gadgetBuilderSettings / blocks / block / completions / completion」階層に設定を行います。
「gadgetBuilderSettings / blocks / block / completions / completion」階層は、複数設定が可能です。

設定
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gadgetBuilderSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/gadgetBuilderSettings">
  
  <!-- 略 -->
  
  <blocks>
    <block id="expenseDetail" type="DETAIL" surfaceKey="chapterTitle">
      
      <!-- 略 -->
      
      <completions>
        <completion name="departmentSetCd"     position="1" type="claimValueOnInit" args="{'claim':'claimDefaultDepartmentSetCd', 'target':'1'}"                              target="CLIENT" mode="EMPTY"/>
        <completion name="departmentCd"        position="1" type="claimValueOnInit" args="{'claim':'claimDefaultDepartmentCd', 'target':'1'}"                                 target="CLIENT" mode="EMPTY"/>
        <completion name="projectCd"           position="1" type="claimValueOnInit" args="{'claim':'claimDefaultProjectCd', 'target':'1'}"                                    target="CLIENT" mode="EMPTY"/>
        <completion name="payMethodCd"         position="1" type="claimValue"       args="{'claim':'claimPayMethod'}"                                                         target="ALWAYS" mode="ALWAYS"/>
        <completion name="transCurrencyCd"     position="2" type="variable"         args="{'field':'companyCurrencyCd'}"                                                      target="ALWAYS" mode="ALWAYS"/>
        <completion name="companyRate"         position="3" type="fixed"            args="{'value':'1'}"                                                                      target="ALWAYS" mode="EMPTY"/>
        <completion name="companyAmount"       position="4" type="variable"         args="{'field':'transAmount'}"                                                            target="ALWAYS" mode="ALWAYS"/>
        <completion name="quantity"            position="5" type="fixed"            args="{'value':'1'}"                                                                      target="ALWAYS" mode="EMPTY"/>
        <completion name="companyAmountSum"    position="6" type="calcMul"          args="{'field1':'companyAmount','field2':'quantity','round':'4','digits':'0'}"            target="ALWAYS" mode="ALWAYS"/>
        <completion name="companyAmountTax"    position="7" type="calcTax"          args="{'amount':'companyAmountSum','taxRate':'taxRate','round':'4','digits':'0'}"         target="ALWAYS" mode="ALWAYS"/>
        <completion name="companyAmountExcTax" position="8" type="calcSub"          args="{'field1':'companyAmountSum','field2':'companyAmountTax','round':'4','digits':'0'}" target="ALWAYS" mode="ALWAYS"/>
      </completions>
      
      <!-- 略 -->
      
    </block>
  </blocks>
  
  <!-- 略 -->
  
</gadgetBuilderSettings>
解説
  • 補完フィールド名(gadgetBuilderSettings / blocks / block / completions / completion @ name):必須
    補完結果を設定するフィールド名を設定します。
  • 補完順(gadgetBuilderSettings / blocks / block / completions / completion @ position):必須
    補完処理の実行順を設定します。
    本設定に従って補完処理の実行順を制御します。
  • 補完対象(gadgetBuilderSettings / blocks / block / completions / completion @ target):任意
    次の補完処理対象を設定します。(未設定の場合は「ALWAYS」)
    設定値 説明
    CLIENT クライアントサイドのみ補完
    SERVER サーバーサイドのみ補完
    ALWAYS クライアントサイド、サーバーサイドの両方で補完
  • 補完モード(gadgetBuilderSettings / blocks / block / completions / completion @ mode):任意
    次の補完処理モードを設定します。(未設定の場合は「ALWAYS」)
    設定値 説明
    EMPTY 補完フィールドに値がない場合補完
    NOT_EMPTY 補完フィールドに値がある場合補完
    ALWAYS 常に補完
  • 補完タイプ(gadgetBuilderSettings / blocks / block / completions / completion @ type):必須
    補完処理を行うタイプを設定します。
    詳細は「補完処理」を参照してください。
  • 引数(gadgetBuilderSettings / blocks / block / completions / completion / args):任意
    補完処理の引数を設定します。
    詳細は「補完処理」を参照してください。

4.1.2.2.4. 通信設定

通信設定では、各ブロックのガジェット間(ブロック間)通信を設定します。

通信設定は、「gadgetBuilderSettings / blocks / block / claims / claim」階層に設定を行います。
「gadgetBuilderSettings / blocks / block / claims / claim」階層は、複数設定が可能です。

設定
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gadgetBuilderSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/gadgetBuilderSettings">
  
  <!-- 略 -->
  
  <blocks>
    <block id="expenseDetail" type="DETAIL" surfaceKey="chapterTitle">
      
      <!-- 略 -->
      
      <claims>
        <claim name="claimExpenseAmount"      type="claimAmountSummary"     args="{'amount':'companyAmountSum'}"/>
        <claim name="claimTemporaryPayAmount" type="claimAmountSummary"     args="{'amount':'companyAmountSum','paymentFlag':'paymentFlag','payment':'1'}"/>
        <claim name="claimCompanyPayAmount"   type="claimAmountSummary"     args="{'amount':'companyAmountSum','paymentFlag':'paymentFlag','payment':'0'}"/>
        <claim name="claimDateDetail"         type="claimColumnValuesList"  args="{'field1':'occurDate','field2':'occurDate'}"/>
        <claim name="claimExpenseDetail"      type="claimColumnValuesList"  args="{'field1':'companyAmountSum'}"/>
        <claim name="claimExpenceCount"       type="claimRowCount"          args=""/>
        <claim name="loadData4Settle"         type="claimSearchData"        args="{'systemMatterId':'imwSystemMatterId', 'userDataId':'imwUserDataId', 'gadgetClass':'gadgetClass'}" target="CLIENT"/>
      </claims>
      
      <!-- 略 -->
      
    </block>
  </blocks>
  
  <!-- 略 -->
  
</gadgetBuilderSettings>
解説
  • 通信名(gadgetBuilderSettings / blocks / block / claims / claim @ name):必須
    通信処理の名称を設定します。
  • 通信対象(gadgetBuilderSettings / blocks / block / claims / claim @ target):任意
    次の通信処理対象を設定します。(未設定の場合は「ALWAYS」)
    設定値 説明
    CLIENT クライアントサイドのみ通信
    SERVER サーバーサイドのみ通信
    ALWAYS クライアントサイド、サーバーサイドの両方で通信
  • 通信タイプ(gadgetBuilderSettings / blocks / block / claims / claim @ type):必須
    通信処理を行うタイプを設定します。
    詳細は「通信処理」を参照してください。
  • 引数(gadgetBuilderSettings / blocks / block / claims / claim / args):任意
    通信処理の引数を設定します。
    詳細は「通信処理」を参照してください。

4.1.2.2.5. イベント設定

イベント設定では、各ブロックのイベント処理を設定します。

イベント設定は、「gadgetBuilderSettings / blocks / block / events / event」階層に設定を行います。
「gadgetBuilderSettings / blocks / block / events / event」階層は、複数設定が可能です。

設定
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gadgetBuilderSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/gadgetBuilderSettings">
  
  <!-- 略 -->
  
  <blocks>
    <block id="expenseDetail" type="DETAIL" surfaceKey="chapterTitle">
      
      <!-- 略 -->
      
      <events>
        <event target="matter_end" name="journalSourceDetailEntryForSqlEvent">
          <args>
            <arg key="sqlPath" value="META-INF/sql/jp/co/slcs/kaiden2/generic/gadget/journal/ExpenseDetail.sql"/>
          </args>
        </event>
      </events>
      
      <!-- 略 -->
      
    </block>
  </blocks>
  
  <!-- 略 -->
  
</gadgetBuilderSettings>
解説
  • 対象イベント(gadgetBuilderSettings / blocks / block / events / event @ target):必須
    対象のイベントキーを設定します。
    詳細は「イベント処理」を参照してください。
  • イベント名(gadgetBuilderSettings / blocks / block / events / event @ name):必須
    イベント名(コンポーネント名)を設定します。
    詳細は「イベント処理」を参照してください。
  • イベント引数(gadgetBuilderSettings / blocks / block / events / event / args):任意
    イベント処理の引数を設定します。
    詳細は「イベント処理」を参照してください。

4.1.2.2.6. インクルード設定

インクルード設定では、各ブロックのクライアントサイドでインクルードを行うJSPを設定します。

インクルード設定は、「gadgetBuilderSettings / blocks / block / includes / include」階層に設定を行います。
「gadgetBuilderSettings / blocks / block / includes / include」階層は、複数設定が可能です。

設定
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gadgetBuilderSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/gadgetBuilderSettings">
  
  <!-- 略 -->
  
  <blocks>
    <block id="expenseDetail" type="DETAIL" surfaceKey="chapterTitle">
      
      <!-- 略 -->
      
      <includes>
        <include path="/WEB-INF/view/kaiden2/product_workflow/generic/gadget/include/defaultDepartmentProject.jsp" />
      </includes>
      
      <!-- 略 -->
      
    </block>
  </blocks>
  
  <!-- 略 -->
  
</gadgetBuilderSettings>
解説
  • インクルードパス(gadgetBuilderSettings / blocks / block / includes / include @ path):必須
    インクルードを行うJSPのパスを設定します。
    詳細は「インクルードJSP」を参照してください。
  • インクルード引数(gadgetBuilderSettings / blocks / block / includes / include / args):必須
    インクルードJSPに対する引数を設定します。
    詳細は「インクルードJSP」を参照してください。

4.1.2.3. ガジェットサーフィス設定

ガジェットサーフィス設定では、ガジェットが使用するサーフィスを設定します。

ガジェットサーフィス設定は、「gadgetBuilderSettings / surfaces / surface」階層に設定を行います。
「gadgetBuilderSettings / surfaces / surface」階層は、複数設定が可能です。

設定
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gadgetBuilderSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/gadgetBuilderSettings">
  
  <!-- 略 -->
  
  <surfaces>
    <surface surfaceKey="chapterTitle">
      <name localeId="en"    surface="Expenses Particulars"/>
      <name localeId="ja"    surface="経費明細"/>
      <name localeId="zh_CN" surface="经费明细"/>
    </surface>
    
    <surface surfaceKey="rowNumber">
      <name localeId="en"    surface="No"/>
      <name localeId="ja"    surface="No"/>
      <name localeId="zh_CN" surface="No"/>
    </surface>
  
    <!-- 略 -->
    
  </surfaces>
  
  <!-- 略 -->
  
</gadgetBuilderSettings>
解説
  • サーフィスキー(gadgetBuilderSettings / surfaces / surface @ surfaceKey):必須
    サーフィスキーを設定します。
  • ロケールID(gadgetBuilderSettings / surfaces / surface / name @ localeId):必須
    ロケールIDを設定します。
  • サーフィス(gadgetBuilderSettings / surfaces / surface / name @ surface):必須
    サーフィスを設定します。

4.1.2.4. ガジェットタグ設定

ガジェットタグ設定では、申請書マスタメンテナンス機能などで表示される、各ガジェットの概要を設定します。

ガジェット概要設定は、「gadgetBuilderSettings / tags / tag」階層に設定を行います。
「gadgetBuilderSettings / tags / tag」階層は、複数設定が可能です。

設定
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gadgetBuilderSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/gadgetBuilderSettings">
  
  <!-- 略 -->
  
  <tags>
    <tag value="appNormal"/>
    <tag value="appAdvance"/>
    <tag value="appSettle"/>
    <tag value="spSupport"/>
  </tags>
</gadgetBuilderSettings>
解説
  • タグ(gadgetBuilderSettings / tags / tag @ value):必須
    ガジェットの属性を判定するタグを設定します。

コラム

次のタグが存在し、設定することでガジェットに属性が付与され、ガジェット属性ごとの振る舞いを定義できます。
intra-mart Accel Kaiden!標準のガジェットには次のタグ以外も設定されていますが、将来拡張用のタグです。
タグ分類 タグ名 説明
制約 constraintDuplicationSelf
申請書内で自身と重複を禁止します。
制約 constraintDuplicationClass
申請書内で同ガジェットクラスと重複を禁止します。
申請書タイプ appAdvance
対象申請書タイプ「事前申請」を設定します。
申請書マスタメンテナンスで申請書タイプ「事前申請書」を選択した場合、選択できるガジェットです。
申請書タイプ appSettle
対象申請書タイプ「精算申請」を設定します。
申請書マスタメンテナンスで申請書タイプ「精算申請書」を選択した場合、選択できるガジェットです。
申請書タイプ appNormal
対象申請書タイプ「一般」を設定します。
申請書マスタメンテナンスで申請書タイプ「一般」を選択した場合、選択できるガジェットです。
申請書タイプ appBill
対象申請書タイプ「請求書払申請」を設定します。
申請書マスタメンテナンスで申請書タイプ「請求書払申請書」を選択した場合、選択できるガジェットです。
SPサポート spSupport
SP画面をサポートする場合に設定します。

4.1.3. Sample

次のGadgetBuilder定義は経費明細ガジェットの設定を行った場合のサンプルです。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gadgetBuilderSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/gadgetBuilderSettings">
  <gadgetClass>expenseDetail</gadgetClass>
  <gadgetVariation>v01</gadgetVariation>
  <jspPath>/WEB-INF/view/kaiden2/extension_imw/generic/gadget/generic_v01.jsp</jspPath>
  <javaPath>jp.co.slcs.kaiden2.extension_imw.feature.logic.kaiden.gadget.builder.GadgetBuilderLogic</javaPath>
  <sortKey>51001</sortKey>
  <surfaceKey>chapterTitle</surfaceKey>
  <descriptions>
    <description localeId="en"    gadgetName="Expenses Particulars" description="Enter Expenses Particulars.&#xD;Only Japanese Yen is available."/>
    <description localeId="ja"    gadgetName="経費明細"              description="経費明細の入力を行います。&#xD;日本円のみ利用可能です。"/>
    <description localeId="zh_CN" gadgetName="经费明细"              description="输入经费明细。&#xD;只可使用日元。"/>
  </descriptions>
  <blocks>
    <block id="expenseDetail" type="DETAIL" surfaceKey="chapterTitle">
      <service basic="k30tExpenseDetailService" archive="ka30tExpenseDetailService">
        <sqls>
         <sql id="init"    path="META-INF/sql/jp/co/slcs/kaiden2/generic/gadget/ExpenseDetail.sql"/>
         <sql id="copy"    path="META-INF/sql/jp/co/slcs/kaiden2/generic/gadget/ExpenseDetail.sql"/>
         <sql id="merge"   path="META-INF/sql/jp/co/slcs/kaiden2/generic/gadget/ExpenseDetail.sql"/>
         <sql id="archive" path="META-INF/sql/jp/co/slcs/kaiden2/generic/gadget/ExpenseDetail.sql"/>
         <sql id="select"  path="META-INF/sql/jp/co/slcs/kaiden2/generic/gadget/ExpenseDetail.sql"/>
        </sqls>
      </service>
      <groups>
        <group id="rowNumber" surfaceKey="rowNumber" requiredType="ALWAYS_ANY" inputType="LABEL">
          <args>
            <arg key="style_pc" value="text-align:center;"/>
          </args>
          <fields>
            <field id="rowNumber" surfaceKey="rowNumber" requiredType="INHERIT" inputType="INHERIT" type="PANEL">
              <!--
              <args>
                <arg key="header"         value="true"/>
                <arg key="headerAllowAdd" value="true"/>
                <arg key="headerAllowDel" value="true"/>
                <arg key="detail"         value="true"/>
                <arg key="detailAllowAdd" value="true"/>
                <arg key="detailAllowDel" value="true"/>
              </args>
              -->
            </field>
            <field id="imwApplyBaseDate" surfaceKey="imwApplyBaseDate" requiredType="ALWAYS_ANY" inputType="INHERIT" type="DTO"/>
            <field id="searchCriteriaCompany" surfaceKey="searchCriteriaCompany" requiredType="ALWAYS_ANY" inputType="INHERIT" type="DTO"/>
            <field id="payMethodCd" surfaceKey="payMethod" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN"/>
          </fields>
        </group>
        <group id="occurDate" surfaceKey="occurDate" requiredType="ALWAYS_REQ" inputType="CONFIG">
          <fields>
            <field id="occurDate" surfaceKey="occurDate" requiredType="INHERIT" inputType="INHERIT" type="TEXT_DATE">
              <args>
                <arg key="autoFormat" value="true"/>
              </args>
              <validates>
                <validate event="default" config="{'id':'date'}"/>
              </validates>
            </field>
          </fields>
        </group>
        <group id="summary" surfaceKey="summary" requiredType="SETTING_REQ" inputType="CONFIG">
          <fields>
            <field id="summary" surfaceKey="summary" requiredType="INHERIT" inputType="INHERIT" type="TEXT">
              <args>
                <arg key="maxlength" value="250"/>
                <arg key="style_pc"  value="width:98%"/>
              </args>
              <validates>
                <validate event="default" config="{'id':'maxLength', 'args':'250'}"/>
              </validates>
            </field>
          </fields>
        </group>
        <group id="expType" surfaceKey="expType" requiredType="ALWAYS_REQ" inputType="CONFIG">
          <fields>
            <field id="expTypeCd" surfaceKey="expType" requiredType="INHERIT" inputType="INHERIT" type="MASTER">
              <args>
                <arg key="masterId"      value="exp_type"/>
                <arg key="extensionId"   value="expenseDetail"/>
                <arg key="searchType"    value="search"/>
                <arg key="viewName"      value="expTypeName"/>
                <arg key="criteria"      value="{'searchCriteriaDate':'imwApplyBaseDate','searchCriteriaCompany':'searchCriteriaCompany','expTypeCd':'expTypeCd','includeBlank':'false'}"/>
                <arg key="resultChain"   value="{'expTypeCd':'expTypeCd','expTypeName':'expTypeName','accountCd':'accountCd','accountName':'accountName','taxTypeCd':'taxTypeCd','taxTypeName':'taxTypeName','taxRate':'taxRate'}"/>
                <arg key="resultValue"   value="expTypeName"/>
                <arg key="primaryTarget" value="expTypeCd"/>
                <arg key="tmtableId"     value="expenseDetail"/>
                <arg key="refreshTarget" value="imwApplyBaseDate,searchCriteriaCompany"/>
                <arg key="style_pc"      value="display:inline-block; width:35%;"/>
              </args>
              <validates>
                <validate event="default" target="SERVER" config="{'id':'masterBuilderExists', 'args':{'masterId':'exp_type', 'extensionId':'expenseDetail', 'searchCriteriaDate':'imwApplyBaseDate', 'searchCriteriaCompany':'searchCriteriaCompany', 'expTypeCd':'expTypeCd'}}"/>
              </validates>
            </field>
            <field id="accountCd" surfaceKey="account" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN">
              <validates>
                <validate event="default" target="SERVER" config="{'id':'masterBuilderExists', 'args':{'masterId':'tax_type', 'extensionId':'expenseDetail', 'searchCriteriaDate':'imwApplyBaseDate', 'searchCriteriaCompany':'searchCriteriaCompany', 'taxTypeCd':'taxTypeCd'}}"/>
              </validates>
            </field>
            <field id="accountName" surfaceKey="account" requiredType="ALWAYS_ANY" inputType="LABEL" type="TEXT">
              <args>
                <arg key="style_pc" value="display:inline-block; width:30%; margin-left:3px; text-overflow:ellipsis; white-space:nowrap; overflow:hidden; vertical-align:middle;"/>
              </args>
            </field>
            <field id="taxTypeCd" surfaceKey="taxType" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN">
              <validates>
                <validate event="default" target="SERVER" config="{'id':'masterBuilderExists', 'args':{'masterId':'tax_type', 'extensionId':'expenseDetail', 'searchCriteriaDate':'imwApplyBaseDate', 'searchCriteriaCompany':'searchCriteriaCompany', 'taxTypeCd':'taxTypeCd'}}"/>
              </validates>
            </field>
            <field id="taxTypeName" surfaceKey="taxType" requiredType="ALWAYS_ANY" inputType="LABEL" type="TEXT">
              <args>
                <arg key="style_pc" value="display:inline-block; width:25%; margin-left:3px; text-overflow:ellipsis; white-space:nowrap; overflow:hidden; vertical-align:middle;"/>
              </args>
            </field>
            <field id="taxRate" surfaceKey="taxRate" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN"/>
          </fields>
        </group>
        <group id="department" surfaceKey="department" requiredType="ALWAYS_ANY" inputType="CONFIG">
          <fields>
            <field id="departmentSetCd" surfaceKey="departmentSet" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN"/>
            <field id="departmentCd" surfaceKey="department" requiredType="INHERIT" inputType="INHERIT" type="MASTER">
              <args>
                <arg key="masterId"      value="department"/>
                <arg key="extensionId"   value="expenseDetail"/>
                <arg key="searchType"    value="search"/>
                <arg key="viewName"      value="departmentName"/>
                <arg key="criteria"      value="{'searchCriteriaDate':'imwApplyBaseDate','searchCriteriaCompany':'searchCriteriaCompany','departmentSetCd':'searchCriteriaCompany','departmentCd':'departmentCd','includeBlank':'true'}"/>
                <arg key="resultChain"   value="{'departmentCd':'departmentCd','departmentName':'departmentName','departmentSetCd':'departmentSetCd'}"/>
                <arg key="resultValue"   value="departmentName"/>
                <arg key="primaryTarget" value="departmentSetCd,departmentCd"/>
                <arg key="tmtableId"     value="expenseDetail"/>
                <arg key="refreshTarget" value="imwApplyBaseDate,searchCriteriaCompany,searchCriteriaCompany"/>
                <arg key="style_pc"      value="width:85%;"/>
              </args>
              <validates>
                <validate event="default" target="ALWAYS" config="{'id':'requiredAny', 'args':['departmentCd','projectCd']}"/>
                <validate event="default" target="SERVER" config="{'id':'masterBuilderExists', 'args':{'masterId':'department', 'extensionId':'expenseDetail', 'searchCriteriaDate':'imwApplyBaseDate', 'searchCriteriaCompany':'searchCriteriaCompany', 'departmentSetCd':'searchCriteriaCompany','departmentCd':'departmentCd'}}"/>
              </validates>
            </field>
          </fields>
        </group>
        <group id="project" surfaceKey="project" requiredType="ALWAYS_ANY" inputType="CONFIG">
          <fields>
            <field id="projectCd" surfaceKey="project" requiredType="INHERIT" inputType="INHERIT" type="MASTER">
              <args>
                <arg key="masterId"      value="project_workflow"/>
                <arg key="extensionId"   value="expenseDetail"/>
                <arg key="searchType"    value="search"/>
                <arg key="viewName"      value="projectName"/>
                <arg key="criteria"      value="{'searchCriteriaDate':'imwApplyBaseDate','searchCriteriaCompany':'searchCriteriaCompany','projectCd':'projectCd','includeBlank':'true'}"/>
                <arg key="resultChain"   value="{'projectCd':'projectCd','projectName':'projectName'}"/>
                <arg key="resultValue"   value="projectName"/>
                <arg key="primaryTarget" value="projectCd"/>
                <arg key="tmtableId"     value="expenseDetail"/>
                <arg key="refreshTarget" value="imwApplyBaseDate,searchCriteriaCompany"/>
                <arg key="style_pc"      value="width:85%;"/>
              </args>
              <validates>
                <validate event="default" target="ALWAYS" config="{'id':'requiredAny', 'args':['departmentCd','projectCd']}"/>
                <validate event="default" target="SERVER" config="{'id':'masterBuilderExists', 'args':{'masterId':'project_workflow', 'extensionId':'expenseDetail', 'searchCriteriaDate':'imwApplyBaseDate', 'searchCriteriaCompany':'searchCriteriaCompany', 'projectCd':'projectCd'}}"/>
              </validates>
            </field>
          </fields>
        </group>
        <group id="payType" surfaceKey="payType" requiredType="ALWAYS_REQ" inputType="CONFIG">
          <fields>
            <field id="payTypeCd" surfaceKey="payType" requiredType="INHERIT" inputType="INHERIT" type="MASTER">
              <args>
                <arg key="masterId"      value="pay_type"/>
                <arg key="extensionId"   value="expenseDetail"/>
                <arg key="searchType"    value="select"/>
                <arg key="viewName"      value="payTypeName"/>
                <arg key="criteria"      value="{'searchCriteriaDate':'imwApplyBaseDate','searchCriteriaCompany':'searchCriteriaCompany','payTypeCd':'payTypeCd','includeBlank':'false'}"/>
                <arg key="resultChain"   value="{'payTypeCd':'payTypeCd','payTypeName':'payTypeName','paymentFlag':'paymentFlag'}"/>
                <arg key="resultValue"   value="payTypeName"/>
                <arg key="primaryTarget" value="payTypeCd"/>
                <arg key="tmtableId"     value="expenseDetail"/>
                <arg key="refreshTarget" value="imwApplyBaseDate,searchCriteriaCompany"/>
<!--                 <arg key="singleList"    value="true"/> -->
                <arg key="style_pc"      value="width:98%;"/>
              </args>
              <validates>
                <validate event="default" target="SERVER" config="{'id':'masterBuilderExists', 'args':{'masterId':'pay_type', 'extensionId':'expenseDetail', 'searchCriteriaDate':'imwApplyBaseDate', 'searchCriteriaCompany':'searchCriteriaCompany', 'payTypeCd':'payTypeCd'}}"/>
              </validates>
            </field>
            <field id="paymentFlag" surfaceKey="paymentFlag" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN"/>
          </fields>
        </group>
        <group id="payee" surfaceKey="payee" requiredType="SETTING_ANY" inputType="CONFIG">
          <fields>
            <field id="payeeName" surfaceKey="payee" requiredType="INHERIT" inputType="INHERIT" type="TEXT">
              <args>
                <arg key="maxlength" value="250"/>
                <arg key="style_pc"  value="width:98%"/>
              </args>
              <validates>
                <validate event="default" config="{'id':'maxLength', 'args':'250'}"/>
              </validates>
            </field>
          </fields>
        </group>
        <group id="transAmount" surfaceKey="transAmount" requiredType="ALWAYS_REQ" inputType="CONFIG">
          <args>
            <arg key="style_pc" value="text-align:right;"/>
          </args>
          <fields>
            <field id="transAmount" surfaceKey="transAmount" requiredType="INHERIT" inputType="INHERIT" type="TEXT_NUMERIC">
              <args>
                <arg key="style_pc" value="width:98%"/>
                <arg key="amount"   value="true"/>
                <arg key="event"    value="change"/>
              </args>
              <validates>
                <validate event="default" config="{'id':'currencyAmnt2', 'args':['','searchCriteriaCompany']}"/>
                <validate event="default" config="{'id':'amountMin', 'args':'0'}"/>
              </validates>
            </field>
            <field id="transCurrencyCd" surfaceKey="transCurrency" requiredType="ALWAYS_ANY" inputType="INHERIT" type="TEXT_HIDDEN"/>
            <field id="companyRate" surfaceKey="companyRate" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN"/>
            <field id="companyAmount" surfaceKey="companyAmount" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN"/>
            <field id="companyCurrencyCd" surfaceKey="companyCurrency" requiredType="ALWAYS_ANY" inputType="INHERIT" type="DTO"/>
            <field id="quantity" surfaceKey="quantity" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN"/>
            <field id="companyAmountSum" surfaceKey="companyAmountSum" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN"/>
            <field id="companyAmountExcTax" surfaceKey="companyAmountExcTax" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN"/>
            <field id="companyAmountTax" surfaceKey="companyAmountTax" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN"/>
          </fields>
        </group>
      </groups>
      <table rowNumberTarget="rowNumber" type="HORIZONTAL">
        <colgroups>
          <colgroup style="width:50px; overflow:hidden"/>
          <colgroup style="overflow:hidden"/>
          <colgroup style="width:23%; overflow:hidden"/>
          <colgroup style="width:23%; overflow:hidden"/>
          <colgroup style="width:23%; overflow:hidden"/>
        </colgroups>
        <rows>
          <row>
            <cols>
              <col groupId="rowNumber"  rowspan="3"/>
              <col groupId="occurDate"/>
              <col groupId="summary"    colspan="3"/>
            </cols>
          </row>
          <row>
            <cols>
              <col groupId="expType"    colspan="2"/>
              <col groupId="department"/>
              <col groupId="project"/>
            </cols>
          </row>
          <row>
            <cols>
              <col groupId="payType"/>
              <col groupId="payee"      colspan="2"/>
              <col groupId="transAmount"/>
            </cols>
          </row>
        </rows>
      </table>
      <completions>
        <completion name="departmentSetCd"     position="1" type="claimValueOnInit" args="{'claim':'claimDefaultDepartmentSetCd', 'target':'1'}"                              target="CLIENT" mode="EMPTY"/>
        <completion name="departmentCd"        position="1" type="claimValueOnInit" args="{'claim':'claimDefaultDepartmentCd', 'target':'1'}"                                 target="CLIENT" mode="EMPTY"/>
        <completion name="projectCd"           position="1" type="claimValueOnInit" args="{'claim':'claimDefaultProjectCd', 'target':'1'}"                                    target="CLIENT" mode="EMPTY"/>
        <completion name="payMethodCd"         position="1" type="claimValue"       args="{'claim':'claimPayMethod'}"                                                         target="ALWAYS" mode="ALWAYS"/>
        <completion name="transCurrencyCd"     position="2" type="variable"         args="{'field':'companyCurrencyCd'}"                                                      target="ALWAYS" mode="ALWAYS"/>
        <completion name="companyRate"         position="3" type="fixed"            args="{'value':'1'}"                                                                      target="ALWAYS" mode="EMPTY"/>
        <completion name="companyAmount"       position="4" type="variable"         args="{'field':'transAmount'}"                                                            target="ALWAYS" mode="ALWAYS"/>
        <completion name="quantity"            position="5" type="fixed"            args="{'value':'1'}"                                                                      target="ALWAYS" mode="EMPTY"/>
        <completion name="companyAmountSum"    position="6" type="calcMul"          args="{'field1':'companyAmount','field2':'quantity','round':'4','digits':'0'}"            target="ALWAYS" mode="ALWAYS"/>
        <completion name="companyAmountTax"    position="7" type="calcTax"          args="{'amount':'companyAmountSum','taxRate':'taxRate','round':'4','digits':'0'}"         target="ALWAYS" mode="ALWAYS"/>
        <completion name="companyAmountExcTax" position="8" type="calcSub"          args="{'field1':'companyAmountSum','field2':'companyAmountTax','round':'4','digits':'0'}" target="ALWAYS" mode="ALWAYS"/>
      </completions>
      <claims>
        <claim name="claimExpenseAmount"      type="claimAmountSummary"     args="{'amount':'companyAmountSum'}"/>
        <claim name="claimTemporaryPayAmount" type="claimAmountSummary"     args="{'amount':'companyAmountSum','paymentFlag':'paymentFlag','payment':'1'}"/>
        <claim name="claimCompanyPayAmount"   type="claimAmountSummary"     args="{'amount':'companyAmountSum','paymentFlag':'paymentFlag','payment':'0'}"/>
        <claim name="claimDateDetail"         type="claimColumnValuesList"  args="{'field1':'occurDate','field2':'occurDate'}"/>
        <claim name="claimExpenseDetail"      type="claimColumnValuesList"  args="{'field1':'companyAmountSum'}"/>
        <claim name="claimExpenceCount"       type="claimRowCount"          args=""/>
        <claim name="loadData4Settle"         type="claimSearchData"        args="{'systemMatterId':'imwSystemMatterId', 'userDataId':'imwUserDataId', 'gadgetClass':'gadgetClass'}" target="CLIENT"/>
      </claims>
      <events>
        <event target="matter_end" name="journalSourceDetailEntryForSqlEvent">
          <args>
            <arg key="sqlPath" value="META-INF/sql/jp/co/slcs/kaiden2/generic/gadget/journal/ExpenseDetail.sql"/>
          </args>
        </event>
      </events>
      <includes>
        <include path="/WEB-INF/view/kaiden2/product_workflow/generic/gadget/include/defaultDepartmentProject.jsp" />
      </includes>
    </block>
  </blocks>
  <surfaces>
    <surface surfaceKey="chapterTitle">
      <name localeId="en"    surface="Expenses Particulars"/>
      <name localeId="ja"    surface="経費明細"/>
      <name localeId="zh_CN" surface="经费明细"/>
    </surface>
    
    <surface surfaceKey="rowNumber">
      <name localeId="en"    surface="No"/>
      <name localeId="ja"    surface="No"/>
      <name localeId="zh_CN" surface="No"/>
    </surface>
    <surface surfaceKey="imwApplyBaseDate">
      <name localeId="en"    surface="Apply Reference Date"/>
      <name localeId="ja"    surface="申請基準日"/>
      <name localeId="zh_CN" surface="申请基准日"/>
    </surface>
    <surface surfaceKey="searchCriteriaCompany">
      <name localeId="en"    surface="Search Reference Company"/>
      <name localeId="ja"    surface="検索基準会社"/>
      <name localeId="zh_CN" surface="检索基准公司"/>
    </surface>
    <surface surfaceKey="payMethod">
      <name localeId="en"    surface="Payment Method"/>
      <name localeId="ja"    surface="支払方法"/>
      <name localeId="zh_CN" surface="支付方法"/>
    </surface>
    <surface surfaceKey="occurDate">
      <name localeId="en"    surface="Occurrence Date"/>
      <name localeId="ja"    surface="発生日"/>
      <name localeId="zh_CN" surface="发生日"/>
    </surface>
    <surface surfaceKey="summary">
      <name localeId="en"    surface="Description of Expense"/>
      <name localeId="ja"    surface="経費内容"/>
      <name localeId="zh_CN" surface="经费内容"/>
    </surface>
    <surface surfaceKey="expType">
      <name localeId="en"    surface="Expense Type"/>
      <name localeId="ja"    surface="経費区分"/>
      <name localeId="zh_CN" surface="经费分类"/>
    </surface>
    <surface surfaceKey="account">
      <name localeId="en"    surface="Account"/>
      <name localeId="ja"    surface="勘定科目"/>
      <name localeId="zh_CN" surface="帐户科目"/>
    </surface>
    <surface surfaceKey="taxType">
      <name localeId="en"    surface="Tax Category"/>
      <name localeId="ja"    surface="税区分"/>
      <name localeId="zh_CN" surface="税分类"/>
    </surface>
    <surface surfaceKey="taxRate">
      <name localeId="en"    surface="Tax Rate"/>
      <name localeId="ja"    surface="税率"/>
      <name localeId="zh_CN" surface="税率"/>
    </surface>
    <surface surfaceKey="departmentSet">
      <name localeId="en"    surface="Organization Set"/>
      <name localeId="ja"    surface="組織セット"/>
      <name localeId="zh_CN" surface="组织集合"/>
    </surface>
    <surface surfaceKey="department">
      <name localeId="en"    surface="Organization"/>
      <name localeId="ja"    surface="組織"/>
      <name localeId="zh_CN" surface="组织"/>
    </surface>
    <surface surfaceKey="project">
      <name localeId="en"    surface="Project"/>
      <name localeId="ja"    surface="プロジェクト"/>
      <name localeId="zh_CN" surface="项目"/>
    </surface>
    <surface surfaceKey="payType">
      <name localeId="en"    surface="Payment Classification"/>
      <name localeId="ja"    surface="支払分類"/>
      <name localeId="zh_CN" surface="支付分类"/>
    </surface>
    <surface surfaceKey="paymentFlag">
      <name localeId="en"    surface="Reimbursement Flag"/>
      <name localeId="ja"    surface="立替フラグ"/>
      <name localeId="zh_CN" surface="垫付标志"/>
    </surface>
    <surface surfaceKey="payee">
      <name localeId="en"    surface="Payee"/>
      <name localeId="ja"    surface="支払先"/>
      <name localeId="zh_CN" surface="收款方"/>
    </surface>
    <surface surfaceKey="transAmount">
      <name localeId="en"    surface="Amount"/>
      <name localeId="ja"    surface="金額"/>
      <name localeId="zh_CN" surface="金额"/>
    </surface>
    <surface surfaceKey="transCurrency">
      <name localeId="en"    surface="Currency"/>
      <name localeId="ja"    surface="通貨"/>
      <name localeId="zh_CN" surface="货币"/>
    </surface>
    <surface surfaceKey="companyRate">
      <name localeId="en"    surface="rate"/>
      <name localeId="ja"    surface="レート"/>
      <name localeId="zh_CN" surface="汇率"/>
    </surface>
    <surface surfaceKey="companyAmount">
      <name localeId="en"    surface="Converted"/>
      <name localeId="ja"    surface="換算額"/>
      <name localeId="zh_CN" surface="换算额"/>
    </surface>
    <surface surfaceKey="companyCurrency">
      <name localeId="en"    surface="Company Currency"/>
      <name localeId="ja"    surface="会社通貨"/>
      <name localeId="zh_CN" surface="公司货币"/>
    </surface>
    <surface surfaceKey="quantity">
      <name localeId="en"    surface="Quantity"/>
      <name localeId="ja"    surface="数量"/>
      <name localeId="zh_CN" surface="数量"/>
    </surface>
    <surface surfaceKey="companyAmountSum">
      <name localeId="en"    surface="Total amount"/>
      <name localeId="ja"    surface="合計額"/>
      <name localeId="zh_CN" surface="总量"/>
    </surface>
    <surface surfaceKey="companyAmountExcTax">
      <name localeId="en"    surface="Tax excluded amount"/>
      <name localeId="ja"    surface="税抜金額"/>
      <name localeId="zh_CN" surface="税抜金量"/>
    </surface>
    <surface surfaceKey="companyAmountTax">
      <name localeId="en"    surface="Tax included amount"/>
      <name localeId="ja"    surface="税込金額"/>
      <name localeId="zh_CN" surface="钱含税金额"/>
    </surface>
  </surfaces>
  <tags>
    <tag value="appNormal"/>
    <tag value="appAdvance"/>
    <tag value="appSettle"/>
    <tag value="spSupport"/>
  </tags>
</gadgetBuilderSettings>