Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

構文ルール

この章では、さまざまな DTL アクション内でプロパティを参照したり、式を作成したりするための構文ルールについて説明します。この章は以下の節で構成されています。

メッセージ・プロパティへの参照

変換内のほとんどのアクションにおいて、ソースまたはターゲット・メッセージのプロパティを参照する必要があります。プロパティを参照するためのルールは、操作するメッセージの種類によって異なります。

  • 仮想ドキュメント以外のメッセージの場合は、次のような構文を使用します。

    source.propertyname
    

    または

    source.propertyname.subpropertyname
    

    ここで、propertyname はソース・メッセージ内のプロパティで、subpropertyname はそのプロパティのプロパティです。

    メッセージにコレクション・プロパティが含まれている場合は、"Ensemble XML 仮想ドキュメント開発ガイド" の “仮想プロパティ・パスの基本設定” で “繰り返しフィールドの特殊なバリエーション” を参照してください。ここで紹介する情報の一部は、仮想ドキュメントと標準メッセージの両方に適用されます。

  • XML 仮想ドキュメント以外の仮想ドキュメントの場合は、"Ensemble 仮想ドキュメント" の “仮想プロパティ・パスに関する構文ガイド” に記載された構文を使用します。次の項も参照してください。

  • XML 仮想ドキュメントについては、"Ensemble XML 仮想ドキュメント開発ガイド" を参照してください。

リテラル値

値をターゲット・プロパティに代入するときに、リテラル値を指定することがよくあります。リテラル値は、trace アクション内の値のような他の場所にも適している場合があります。

リテラル値は次のどちらかです。

  • 数値リテラルはただの数字です。例えば、42.3 などです。

  • 文字列リテラルは二重引用符で囲まれた文字列です。例えば、"ABD" などです。

    Note:

    この文字列には XML 予約文字を含めることができません。詳細は、“XML 予約文字” を参照してください。

    仮想ドキュメントの場合は、この文字列に仮想ドキュメント形式で使用されるセパレータ文字を含めることができません。“仮想ドキュメント内のセパレータ文字” と “XML 予約文字がセパレータでもある場合” を参照してください。

Important:

HL7 のシングルバイトのエンコード形式の制限により、HL7 メッセージに配置されるリテラル文字列の文字コード内の数値は、10 進数で 255、16 進数で x00FF よりも大きくすることができません。

XML 予約文字

DTL 変換は XML ドキュメントとして保存されるため、XML 予約文字の代わりに XML エンティティを使用する必要があります。

この文字を含めるには... 次の XML エンティティを使用します...
> >
< &lt;
& &amp;
' &apos;
" &quot;

例えば、値の Joe’s "Good Time" Bar & Grill をターゲット・プロパティに代入するには、[値] を次のように設定します。

"Joe&apos;s &quot;Good Time&quot; Bar &amp; Grill"

Ensemble では、エディタに入力されたテキストの周りに自動的に CData ブロックが配置されるため、この制限は code アクションと sql アクションの内部に適用されません (XML 標準では、CData ブロックの間に XML と解釈すべきではないテキストが入ります。そのため、そのブロックに予約文字を含めることができます)。

仮想ドキュメント内のセパレータ文字

ほとんどの仮想ドキュメント形式で、セグメント間、フィールド間、サブフィールド間などで特定の文字がセパレータとして使用されます。メッセージ内に値を設定するときにこれらの文字をリテラル・テキストとして含める必要がある場合は、代わりに、そのドキュメント形式に適切なエスケープ・シーケンス (存在する場合) を使用する必要があります。

これらの文字は該当するドキュメント内で文書化されます。詳細は、以下を参照してください。

  • "Ensemble HL7 バージョン 2 開発ガイド" の参照節内の “セパレータ

  • "Ensemble ASTM 開発ガイド" の参照節内の “セパレータ

  • "Ensemble EDIFACT 開発ガイド" の参照節内の “セパレータ

  • "Ensemble X12 開発ガイド" の参照節内の “セパレータ

Important:

データ変換では、セパレータ文字とエスケープ・シーケンスをソース・メッセージとターゲット・メッセージで分けることができます。Ensemble が、自動的に、変換の実行後に必要に応じて値を調整します。これは、ソース・メッセージに適用されるセパレータ文字とエスケープ・シーケンスだけを考慮すればいいことを意味します。

XML 予約文字がセパレータでもある場合

  • 文字 (& など) がセパレータでそれをリテラル文字として含めたい場合は、仮想ドキュメント形式に適用されるエスケープ・シーケンスを使用します。

  • それ以外の場合は、“XML 予約文字” で示したような XML エンティティを使用します。

数字のコード

リテラル文字列には、10 進表現または 16 進表現を含めることができます。

文字列 &#n; は Unicode 文字を表します (n は Unicode 文字の 10 進数)。例えば、&#233; は、揚音アクセント符号付きのラテン文字 e (é) を表します。

また、文字列 &#xh; も Unicode 文字を表します (h は 16 進の Unicode 文字番号)。例えば、&#x00BF は逆さの疑問符 (¿) を表します。

有効な式

値をターゲット・プロパティに代入するときに、データ変換用に選択した言語で式を指定できます。式は、if アクションの条件、trace アクション内の値、code アクション内の文などの他の場所でも使用します。

有効なすべての式を以下に示します。

  • 前の節で説明したリテラル値。

  • 関数コール (Ensemble はビジネス・ルールやデータ変換で使用するための一連のユーティリティ関数を提供しています。詳細は、"ビジネス・ルールの開発" の “Ensemble ユーティリティ関数” を参照してください)。Ensemble にはこれらのためのウィザードが用意されています。

  • プロパティへの参照” で説明したプロパティへの参照。

  • ルールでパスされた aux 変数への参照。データ変換がルールから呼び出される場合、aux 変数で以下の情報を提供します。

    • aux.BusinessRuleName—ルールの名前。

    • aux.RuleReason—ルールが起動された理由。これは、ロギングで使用される名前と同じです。例えば、'rule#1:when#1' などの値です。RuleReason が 2,000 文字を超える場合は、2000 文字に省略されます。

    • aux.RuleUserData—ルールで 'RuleUserData' プロパティに割り当てられた値。

    データ変換がルールからではなくコードから直接呼び出される場合、コードは 3 番目のパラメータで予備のデータを渡すことができます。3 番目のパラメータが設定されていないコードからデータ変換が呼び出される可能性がある場合、DTL コードは $ISOBJECT 関数を使用して aux 変数が if アクションのオブジェクトであることを確認する必要があります。

  • データ変換用に選択したスクリプティング言語の構文を使用してこれらを組み合わせた式。前述した “変換詳細の指定” を参照してください。以下に留意してください。

FeedbackOpens in a new tab