PEXA Supportについて

PEXAプロパティ

トランスレータ

印刷フレームワーク

AETフレームワーク

ワークフロー

動的フォーム

変換フレームワーク

テンプレートエンジン

カレンダー

タスクスケジューラー

目次

  1. はじめに
  2. ファイルの格納場所
  3. 内部SessionKey一覧
  4. AETスキーマ全体構成
  5. AETスキーマ内部構成
  6. 記述例


はじめに

このドキュメントは、AETフレームワークのAETスキーマについて解説する物です。

AETスキーマは、あるAccountに対してのIN処理もしくはOUT処理に対して1つ作成します。
例えばケース毎に以下のようになります。

  • Accountを生成してINする場合:IN処理のスキーマ1つ
  • Account間の数量移動の場合:OUT処理のスキーマ1つ、IN処理のスキーマ1つ
  • Account間の数量移動+複写トランザクションOUT処理の場合:OUT処理のスキーマ2つ、IN処理のスキーマ1つ
上記のようになるので、AET図に記載されるEntryの箱の数とほぼ同じようになると考えてください。

トップのaetセクションがList形式なので、1つのファイル中に複数のAETスキーマを記述することも可能です。


ファイルの格納場所

AETスキーマはワークスペースの以下のフォルダに格納してください。

  /src/aet
上記にサブフォルダを作成してもかまいません。
ファイルの拡張子は".aet"です。フォルダパスと併せて以下のようになります。

格納例:
  /src/aet/発注残Account_発注InEntry.aet
拡張子以外に、ファイル名の制約はありません。命名規則は個別に決めてください。


内部SessionKey一覧

AET処理の実行エンジンは以下のセッションキーを内部で使用しています。
これらはAETスキーマの各条件式やマッピングセクション等で参照できます。

aet_error_list
AET_TransactionSource
AET_Transaction
AET_TransactionMeta
AET_TransactionMetaAmount
AET_TransactionAmount
AET_AetName
AET_Account(※)
AET_EntryAmount(※)
AET_AccountNewBalance(※)
AET_Entry(※)
AET_EntryAmount
AET_Role
(※)一つのTransactionで複数のAccountが引当てられた場合、最後に引当てられた際のAccount,Entryに関する情報のみが取得可能です。

AET処理の実行エンジンが返すエラー情報には以下のセッションキーでエラー発生時の情報が格納されています。

AET_Transaction
AET_TransactionMeta
AET_ErrorCode
AET_ErrorMessage
AET_Entry
AET_EntryAmount
AET_Account


AETスキーマ全体構成

プロパティ一覧

(*)必須項目
(+)オリジナルモード時には必須
(-)Commonモード時には必須

[aet
    aet_name            Operation名
    aet_id              OperationID
    in_out_flag         in|out
    before_aet_name     先に実行すべきaet_name
    (transaction        ;;Transactionに関する取り扱いを記述(*)
        (source         ;;TransactionSourceの取得方法を指定(*)
            model_name      TransactionSourceモデル名(*)
            filter          TransactionSrouceに対するフィルタ条件式
        )
        (target         ;;Transactionの取得方法を指定(指定しない場合は、TransactionSourceがTransactionとして取り扱われる)
            model_name      TransactionSourceから取得するTransactionモデル名
            path            TransactionSourceからTransactionの取得パス
            filter          Transactionに対するフィルタ条件式
        )
        amount_ptype_name                  Transactionモデルから移動量を取得するための現象型名(*)
        account_unique_proxy_ptype_name    Commonモード時にAccountを特定する際のフィルタ条件に追加するProxyを保持する現象型名
        rollbacked_account_remove_flag     true|false Transaction実行時にAccountが存在しない場合Accoutを生成したTransactionがロールバックされた際にAccountも同時に削除するかを制御するフラグ
        amendment                          true|false Transactionの移動量が更新された場合の処理方法を指定。trueの場合は、差分分だけのEntryが生成される。falseの場合は一度ロールバックしてから更新後の移動量で再度Transactionを実行する。
        tran_basis_date_ptype_name         Transactionにおいて基準日を保持している現象型名
        tran_basis_datetime_ptype_name     Transactionにおいて基準日時を保持している現象型名
        (feedback                          ;;Transaction処理終了後のTransaction/TransactionSourceインスタンスへのフィードバック
            (transaction
                (mapping                   ;;Transaction実行後Transactionインスタンスに対するフィードバック項目のマッピングを記述
                    PhenomenonTypeNameA valueA  ;; AET_Account,AET_Entry,AET_TransactionSource,AET_TransactionMeta,AET_Role等をSessionKeyとして利用可能。
                    PhenomenonTypeNameB valueB  ;; ただし、複数Accountに対する引当が発生した場合最後に設定したAccount,Entryがacount,entryにマッピングされる
                    ...
                )
            )
            (transaction_source
                (mapping                   ;; Transaction実行後TransactionSourceインスタンスに対するフィードバック項目のマッピングを記述(AET_Account,AET_Entry,AET_TransactionMeta,AET_Role等をSessionKeyとして利用可能:ただし、複数Accountに対する引当が発生した場合最後に設定したAccount,EntryがAET_Acount,AET_Entryにマッピングされる)
                    PhenomenonTypeNameA valueA  ;; AET_Account,AET_Entry,AET_Transaction,AET_TransactionMeta,AET_Role等をSessionKeyとして利用可能。
                    PhenomenonTypeNameB valueB  ;; ただし、複数Accountに対する引当が発生した場合最後に設定したAccount,EntryがAET_Acount,AET_Entryにマッピングされる
                    ...
                )
            )
        )
        (rollback_feedback  ;; ロールバック処理終了後のTransaciton/TransactionSourceインスタンスへのフィードバック
            (transaction        ;; ロールバック実行後Transactionインスタンスに対するフィードバック項目のマッピングを記述(AET_Account,AET_Entry,AET_TransactionMeta,AET_Role等をSessionKeyとして利用可能:ただし、複数Accountに対する引当が発生したいた場合最後にロールバックしたAccount,EntryがAET_Acount,AET_Entryにマッピングされる)
                (mapping
                    PhenomenonTypeNameA valueA  ;; AET_Account,AET_Entry,AET_TransactionSource,AET_TransactionMeta,AET_Role等をSessionKeyとして利用可能。
                    PhenomenonTypeNameB valueB  ;; ただし、複数Accountに対する引当が発生した場合最後に設定したAccount,EntryがAET_Acount,AET_Entryにマッピングされる
                    ...
                )
            )
            (transaction_source ;; ロールバック実行後TransactionSourceインスタンスに対するフィードバック項目のマッピングを記述(account,entry,transactionMeta,Role等をSessionKeyとして利用可能:ただし、複数Accountに対する引当が発生したいた場合最後にロールバックしたAccount,EntryがAET_Acount,AET_Entryにマッピングされる)
                (mapping
                    PhenomenonTypeNameA valueA  ;; AET_Account,AET_Entry,AET_Transaction,AET_TransactionMeta,AET_Role等をSessionKeyとして利用可能。
                    PhenomenonTypeNameB valueB  ;; ただし、複数Accountに対する引当が発生した場合最後に設定したAccount,EntryがAET_Acount,AET_Entryにマッピングされる
                    ...
                )
            )
        )
    )
    (account ;; Accountに関する取り扱いを記述(*)
        model_name              Accountのモデル名(+)
        account_name            Accountの種類名(-)
        initial_basis_date                 true|false ;; Accountに生成時の基準日を設定するか否かを指定するフラグ
        initial_basis_date_ptype_name      Accountの生成時の基準日を設定する現象型を指定
        initial_basis_datetime             true|false ;; Accountに生成時の基準日時を設定するか否かを指定するフラグ
        initial_basis_datetime_ptype_name  Account生成時の基準日時を設定する現象型を指定
        empty_basis_date                   true|false ;; AccountのBalanceが0になった時点での基準日を設定するか否かを指定するフラグ
        empty_basis_date_ptype_name        AccountのBalanceが0になった時点の基準日を設定する現象型を指定
        empty_basis_datetime               true|false ;; AccountのBalanceが0になった時点での基準日時を設定するか否かを表すフラグ
        empty_basis_datetime_ptype_name    AccountのBalanceが0になった時点の基準日時を設定する現象型を指定
        (search         ;;TransactionからAccountを見つける方法に関する記述
            filter      Transactionの対象Accountを検索するためのフィルタ条件式(+)
            (key        ;; 将来の実装予定。ForeignKeyの指定で検索を行う場合の指定。filterとは排他。
                account_key_ptype_name      将来の実装予定:Accountが保持するTransactionに対するForeinKeyになる現象型名の指定。filterとは排他
                transaction_key_ptype_name  将来の実装予定:Transacitonがacccount_key_ptype_nameと異なる現象型で保持している場合、その現象型名を指定filterとは排他         
                filter                      追加の検索条件を記述
            )
            unique              true|false  ;; Accountが一つだけ見つかるか否かを宣言するフラグ。trueが設定されている場合複数Accountが見つかったら例外を送信する
            no_found_ignore     true|false  ;; Accountが見つからない場合Operation自体を行わない、無視するかどうかに関するフラグ。Createセクションがある場合は無視。
        )
        (create  ;; Accountが見つからない場合Accountインスタンスを生成する場合の処理を記述(Commonモードでも生成する場合は、Section自体は必要)
            force               true|false ;; Transactionインスタンス単位の強制Account生成に関するフラグ。true=必ず生成する/false=無かったら作る
            tran_no_ptype_name  生成したAET_TransactionMetaのProxy(AET_TransactionMetaNo)を保持する現象型名を指定(+)
            (mapping   ;; Account生成時のマッピング情報を記述。AET_TransactionSource,AET_Transaction,AET_TransactionMeta,AET_Role等をSessionKeyとして利用可能。
                    PhenomenonTypeNameA valueA
                    PhenomenonTypeNameB valueB
                    ...
            )
        )
        (assignment ;; accountが一意に決まらない場合の処理を記述。記述しない場合はCreateDatetimeによるソート順での引当になる。
            assignment_style        order|balance ;; 各Accountへの引当方法を指定。order:ソート順に引当。balance:指定された案分ルールに基づく各Accountへの移動量を案分して引当(*)
            (order ;; assignment_styleがOrderの場合のソート順番を記述
                order_ptype_names   SortKey1,SortKey2,~SortKey3 ;; ソートキーに使う現象型名を指定。降順の場合は現象型名の前に「~」を記述。一つ以上ある場合は、空白をあけないで「,」で区切る。
            )
            (balance ;; assignment_styleの場合の案分方法を記述
                ;; 未実装
            )
        )
        (amount ;; accountの残数(balance)に関する記述
            amount_ptype_name           残数を保持する現象型名(+)。Commonモードの場合は不要
            initial_amount_ptype_name   Account生成時の残数を保持する現象型名
            amount_minus_enable         true|false  ;; 残数がマイナスを許すかどうかを指定するフラグ。true:可能。false:不可
            amend_initial_amount        true|false  ;; InitialAmountを設定したtransactionのAmountが変更になった場合にAccountInitialBalanceの値も自動的に更新するフラグ。
            (amount_limit ;; 残数の上限に関する制約を記述。
                amount_limit_type   none|initial|path|static|ptype  ;; 残数の上限値の有無および、取得方法を指定するフラグ
                value_path          amount_limit_type=pathの場合のAccountに対する上限値取得のためのパス式
                value_static        amount_limit_type=staticの場合の条件値を指定
                value_ptype_name    amount_limit_type=ptypeの場合の上限値を取得する現象型名を指定
            )
        )
        (rollback   ;; ロールバック条件の記述
            rollback_enable_policy  any|plus|initial|condition  ;; ロールバックの制約の種類を表すフラグ。
            ;; any:無し
            ;; plus:ロールバック後の値が0以上になる場合のみ可
            ;; initial:ロールバック後の値がAccountの生成時の残数と同じになる場合のみ可
            ;; condition:Accountに対してrollback_enable_conditionで指定したフィルタ条件が真になる場合のみ可
            (rollback_enable_condition  ;; rollback_enable_policyの場合のフィルタ条件を記述
                filter      Accountに対するフィルタ条件式(AET_TransactionSource,AET_Transaction,AET_TransactionMeta,AET_TransactionMetaAmount,AET_TransactionAmount,AET_Role等のSessionKeyを利用可能)
            )
        )
    )
    (entry  ;; entryに関する処理を記述
        model_name                  Entryのモデル名(+)
        tran_no_ptype_name          AET_TransactionMetaNoを保持する現象型名(+)(省略時はAET_TransactionMetaNo)
        account_primary_ptype_name  Accountのプライマリを保持する現象型名(省略時はAccountのプライマリキー名に同じ、Commonモード時は不要)
        entry_balance_ptype_name    Entryに割り当てられた移動量を保持する現象型名(+)
        (mapping ;; entry生成時のマッピング情報を記述。
            PhenomenonTypeA     valueA  ;; AET_Transaction,AET_TransactionSource,AET_TransactionMeta,AET_TransactionAmount,AET_TransactionMetaAmount,AET_Account,AET_EntryAmount,AET_RoleをSessionKeyとして利用可能
            ...
        )
        rollbacked_only         ture|false(false)   ;; ロールバック時にAET_RollbackedFlagによる制御を行います。Commonモード時でも有効です。オリジナルモード時はrollbacked_mappingセクションがある場合、そちらが優先されます。
        (rollbacked_mapping
            PhenomenonTypeA     valueA  ;; AET_Transaction,AET_TransactionSource,AET_TransactionMeta,AET_TransactionAmount,AET_TransactionMetaAmount,AET_Account,AET_Entry,AET_RoleをSessionKeyとして利用可能
            ...
        )
    )
    ,
    ...
    
]


aetセクション
[aet
    aet_id宣言部(1)             key:AET_9桁:必須
    aet_name宣言部(1)           key:文字列:必須
    in_out_flag属性(1)          key:区分値:in|out
    before_aet_name宣言部(0|1)  key:文字列:オプション
    transactionセクション(1)    section:単一:必須
    accountセクション(1)        section:単一:必須
    entryセクション(1)          section:単一:オプション
    ,
       :
       :
       :
]

記述注:
    属性        あらかじめ決められた値を選択する(true/falseなど)
    宣言部      値または、値のリストを設定する
    セクション  入れ子で他の属性、宣言部、セクションを保持する可能性がある
                (値又は、値のリストが設定される場合もある)

    (1):必須
    (0|1):オプション
    (1以上):一個以上必須
    (0以上):0個以上(オプション)

キー名 説明
aet_name AET処理名を記述します。AET処理名はaetセクションの中で一意である必要があります。
aet_id AET処理IDを記述します。
ID体系は、基本的に「AET_9桁の番号」になります。
aet_name同様、aetセクションの中で一意である必要があります。
in_out_flag OperationがAccountに対する積み上げ(in)なのか、積み卸し(out)なのかを指定します。
before_aet_name 先に実行すべきaet_nameを指定します。
展開トランザクション処理の実行順序を保証するための指定です。
transaction AET処理の起点となるモデルであるTransactionに関する情報を記述します。
account AET処理における残数管理モデルであるAccountに関する情報を記述します。
entry AET処理におけるAccountの明細であるEntryに関する情報を記述します。


transactionセクション

(transaction
    sourceセクション(1)                         section:単一:必須
    targetセクション(0|1)                       section:単一:optional
    amount_ptype_name宣言部(1)                  key:現象型名:必須
    account_unique_proxy_ptype_name宣言部(0|1)  key:現象型名:optional
    rollbacked_account_remove_flag属性(0|1)     key:区分値:true|false(default:false)
    amendment属性(0|1)                          key:区分値:true|false(default:false)
    tran_basis_date_ptype_name宣言部(0|1)       key:現象型名:optional
    tran_basis_datetime_ptype_name宣言部(0|1)   key:現象型名:optional
    feedbackセクション(0|1)                     section:単一:optional
    rollback_feedbackセクション(0|1)            section:単一:optional
)

記述注:
    属性        あらかじめ決められた値を選択する(true/falseなど)
    宣言部      値または、値のリストを設定する
    セクション  入れ子で他の属性、宣言部、セクションを保持する可能性がある
                (値又は、値のリストが設定される場合もある)

    (1):必須
    (0|1):オプション
    (1以上):一個以上必須
    (0以上):0個以上(オプション)

AET処理におけるTransactionのマッチング条件、ロールバックやフィードバックなどに関する情報を管理します。
このセクション配下に記述するマッチング条件式に、サービス定義のAETプロセスから渡されたデータモデルがヒットした場合に該当のAET処理が実行されます。

キー名 説明
source TransactionSourceに関する情報を記述します。
target TransactionSourceになるモデルと実際のTranasctionの起点になるモデルが一致しない場合に、TransactionSourceからTransactionモデルを取り出すための情報を記述します。

具体的には、ヘッダ・明細型のモデルを想定しています。
コミット(イベント)はヘッダ側になるが、実際のTransactionの起点になるのが明細モデルになる場合は、sourceセクションでヘッダ側のモデルを指定しておいて、targetセクションでヘッダから明細を取り出す方法を指定します。

targetセクションの指定に基づき取り出したtransactionモデルインスタンスが複数ある場合は、そこインスタンス個数分だけAET処理が実行されます。
Transaction Source自体がtransactionの起点になる場合は省略可能です。
amount_ptype_name Transactionの起点となるモデル(sourceセクションおよび、targetセクションの説明を参照)からTransactionの移動量を取得するための現象型名を指定します。
account_unique_proxy_ptype_name CommonAccount(Common処理)を利用する場合、CommonAccountとTransactionモデルを結びつけるのに利用する現象型名を指定します。

CommonAccountは原則、accountセクションで指定するaccount_nameとこの現象型で指定した値を持つCommonAccountでTransactionに対応するCommonAccountインスタンスを検索します。
account_unique_proxy_ptype_nameがして入れない場合は、accountセクションのaccount_nameのみをキーにCommonAccountを検索します。
account_unique_proxy_ptype_nameは、Transactionのモデル名だけでなく、そのTransactionが保持する何らかの現象型(主にマスタの通番)単位にCommonAccountを管理したい場合に利用します。

ただし、現状はTransactionが持つ複数の現象型を組み合わせを指定することはできません。一つの現象型のみ指定可能です。
一般的にaccount_unique_proxy_ptype_nameには、Transactionモデルが保持する何らかのProxyを値に持つ現象型が指定されます(例:商品No等)。CommonAccountを利用しない場合は、キー自体を設定しないでください。
rollbacked_account_remove_flag 生成型Transactionパターンにおけるロールバック発生時のAccountを削除するか否かを制御するためのフラグ。

具体的には該当Transactionモデルインスタンスが、Accountを生成したモデルインスタンスでありそれがロールバックされた場合、Account自体を削除するかどうかを制御します。 trueを設定することでロールバックによって残数0の意味のないAccountが残り続けるのを排除します。

trueの場合は、Account(含むCommonAccount)が削除され、falseの場合は特に削除を行わないません。
ただし、後述のaccountセクションにおいてcreateセクションが指定されていない場合は、Transactionに応じてAccountが生成されることはないので特に設定する意味はありません。また、オリジナルモード時の場合、account/createセクションのキー「tran_no_ptype_name」が指定されていないと削除できません(どれが生成時のTransactionなのか認識できない)。

削除が行われるのはロールバック後であり、ロールバック自体が残数制約などによって失敗した場合、削除も行われません。
amendment Transactionの移動量を変更した場合の取り扱い方法を指定します。
trueを指定した場合、残数制約を満たす限りにおいて元の量から増分および減分のEntryが作成されます。
falseを指定した場合は一度ロールバックを実行した後、更新後の数量で再度Entryを生成します。
tran_basis_date_ptype_name Transactionにおいて基準日を保持している現象型名を指定します。
この設定が記述されていると、AETフレームワークはここで指定された現象型名でtransactionから基準日を取得してEntryモデルのAET_EntryBasisDateに設定します。
tran_basis_datetime_ptype_name Transactionにおいて基準日時を保持している現象型名します。
この設定が記述されていると、AETフレームワークはここで指定された現象型名でtransactionから基準日時を取得してEntryモデルのAET_EntryBasisDatetimeに設定します。
feedback 該当OperationによるAET処理後、TransactionSourceモデルインスタンスおよび、Transactionモデルインスタンスに対するフィードバック処理を記述する。
特にフィードバックすべき内容がない場合は省略可。

ロールバック処理時のフィードバックについては、別途「rollback_feedback」セクションにて記述すること。
rollback_feedback 該当OperationによるAETロールバック処理後、TransactionSourceモデルインスタンスおよび、Transactionモデルインスタンスに対するフィードバック処理を記述する。
特にフィードバックすべき内容がない場合は省略可。
sourceセクション
(source
    model_name宣言部(1)  key:モデル名(文字列):必須
    filter宣言部(1)      keyまたは、section:単一:Optional
)
キー 説明
model_name TransactionSourceになるモデル名を指定します。

「target」セクションがない場合、このモデルはTransactionモデルでもあります。
Sessionキー「AET_TransactionSource(※)」に「model_name」に一致するモデルインスタンスが存在する場合、AET処理が開始されます。

(※)aetプロセス内で任意のSessionKeyを指定できるように拡張する予定
filter filter条件式です。TransactionSourceモデルに対するフィルタ条件を指定します。

filter条件が指定されている場合、filter条件に合致した場合のみAET処理が開始されます。
省略した場合はmodel_nameで指定されたモデル名を持つ全てのモデルインスタンスがAET処理の対象になります。
filterの記述方法は、Serviceのsearchプロセスにおけるfilterの記述方法に同じです。静的な条件式および、動的な条件式のいずれも記述することが可能です。
filter内では以下のSessionKeyを利用する事が可能です。
  • AET_TransactionSource

targetセクション
(target
    model_name宣言部(1)  キー:モデル名:必須(※)
    path宣言部(1)        キー:TransactionSourceからTransactionを取り出すためのパス式:必須
    filter宣言部(1)      キー:Transactionに対するフィルタ条件:optional
)
(※)非必須にする予定

TransactionSourceから実際のTransactionの起点となるモデルインスタンスの取り出し方について記述します。
また、取り出したTransactionモデルインスタンスに対するfilter条件を記述します。

キー 説明
model_name Transactionになるモデル名を指定します。ただし現状は利用していません。
今後、Optionalに変更の上、設定されている場合model_nameに一致した場合のみ対象とするように仕様を変更する予定です。
path TransactionSourceモデルからTransactionモデルインスタンスを取得するパス式を記述します。
ここでは、TransactionSource直下の明細だけでなく、多段階になっている明細も指定することができます。
filter path宣言部で指定されたパス式で取得されたTransactionモデルインスタンスに対するフィルタ条件を指定します。

filter条件が指定されている場合、filter条件に合致した場合のみAET処理が開始されます。
省略した場合はpathで取得された全てのTransactionモデルインスタンスがAET処理の対象となります。
filterの記述方法は、Serviceのsearchプロセスにおけるfilterの記述方法に同じです。静的な条件式および、動的な条件式のいずれも記述することが可能です。
filter内では以下のSessionKeyを利用する事が可能です。
  • AET_TransactionSource

feedbackセクション
(feedback
    (transaction_sourceセクション(0|1)   セクション:単一:非必須
        commit属性(0|1)        キー:区分値:true|false:オプショナル
        (mappingセクション(1)  セクション:単一:必須
            現象型名    値
            ...
        )
    )
    (transactionセクション(0|1)          セクション:単一:非必須
        commit属性(0|1)         キー:区分値:true|false:オプショナル
        (mappingセクション(1)   セクション:単一:必須
            現象型名    値
            ...
        )
    )
)

AET処理後に、TransactionSourceおよび、Transactionに対するフィードバック(更新)処理を記述します。

キー 説明
transaction_source TransactionSourceに対するフィードバック(更新)内容を指定します。
記述方法はServiceのmappingプロセスのmappingセクションに準拠します。
また、AETが内部で利用するSessionKeyの一覧(後述)を利用することが可能です。
transaction Transactionに対するフィードバック(更新)内容を指定します。
記述方法はServiceのmappingプロセスのmappingセクションに準拠します。
また、AETが内部で利用するSessionKeyの一覧(後述)を利用することが可能です。
transactionセクションが指定されていない場合は無効です。

rollback_feedbackセクション
(rollback_feedback
    (transaction_sourceセクション(0|1)   セクション:単一:非必須
        commit属性(0|1)        キー:区分値:true|false:オプショナル
        (mappingセクション(1)  セクション:単一:必須
            現象型名    値
            ...
        )
    )
    (transactionセクション(0|1)          セクション:単一:非必須
        commit属性(0|1)         キー:区分値:true|false:オプショナル
        (mappingセクション(1)   セクション:単一:必須
            現象型名    値
            ...
        )
    )
)

ロールバック処理後に、TransactionSourceおよび、Transactionに対するフィードバック(更新)処理を記述します。
なお、このフィードバック処理は明示的にロールバックが行われた場合のみ動作します。
REDO系の処理の中で行われるロールバック処理時には無視されます。

キー 説明
transaction_source TransactionSourceに対するフィードバック(更新)内容を指定します。
記述方法はServiceのmappingプロセスのmappingセクションに準拠します。
また、AETが内部で利用するSessionKeyの一覧(後述)を利用することが可能です。
transaction Transactionに対するフィードバック(更新)内容を指定します。
記述方法はServiceのmappingプロセスのmappingセクションに準拠します。
また、AETが内部で利用するSessionKeyの一覧(後述)を利用することが可能です。
transactionセクションが指定されていない場合は無効です。


accountセクション
(account
    model_name宣言部(0|1)       キー:モデル名:オリジナルモード時は必須、Commonモード時は不要
    account_name宣言部(0|1)     キー:CommonAccountのアカウント種類を表す文字列:Commonモード時は必須、オリジナルモード時は不要
    initial_basis_date属性(0|1)                  key:区分値:true|false(default:false)
    initial_basis_date_ptype_name宣言部(0|1)     key:現象型名:optional
    initial_basis_datetime属性(0|1)              key:区分値:true|false(default:false)
    initial_basis_datetime_ptype_name宣言部(0|1) key:現象型名:optional
    empty_basis_date属性(0|1)                    key:区分値:true|false(default:false)
    empty_basis_date_ptype_name宣言部(0|1)       key:現象型名:optional
    empty_basis_datetime属性(0|1)                key:区分値:true|false(default:false)
    empty_basis_datetime_ptype_name宣言部(0|1)   key:現象型名:optional
    searchセクション(0|1)       セクション:単一:オリジナルモード時は原則必須(手動引当のみで使う場合は省略可)
    createセクション(0|1)       セクション:単一:Optional
    assignmentセクション(0|1)   セクション:単一:Optional
    amountセクション(0|1)       セクション:単一:Optional
    rollbackセクション(0|1)     セクション:単一:Optional
)

記述注:
    属性        あらかじめ決められた値を選択する(true/falseなど)
    宣言部      値または、値のリストを設定する
    セクション  入れ子で他の属性、宣言部、セクションを保持する可能性がある
                (値又は、値のリストが設定される場合もある)

    (1):必須
    (0|1):オプション
    (1以上):一個以上必須
    (0以上):0個以上(オプション)

AET処理におけるAccoountの検索、生成や引当、残数制約などに関する情報を管理します。

各キー毎に、オリジナルモード時とCommonモード時で必須項目が異なる事があります。
そのため、どちらのモードで実行するかを確認の上、セクション内の値を設定する必要があります。

キー 説明
model_name オリジナルモード時におけるAccountモデル名を指定します。Commonモード時は不要です。
account_name Commonモード時におけるAccountの種別名を指定します。
オリジナルモード時におけるmodel_nameの代わりとしてAccountを一意に特定する際のキーとして利用されます。
もし、transactionセクションにおいて、account_unique_proxy_ptype_nameが指定されている場合は、Transactionから取得したaccount_unique_proxy_ptype_nameで指定された現象型に対応する値と、このaccount_nameでCommonAccountのインスタンスが特定されます。

指定されていない場合は、account_nameだけで一意に特定されます。
initial_basis_date Accountに生成時の基準日を設定するか否かを指定するフラグ(true|false)。
設定しない場合はfalseが設定されたものとみなす。
そのトランザクションがロールバックされても変更されません。
initial_basis_date_ptype_name Accountの生成時の基準日を設定する現象型を指定。
設定しない場合は、「AET_AccountInitialDate」が指定されたものとみなす。
initial_basis_datetime Accountに生成時の基準日時を設定するか否かを指定するフラグ(true|false)。
設定しない場合は、falseが設定されたものとみなす。
そのトランザクションがロールバックされても変更されません。
initial_basis_datetime_ptype_name Account生成時の基準日時を設定する現象型を指定。
設定しない場合は、「AET_AccountInitialDatetime」が指定されたものとみなす。
empty_basis_date AccountのBalanceが0になった時点での基準日を設定するか否かを指定するフラグ(true|false)。
設定しない場合は、falseが設定されたものとみなす。
もしバランスが0のものが更新、ロールバックで0以外になった場合、日付または、日時はクリアされます。
empty_basis_date_ptype_name AccountのBalanceが0になった時点の基準日を設定する現象型を指定。
設定しない場合は、「AET_AccountEmptyDate」が設定されたものとみなす。
empty_basis_datetime AccountのBalanceが0になった時点での基準日時を設定するか否かを表すフラグ(true|false)。
設定しない場合は、falseが設定されたものとみなす。
もしバランスが0のものが更新、ロールバックで0以外になった場合、日付または、日時はクリアされます。
empty_basis_datetime_ptype_name AccountのBalanceが0になった時点の基準日時を設定する現象型を指定。
設定しない場合は、「AET_AccountEmptyDatetime」が設定されたものとみなす。
searchセクション
(search
    unique属性(0|1)             キー:区分値:true|false:Optional(default:false)
    no_found_ignore属性(0|1)    キー:区分値:true|false:Optional(default:false)
    filter宣言部(0|1)           セクション:単一:オリジナルモード時は必須、Commonモード時は不要
)

Operationの対象になるAccountを検索するための情報を記述します。

Commmonモード時の場合は、検索に必要な情報はこのセクションではなく、account_nameキーおよび、transactionセクションのaccount_unique_proxy_ptype_nameキーで指定されます。
よって、uniqueおよび、no_found_ignoreキーについてデフォルトの値で問題ない場合は、searchセクション自体記述する必要はありません。

オリジナルモード時の場合は、手動引当だけで利用する場合を除いて最低限filterセクションを記述しないとエラーになります。

キー
unique 検索の結果Accountが一意になるかどうかについて宣言します。
もし、uniqueにtrueを設定した場合、オリジナルモード、Commonモードに関わらず検索結果として複数のAccountインスタンスが帰った時点で例外処理として扱われます。
no_found_ignore trueが設定された場合、検索の結果Accountインスタンスが一つも見つからなかった場合は、Operation自体を実行しません。
またその際に特に例外も送信しません。つまりAccountがあったら処理するという動作になります。
もし、createセクションが設定されていた場合no_found_ignoreの設定自体が無視されAccountが見つからない場合Accountインスタンスを作成します。
filterセクション filter filter条件式
オリジナルモードにおけるAccountに対するfilter条件を指定します。Commonモードの場合設定は不要です。
filter条件には、searchプロセスのfilter条件式(静的、動的)を記述可能です。また、以下のSessoinキーを参照可能です。
  • AET_TransactionSource
  • AET_Transaction
  • AET_Role

createセクション
(create
    force属性(0|1)                 key:区分値:true|false(default:false)
    tran_no_ptype_name宣言部(0|1)  key:現象型名:optional(Commonモード時は不要)
    mappingセクション(0|1)         section:単一:オリジナルモード時は必須、Commonモード時は不要
)

検索した結果Accountが無かった場合のAccount生成に関する情報を記述します。

もし、検索結果が無しかつ、createセクションが存在しない場合、AET_FrameworkはServiceProcessExceptionを送信します。
createセクションがある場合は例外を送信する代わりに対応するAccountをその時点で生成する生成型Transactionを実行します。
なお、createセクションがある場合は、searchセクションのno_found_ignoreにtrueが設定されていてもAccountの生成および、生成したAccountに対するTransaction処理は実行されます。

キー 説明
force trueが設定された場合、Accountを検索結果にかかわらず、常にAccountを生成します。
デフォルトはfalse(強制生成しない)になっています。
個品管理などで一つのTransactionに対して必ず対応するAccountを一つ生成する必要がある場合に利用します。
tran_no_ptype_name 生成したAccountとTransactionMetaの紐付けを管理する現象型名を指定します。Commonモードの場合は指定は不要です。
指定された現象型名に対してTransactionMetaのプライマリキー(TransactionMetaNo)を設定します。
指定された現象型の型には、TransactionMetaNoが入るものが指定されている必要があります。
この紐付けを管理することによって、transactionセクションの生成時のTransactionがロールバックされた場合、transactionセクションにキー「rollbacked_account_remove_flag」に値「true」が設定されていてかつ、ロールバック時に残数がAccount生成時と同じである(ロールバック後の残数が0の)場合、Accountの削除が実行されます。
Account生成時に一致していない場合はServiceProcessExceptionが送信されます。
mapping オリジナルモード時において、Accountを生成する際のマッピング情報を記述します。
記述内容は、Serviceのmappingプロセスのmappingセクション内と同じです。Commonモードにおいては不要です。
なお、mapping内では以下のSessionKeyを参照することが可能です。
  • AET_TransactionSource
  • AET_Transaction
  • AET_Role

また、以下の現象型へのマッピングについては、自動的に行われますので特に記述は不要です。

	Creator, "@AET_Role/OperatorNo"
	CreateDate, "&Today"
	CreateDatetime, "&Now"
	LastUpdator, "@AET_Role/OperatorNo"
	LastUpdateDate, "&Today"
	LastUpdateDatetime, "&Now"

また、

createセクションのキー「tran_no_ptype_name」で指定した現象型へのAccount生成時のAET_TransactionMetaNoの設定
amountセクションのキー「amount_ptype_name」で指定した現象型への残数の初期値"0"の設定
amountセクションのキー「initial_amount_ptype_name」で指定した現象型への初期残数値の設定
についても自動で行います。


assignment
(assignment
    assignment_style属性(1)    key:区分値:order|balance:必須
    orderセクション(0|1)       section:単一:assignment_style=orderの場合必須
    balanceセクション(0|1)     section:単一:assignment_style=balanceの場合必須
)

Accountが一意に決まらない場合に各AccountへのTransaction移動量の分配に関するルールを記述します。
assignmentセクションが存在しない場合で複数のAccoutが見つかった場合、AET Frameworkは検索結果の順番にAccountの処理を行う。
基本的にソート条件を指定しない場合、原則CreateDatetime順にソートが行われます。

キー 説明
assignment_style 引当方法を指定します。
引当方法はorderとbalanceの2種類があり、orderはソート順番を指定することでAccountへの引当を制御します。
具体的にはソート順にin処理の場合は、制限があれば積み上げられる制限一杯まで移動して残りを次のAccountにという順番で処理します。
out処理の場合は、積みおろせる制限一杯まで積み卸しを行い、次のAccountに処理を写します。
各Accountに均等または、一定のルールに基づく移動量の案分はできません。

balanceが指定された場合、引当あられたAccountリストに対する指定された案分ルールに基づく引当処理を行います(※)
(※)現時点では、balanceは未実装

orderセクション
(order
    order_ptype_names宣言部(0|1)   キー(複値):現象型名:assignment_style=orderの場合は必須
)

ソートに使う現象型名と昇順、降順を指定します。

複数項目でソートを行いたい場合は、ソート条件にする現象型名をカンマつなぎで複数個指定してください。
また、項目名の前に"~"をつけると、降順によるソートになります。つけないと昇順によるソートになります。


balanceセクション
(balance
)

未実装


amountセクション
(amount
    initial_amount_ptype_name宣言部(0|1)   キー:現象型名:Optional:Commonモードの場合は不要(AET_AccountInitialAmountに固定)
    amount_ptype_name宣言部(0|1)           キー:現象型名:オリジナルモード時必須:Commonモードの場合は不要(AET_AccountBalanceに固定)
    amount_minus_enable属性(0|1)           キー:区分値:true|false(default:false)
    amend_initial_amount属性(0|1)          キー:区分値:true|false(default:false)
    amount_limitセクション(0|1)            セクション:単一:Optional
    rollbackセクション(0|1)                セクション:単一:Optional
)

Accountの残数管理に関する情報を記述します。

Commonモードの場合はamountセクション自体を記述しなくても特に問題はありません。
オリジナルモード時は、最低限amount_ptype_nameを記述する必要があります。

キー 説明
initial_amount_ptype_name 残数の初期値を管理する現象型を指定します。
Operation時にAccountが無い場合、Accountを生成するようになっている場合(生成型Transaction)に使用されます。
Commonモード時は不要です。
amount_ptype_name 残数を管理する現象型を指定します。
オリジナルモード時は必須ですが、Commonモード時は不要です。
指定しない場合はのデフォルト値は、decimalとして扱います。decimal以外の型の場合は明示的な指定が必要です。
amount_minus_enable 残数にマイナスを許すかどうかを指定します。
マイナスを許す場合は「true」、許さない場合は「false」を設定します。
省略した場合は「false」が設定されます。基本的にマイナスを許すとOut処理に対する制限が無くなりますので注意が必要です(※)。

(※)現状は、特定の残数(マイナスを含む)をOut側のリミットとして指定できる仕組みは用意していません。
amend_initial_amount ここでtrueを指定すると、InitialAmountを設定したtransactionのAmountが変更になった場合にAccountデータモデルのAccountInitialBalanceの値も自動的に更新します。
設定がない場合のデフォルトはfalseです。ただし、InitialAmountを設定したtransactionがロールバックされた場合は、特に変更はしません。

なお、この仕組みを利用するには、Accountのデータモデルが項目として「AET_AccountInitialTransactionMetaNo」を持っている必要があります。

amount_limitセクション
(amount_limit
    amount_limit_type属性(0|1)    キー:区分値:none|initial|static|ptype|path(default:none)
    value_ptype_name宣言部(0|1)   キー:現象型名:amount_limit_type=ptypeの場合のみ必須
    value_static宣言部(0|1)       キー:数値:amount_limit_type=staticの場合のみ必須
    value_path宣言部(0|1)         キー:パス式:amount_limit_type=pathの場合のみ必須
)

残数の条件に関する制約を記述します。

省略された場合は、amount_limit_type=none(上限無し)が設定された物として扱われます。
ロールバックを含むOperation結果、残数がここで指定された上限値を超えた場合は、ServiceProcessExceptionを送信します。

キー 説明
amount_limit_type 残数上限制約のかけ方を指定します。かけ方としては以下の内容(区分値)を選択可能です。
  • none:上限なし
  • ptype:キー「value_ptype_name」で指定された現象型の値を残数の上限とします。
  • static:キー「value_static」で指定された値を残数の上限とします。
  • path:キー「value_path」で指定されたパス式の評価結果の値を残数の上限とします。
value_ptype_name amount_limit_typeにptypeが指定された場合における、残数の上限制約値をAccount内から取得する現象型名を指定します。
基本的にオリジナルモード時用です。
static amount_limit_typeにstaticが指定された場合における、残数上限制約値を記述します。
path amount_limit_typeにpathが指定された場合における、Accontを起点に残数の上限制約値を取得するためのpath式を記述します。

rollbackセクション
(rollback
    rollback_enable_policy属性(0|1)            キー:区分値:any|plus|initial|condition(default:plus)
    (rollback_enable_conditionセクション(0|1)  セクション:単一:rollback_enable_policy=conditionの場合は必須
        filter宣言部(1)    キーまたはセクション:フィルタ条件式:必須
    )
)

ロールバック時における残数制約を記述します。

省略された場合は、rollback_enable_policy=plusを設定します。
ロールバック後の残数値が制約を満たさない場合は、ServiceProcessExceptionが送信されます。

キー 説明
rollback_enable_policy ロールバック時における残数制約の種類を設定します。残数制約の種類としては以下の内容から一つ選択可能です。
  • any:特に制約をかけません。ロールバック後の残数にかかわらずロールバックが可能です。
  • plus:ロールバック後の残数が0以上を維持している場合のみロールバック可能です。ロールバック後の残数がマイナス値になる場合は例外が送信されます。
  • initial:ロールバック後の残数がAccount生成時の残数に一致する場合のみロールバック可能です。
  • confition:rollbackセクションのキー「rollback_enable_condition」で指定されるフィルタ条件をAccountに適用した結果、真になる場合のみロールバックが可能です。Account全体に対して動的に評価をしたい場合に利用します。
filter Accountに対するfilter条件を指定します。
filter条件には、searchプロセスのfilter条件式(静的、動的)を記述可能です。また、以下のSessoinキーを参照可能です。
  • AET_TransactionSource
  • AET_Transaction
  • AET_TransactionMeta
  • AET_Role
  • AET_Entry


entryセクション

(entry
    model_name宣言部(0|1)                  キー:Entryのモデル名:オリジナルモード時は必須、Commonモード時は不要
    tran_no_ptype_name宣言部(0|1)          キー:現象型名:省略時はAET_TransactionMetaNo
    account_primary_ptype_name宣言部(0|1)  キー:現象型名:省略時はAccountのプライマリキー名に同じ、Commonモード時は不要
    entry_balance_ptype_name宣言部(0|1)    キー:現象型名:Entryに割り当てられた移動量を保持する現象型名:
    mappingセクション(0|1)                 セクション:entry生成時のマッピング情報を記述:オプショナル
    rollbacked_only属性(0|1)               キー:区分値:ture|false(false)
    rollbacked_mappingセクション(0|1)      セクション:ロールバック時のマッピング情報を記述:オプショナル
)

記述注:
    属性        あらかじめ決められた値を選択する(true/falseなど)
    宣言部      値または、値のリストを設定する
    セクション  入れ子で他の属性、宣言部、セクションを保持する可能性がある
                (値又は、値のリストが設定される場合もある)

    (1):必須
    (0|1):オプション
    (1以上):一個以上必須
    (0以上):0個以上(オプション)

AET処理におけるEntryの生成及び編集に関する情報を管理します。

各キー毎に、オリジナルモード時とCommonモード時で必須項目が異なる事があります。
そのため、どちらのモードで実行するかを確認の上、セクション内の値を設定する必要があります。

キー 説明
model_name Entryのモデル名。オリジナルモード時は必須、Commonモード時は不要
tran_no_ptype_name AET_TransactionMetaNoを保持する現象型名。省略時はAET_TransactionMetaNo。
account_primary_ptype_name Accountのプライマリを保持する現象型名。省略時はAccountのプライマリキー名に同じ、Commonモード時は不要。
entry_balance_ptype_name Entryに割り当てられた移動量を保持する現象型名。
mapping entry生成時のマッピング情報。
rollbacked_only ture|false(省略時のデフォルトはfalse)
ロールバック時にAET_RollbackedFlagによる制御を行います。
Commonモード時でも有効です。オリジナルモード時はrollbacked_mappingセクションがある場合、そちらが優先されます。
rollbacked_mapping ロールバック時のマッピング情報。
mappingセクション

(mapping
    PhenomenonTypeA     valueA
    PhenomenonTypeB     valueB
        ...
)

entry生成時のマッピング情報を記述します。
以下のセッションキーを値側に指定可能です。

  • AET_Transaction
  • AET_TransactionSource
  • AET_TransactionMeta
  • AET_TransactionAmount
  • AET_TransactionMetaAmount
  • AET_Account
  • AET_EntryAmount
  • AET_Role


rollbacked_mappingセクション

(rollbacked_mapping
    PhenomenonTypeA     valueA
    PhenomenonTypeB     valueB
        ...
)

ロールバック時のentryに対するマッピング情報を記述します。
以下のセッションキーを値側に指定可能です。

  • AET_Transaction
  • AET_TransactionSource
  • AET_TransactionMeta
  • AET_TransactionAmount
  • AET_TransactionMetaAmount
  • AET_Account
  • AET_EntryAmount
  • AET_Role



Commonモード記述例
[aet
    aet_name        SampleAET
    aet_id          AET_000002
    in_out_flag     out
    (transaction
        (source
            model_name      SampleMaster
        )
        (target
            model_name      SampleMeisai
            path        SampleMeisai
        )
        amount_ptype_name   Quantity
        account_unique_proxy_ptype_name SampleProxy7
    )
    (account
        account_name        SampleAmountAccount
    )
]


オリジナルモード記述例
[aet
    ;;==========================================================================
    ;;
    ;; ID : AET_000001
    ;; 発注済Accountを生成する
    ;;
    ;;==========================================================================
    aet_id          "AET_000001"
    aet_name        "発注済Accountを生成する"
    in_out_flag     "in"
    ;;-----------------------------
    ;; Transaction
    ;;-----------------------------
    (transaction
        (source
            model_name      "発注書"
            filter          "RemovedFlag = NOT_REMOVED"
        )
        (target
            model_name      "発注明細"
            path            "発注明細List"
            filter          "RemovedFlag = NOT_REMOVED"
        )
        amount_ptype_name               "AET_TransactionAmount"
        amendment                       "true"
        rollback_account_remove_flag    "true"
    )
    ;;-----------------------------
    ;; Account
    ;;-----------------------------
    (account
        model_name      "TestHeaderModel"
        (search
            [filter
                filter      "RemovedFlag = NOT_REMOVED"
            ]
        )
        (create
            force       "false"
            (mapping
                病院No          "@AET_Transaction/病院No"
                発注明細No      "@AET_Transaction/発注明細No"
                購買品No        "@AET_Transaction/購買品No"
                Creator         "@AET_Role/OperatorNo";;LastUpdatorやCreateDatetime等はエンジンで自動設定
            )
        )
        (amount
            initial_amount_ptype_name   "AET_AccountInitialAmount"
            amount_ptype_name           "AET_AccountBalance"
            amount_minus_enable         "false"
            amount_balance_type         "decimal"
        )
    )
    ;;-----------------------------
    ;; InEntry
    ;;-----------------------------
    (entry
        model_name                  "発注明細InEntry"
        account_primary_ptype_name  "アカウントNo"
        entry_balance_ptype_name    "AET_EntryAmount"
        (mapping
            EntryDate           "@AET_Transaction/発注日"
            Creator             "@AET_Role/OperatorNo";;LastUpdatorやCreateDatetime等はエンジンで自動設定
        )
    )
]


更新情報

  • 最終更新者 : $Author: morishita $
  • 最終更新日時 : $Date:: 2011-05-23 14:07:27 #$
  • バージョン : $Revision: 6446 $



Copyright © 2006, Atrris Corporation