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?

構文ルール

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

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

BPL プロセス内部のアクティビティで、メッセージのプロパティを参照しなければならない場合があります。プロパティを参照するためのルールは、操作するメッセージの種類によって異なります。

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

    message.propertyname
    

    または

    message.propertyname.subpropertyname
    

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

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

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

リテラル値

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

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

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

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

    Note:

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

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

Important:

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

XML 予約文字

BPL プロセスは 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 開発ガイド" の参照節内の “セパレータ

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

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

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

数字のコード

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

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

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

有効な式

値をプロパティに代入するときに、BPL プロセス用に選択した言語で式を指定できます。式は、<if> アクティビティの条件、<trace> アクティビティ内の値、<code> アクティビティ内の文などの他の場所でも使用します。

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

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

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

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

  • BPL プロセス用に選択したスクリプティング言語の構文を使用してこれらを組み合わせた式。以下に留意してください。

間接指定

Ensemble では、以下に示す BPL 要素と属性の組み合わせについてのみ、値を間接的に指定できます。

アット・マーク記号 @ は間接演算子です。

例えば、<call> 要素では、name 属性または target 属性の値を間接指定できます。name は呼び出しを識別し、その後、<sync> 要素で参照できます。target は、要求の送信先であるビジネス・オペレーションまたはビジネス・プロセスの構成名です。どちらの文字列もリテラル値にすることができます。

<call name="Call" target="MyApp.MyOperation" async="1"> 

また、次のように @ 間接演算子を使用して、適切な文字列を含むコンテキスト変数の値にアクセスすることもできます。

<call name="@context.nextCallName" target="@context.nextBusinessHost" async="1"> 

このドキュメントでは、@ 間接構文をサポートしている各要素 (<call><sync><transform>) で、この構文について説明しています。

Important:

BPL と DTL は多くの点で似ていますが、DTL は間接指定をサポートしていません

FeedbackOpens in a new tab