intra-mart Accel Kaiden! GadgetBuilder 設定ガイド 第6版 2020-04-01

4.1. GadgetBuilder定義

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

4.1.1. 概要

4.1.1.1. GadgetBuilder定義とは?

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

GadgetBuilder定義は、JSP、Action、Form(Dto)、Logicの設定を行います。
../../../_images/gadgetBuilderImage_01.png

コラム

GadgetBuilder定義は、ガジェットマスタの設定階層に準拠しています。
ガジェットマスタについては『intra-mart Accel Kaiden! プログラミングガイド』の「応用」→「ガジェット(経費旅費)」→「機能説明」→「申請書ガジェットマスタデータについて」を参照してください。
GadgetBuilder定義の全体イメージは「Sample」を参照してください。

コラム

GadgetBuilder定義の標準設定で対応できない場合は、独自のJSPやLogicを作成し、設定することで拡張することができます。
GadgetBuilder定義の標準設定で対応できる場合は、拡張設定を行う必要はありません。

コラム

申請書ガジェットとIM-Workflowコンテンツの関係性は、下記の図のようになっています。
../../../_images/gadgetBuilderImage_02.png

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>

コラム

GadgetBuilder定義は、申請書ガジェットマスタへ登録されます。
申請書ガジェットマスタ
設定値
ガジェットクラス
GadgetBuilder定義のガジェットクラス
ガジェットバリエーション
GadgetBuilder定義のガジェットバリエーション
JSPパス
GadgetBuilder定義のJSPパス
Javaパス
GadgetBuilder定義のJavaパス
ソートキー
GadgetBuilder定義のソートキー
サーフィスキー
GadgetBuilder定義のサーフィスキー
解説
  • ガジェットクラス(gadgetBuilderSettings / gadgetClass):必須
    ガジェットクラスを設定します。
  • ガジェットバリエーション(gadgetBuilderSettings / gadgetVariation):必須
    ガジェットバリエーションを設定します。
  • JSPパス(gadgetBuilderSettings / jspPath):必須
    ガジェットのJSPパスを定義します。

    コラム

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

    コラム

    標準のLogicクラスを使用する場合、「jp.co.slcs.kaiden2.extension_imw.feature.logic.kaiden.gadget.builder.GadgetBuilderLogic」を設定します。
    標準のLogicクラスから変更する場合、独自に作成したLogicクラスのパスを設定してください。

    コラム

    Logicクラスを独自に作成する場合、「jp.co.slcs.kaiden2.extension_imw.feature.logic.kaiden.gadget.builder.AbstractGadgetBuilderLogic」を継承してください。
  • ソートキー(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」を変更する場合に設定します。
    GadgetBuilder定義で拡張できるLogicクラスの役割は次の通りです。
    Javaパス
    ワークフローイベントの申請・承認・再申請・一時保存などを行います。
    拡張設定(Logic)
    構成情報の返却やデータの登録・更新・削除・検索などを行います。
    「拡張設定(Logic)」で設定したクラスは、「Javaパス」に設定したクラスから使用されます。
  • 拡張設定(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
ガジェット概要設定のロケールID
ガジェット名
ガジェット概要設定のガジェット名
ガジェット概要
ガジェット概要設定のガジェット概要
解説
  • ロケールID(gadgetBuilderSettings / descriptions / description @ localeId):必須
    ロケールIDを設定します。
  • ガジェット名(gadgetBuilderSettings / descriptions / description @ gadgetName):必須
    ガジェット名を設定します。
  • ガジェット概要(gadgetBuilderSettings / descriptions / description @ description):必須
    ガジェット概要を設定します。

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

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

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

設定
../../../_images/block.png

コラム

ガジェットブロック設定は、申請書ガジェットブロックマスタへ登録されます。
申請書ガジェットブロックマスタ
設定値
ブロックID
ガジェットブロック設定のブロックID
ブロックタイプ
ガジェットブロック設定のブロックタイプ
ソートキー
ガジェットブロック設定のソートキー
サーフィスキー
ガジェットブロック設定のサーフィスキー
解説
  • ブロック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」属性に設定されます。

    コラム

    TmTableについては『intra-mart Accel Kaiden! プログラミングガイド』の「基本」→「仕様解説」→「TMTable」を参照してください。
  • カラムグループ設定(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):任意
    ブロック引数を設定します。
    主に、「class」属性や「style」属性の値となります。

コラム

ブロック引数設定に、申請データの初期表示や申請書コピーの際にSQLで取得したデータの内、設定不要なデータを除外することができます。
「key」に「loadDataExclude」及び「loadData4CopyExclude」を設定し、「value」に除外する項目(予備項目等)をカンマ区切りで設定してください。

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

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

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

設定
../../../_images/fieldGroup.png

コラム

フィールドグループ設定は、申請書ガジェットフィールドグループマスタへ登録されます。
申請書ガジェットフィールドグループマスタ
設定値
ブロックID
ガジェットブロックマスタのブロックID
フィールドグループID
フィールドグループ設定のフィールドグループID
サーフィスキー
フィールドグループ設定のサーフィスキー
必須タイプ
フィールドグループ設定の必須タイプ
以下、必須タイプによる設定値
「0:SETTING_ANY」
「1:SETTING_REQ」
「a:ALWAYS_ANY」
「b:ALWAYS_REQ」
入力タイプ
フィールドグループ設定の入力タイプ
以下、入力タイプによる設定値
「0:CONFIG」
「a:LABEL」
「b:TEXT」
「c:TEXT_LABEL」
ソートキー
フィールドグループ設定のソートキー
解説
  • フィールドグループ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 常時必須

    コラム

    任意の場合、フィールドは次の様になります。
    • PC
    ../../../_images/fieldAny.png
    • SP(スマートフォン)
    ../../../_images/fieldAny_sp.png

    コラム

    必須の場合、フィールドは次の様になります。
    • PC
    ../../../_images/fieldReq.png
    • SP(スマートフォン)
    ../../../_images/fieldReq_sp.png
  • 入力タイプ(gadgetBuilderSettings / blocks / block / groups / group @ inputType):任意
    フィールドグループの入力タイプを設定します。
    未設定の場合は「CONFIG」(設定変更可)となります。
    選択可能な入力タイプは次の通りです。
    設定値 説明
    CONFIG 設定変更可
    LABEL ラベル(変更不可)
    TEXT テキスト(変更不可)
    TEXT_LABEL テキスト(処理時入力不可・変更不可)

    コラム

    ラベルの場合、フィールドは次の様に入力が不可能になります。
    • PC
    ../../../_images/fieldLabel.png
    • SP(スマートフォン)
    ../../../_images/fieldLabel_sp.png

    コラム

    テキストの場合、フィールドは次の様に入力が可能になります。
    • PC
    ../../../_images/fieldText.png
    • SP(スマートフォン)
    ../../../_images/fieldText_sp.png
  • ソートキー(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」階層は、複数設定が可能です。

設定
../../../_images/field.png

コラム

フィールド設定は、申請書ガジェットフィールドマスタへ登録されます。
申請書ガジェットフィールドマスタ
設定値
ブロックID
ガジェットブロックマスタのブロックID
フィールドキー
フィールド設定のフィールドID
フィールドグループID
ガジェットフィールドマスタのフィールドグループID
サーフィスキー
フィールド設定のサーフィスキー
必須タイプ
フィールド設定の必須タイプ
以下、必須タイプによる設定値
「0:SETTING_ANY」
「1:SETTING_REQ」
「a:ALWAYS_ANY」
「b:ALWAYS_REQ」
「z:INHERIT」
入力タイプ
フィールド設定の入力タイプ
以下、入力タイプによる設定値
「0:CONFIG」
「a:LABEL」
「b:TEXT」
「c:TEXT_LABEL」
「z:INHERIT」
ソートキー
フィールド設定のソートキー
解説
  • フィールド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 フィールドグループの設定を引き継ぐ

    コラム

    任意の場合、フィールドは次の様になります。
    • PC
    ../../../_images/fieldAny.png
    • SP(スマートフォン)
    ../../../_images/fieldAny_sp.png

    コラム

    必須の場合、フィールドは次の様になります。
    • PC
    ../../../_images/fieldReq.png
    • SP(スマートフォン)
    ../../../_images/fieldReq_sp.png
  • 入力タイプ(gadgetBuilderSettings / blocks / block / groups / group / fields / field @ inputType):任意
    フィールドの入力タイプを設定します。
    未設定の場合は「INHERIT」(フィールドグループの設定を引き継ぐ)となります。
    選択可能な入力タイプは次の通りです。
    設定値 説明
    CONFIG 設定変更可
    LABEL ラベル(変更不可)
    TEXT テキスト(変更不可)
    TEXT_LABEL テキスト(処理時入力不可・変更不可)
    INHERIT フィールドグループの設定を引き継ぐ

    コラム

    ラベルの場合、フィールドは次の様に入力が不可能になります。
    • PC
    ../../../_images/fieldLabel.png
    • SP(スマートフォン)
    ../../../_images/fieldLabel_sp.png

    コラム

    テキストの場合、フィールドは次の様に入力が可能になります。
    • PC
    ../../../_images/fieldText.png
    • SP(スマートフォン)
    ../../../_images/fieldText_sp.png
  • ソートキー(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 申請イベント(PC版)のみ実行
    applysp 申請イベント(SP(スマートフォン)版)のみ実行
    tempsave 一時保存イベント(PC版)のみ実行
    tempsavesp 一時保存イベント(SP(スマートフォン)版)のみ実行
    reapply 再申請イベント(PC版)のみ実行
    reapplysp 再申請イベント(SP(スマートフォン)版)のみ実行
    process 処理イベント(PC版)のみ実行
    processsp 処理イベント(SP(スマートフォン)版)のみ実行
    warning
    アラート処理を実行
    (情報明細ガジェットにコメント必須)
    information
    アラート処理を実行
    (情報明細ガジェットのコメントは任意)

コラム

バリデート実行イベントに、「apply」、「tempsave」、「reapply」、「process」のいずれかを設定した場合、
各イベントのPC版のクライアントサイドチェック、PC版とSP(スマートフォン)版のサーバーサイドチェックを実施します。
SP(スマートフォン)版のクライアントサイドチェックを実施したい場合は「applysp」、「tempsavesp」、「reapplysp」、「processsp」をあわせて設定してください。
「applysp」、「tempsavesp」、「reapplysp」、「processsp」のバリデート実行対象を「ALWAYS」に設定してもサーバーサイドチェックは実施されません。

コラム

「warning」、「information」を設定したガジェットは、情報明細ガジェットを同じ申請書に組み込んでください。
「warning」、「information」を設定した場合、チェックがNGの際も申請可能です。
アラート処理の詳細は『intra-mart Accel Kaiden! 経費旅費 / 管理者操作ガイド』を参照してください。
  • バリデート実行対象(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):任意
    補完処理の引数を設定します。
    詳細は「補完処理」を参照してください。

コラム

補完処理実行タイミング
  • 初期表示時
  • 申請時
  • 一時保存時
  • 処理時
  • 再申請時

コラム

フィールド設定の引数設定に、イベントを設定している場合
フィールドに設定できるイベントはフィールドタイプによって異なるため「フィールドタイプ」を参照してください。
  • フィールドに「click」イベントを設定している場合、そのフィールドのクリック時にも補完処理が実行されます。
<field id="targetField" surfaceKey="targetField" requiredType="INHERIT" inputType="INHERIT" type="BUTTON">
  <args>
    <arg key="event" value="click"/>
  </args>
</field>
  • フィールドに「change」イベントを設定している場合、そのフィールドの変更時にも補完処理が実行されます。
<field id="targetField" surfaceKey="targetField" requiredType="INHERIT" inputType="INHERIT" type="TEXT_NUMERIC">
  <args>
    <arg key="event" value="change"/>
  </args>
</field>

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」を参照してください。

コラム

インクルード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>

コラム

ガジェットサーフィス設定は、申請書ガジェットサーフィスマスタへ登録されます。
申請書ガジェットサーフィスマスタ
設定値
サーフィスキー
ガジェットサーフィス設定のサーフィスキー
ロケールID
ガジェットサーフィス設定のロケールID
サーフィス
ガジェットサーフィス設定のサーフィス
解説
  • サーフィスキー(gadgetBuilderSettings / surfaces / surface @ surfaceKey):必須
    サーフィスキーを設定します。
  • ロケールID(gadgetBuilderSettings / surfaces / surface / name @ localeId):必須
    ロケールIDを設定します。
  • サーフィス(gadgetBuilderSettings / surfaces / surface / name @ surface):必須
    サーフィスを設定します。

コラム

ロケールIDの設定では、システムとして使用していないロケールは設定不要です。

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(スマートフォン)画面をサポートする場合に設定します。
SPサポート対象外 spNoSupport
SP(スマートフォン)画面をサポートしない場合に設定します。
チェックルール checkRule
申請書マスタメンテナンスのチェックルール画面で入力チェックの設定を可能にする場合設定します。
申請書マスタメンテナンスの詳細は、『intra-mart Accel Kaiden! 経費旅費 / 管理者操作ガイド』を参照してください。

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"/>
            <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="style_pc"    value="max-width:70px; width:calc(100% - 40px);"/>
                <arg key="title"       value="occurDate"/>
                <arg key="placeholder" value="occurDate"/>
                <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:calc(100% - 10px);"/>
                <arg key="title"       value="summary"/>
                <arg key="placeholder" value="summary"/>
              </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_filtering"/>
                <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','filteringType':'gadget,contents','filterGadgetClass':'expenseDetail','filterGadgetVariation':'v01','filterContentsId':'imwContentsId','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="width:calc(40% - 35px);"/>
                <arg key="title"         value="expType"/>
                <arg key="placeholder"   value="expType"/>
              </args>
              <validates>
                <validate event="default" target="SERVER" config="{'id':'masterBuilderExists', 'args':{'masterId':'exp_type_filtering', 'extensionId':'expenseDetail', 'searchCriteriaDate':'imwApplyBaseDate', 'searchCriteriaCompany':'searchCriteriaCompany', 'expTypeCd':'expTypeCd','filteringType':'gadget,contents','filterGadgetClass':'expenseDetail','filterGadgetVariation':'v01','filterContentsId':'imwContentsId'}}"/>
              </validates>
            </field>
            <field id="imwContentsId" surfaceKey="imwContentsId" requiredType="ALWAYS_ANY" inputType="INHERIT" type="DTO"/>
            <field id="accountCd" surfaceKey="account" requiredType="INHERIT" inputType="INHERIT" type="TEXT_HIDDEN">
              <validates>
                <validate event="default" target="SERVER" config="{'id':'masterBuilderExists', 'args':{'masterId':'account', 'extensionId':'expenseDetail', 'searchCriteriaDate':'imwApplyBaseDate', 'searchCriteriaCompany':'searchCriteriaCompany', 'accountCd':'accountCd'}}"/>
              </validates>
            </field>
            <field id="accountName" surfaceKey="account" requiredType="ALWAYS_ANY" inputType="LABEL" type="TEXT">
              <args>
                <arg key="class_pc" value="kaiden-ui-dummey-text label-overflow"/>
                <arg key="style_pc" value="width:calc(30% - 15px);"/>
                <arg key="title"    value="account"/>
              </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="class_pc" value="kaiden-ui-dummey-text label-overflow"/>
                <arg key="style_pc" value="width:calc(30% - 15px);"/>
                <arg key="title"    value="taxType"/>
              </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"/>
                <arg key="style_pc"      value="width:calc(100% - 35px);"/>
                <arg key="title"         value="department"/>
                <arg key="placeholder"   value="department"/>
              </args>
              <validates>
                <validate event="apply"     target="ALWAYS" config="{'id':'requiredAny', 'args':['departmentCd','projectCd']}"/>
                <validate event="reapply"   target="ALWAYS" config="{'id':'requiredAny', 'args':['departmentCd','projectCd']}"/>
                <validate event="process"   target="ALWAYS" config="{'id':'requiredAny', 'args':['departmentCd','projectCd']}"/>
                <validate event="applysp"   target="ALWAYS" config="{'id':'requiredAny', 'args':['departmentCd','projectCd']}"/>
                <validate event="reapplysp" target="ALWAYS" config="{'id':'requiredAny', 'args':['departmentCd','projectCd']}"/>
                <validate event="processsp" 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:calc(100% - 35px);"/>
                <arg key="title"         value="project"/>
                <arg key="placeholder"   value="project"/>
              </args>
              <validates>
                <validate event="apply"     target="ALWAYS" config="{'id':'requiredAny', 'args':['departmentCd','projectCd']}"/>
                <validate event="reapply"   target="ALWAYS" config="{'id':'requiredAny', 'args':['departmentCd','projectCd']}"/>
                <validate event="process"   target="ALWAYS" config="{'id':'requiredAny', 'args':['departmentCd','projectCd']}"/>
                <validate event="applysp"   target="ALWAYS" config="{'id':'requiredAny', 'args':['departmentCd','projectCd']}"/>
                <validate event="reapplysp" target="ALWAYS" config="{'id':'requiredAny', 'args':['departmentCd','projectCd']}"/>
                <validate event="processsp" 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="style_pc"      value="width:calc(100% - 10px);"/>
                <arg key="title"         value="payType"/>
                <arg key="placeholder"   value="payType"/>
              </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:calc(100% - 10px);"/>
                <arg key="title"       value="payee"/>
                <arg key="placeholder" value="payee"/>
              </args>
              <validates>
                <validate event="default" config="{'id':'maxLength', 'args':'250'}"/>
              </validates>
            </field>
          </fields>
        </group>
        <group id="transAmount" surfaceKey="transAmount" requiredType="ALWAYS_REQ" inputType="CONFIG">
          <fields>
            <field id="transAmount" surfaceKey="transAmount" requiredType="INHERIT" inputType="INHERIT" type="TEXT_NUMERIC">
              <args>
                <arg key="style_pc"    value="width:calc(100% - 10px);"/>
                <arg key="title"       value="transAmount"/>
                <arg key="placeholder" value="transAmount"/>
                <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="ALWAYS_ANY" 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="departmentSetCd"     position="1" type="claimValueAddRow" args="{'claim':'claimDefaultDepartmentSetCd', 'target':'1'}"                              target="CLIENT" mode="EMPTY"/>
        <completion name="departmentCd"        position="1" type="claimValueAddRow" args="{'claim':'claimDefaultDepartmentCd', 'target':'1'}"                                 target="CLIENT" mode="EMPTY"/>
        <completion name="projectCd"           position="1" type="claimValueAddRow" 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 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"/>
    <tag value="checkRule"/>
  </tags>
</gadgetBuilderSettings>