Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

プロダクション・ジェネレータ

プロダクション・ジェネレータを使用すると、CSV ファイルの HL7 インタフェース・ルートをすべて入力して、各ノードに必要なすべてのコンポーネント (サービス、ルータ、ルール、変換、およびオペレーション) が含まれるスケルトンの相互運用プロダクションを生成できます。プロダクションが生成された後に、まだニーズに合うようにプロダクションを微調整する必要はありますが、プロダクション・ジェネレータを使用すると初期の実装が迅速化されます。また、プロダクション・ジェネレータを使用して既存のプロダクションを更新することもできます。

プロダクション・ジェネレータは、CSV ファイルを使用してプロダクション・コンポーネントを作成する InterSystems ターミナルのユーティリティです。コンマまたはセミコロンで区切られたファイルを使用できますが、両方のファイルで同じ区切り文字を使用する必要があります。必要な CSV ファイルは以下のとおりです。

  • 構成ファイル - 生成されるコンポーネントの名前付け規約を定義します。

  • 項目ファイル - プロダクション・ジェネレータにプロダクションのコンポーネントに関する情報を提供します。

プロダクション・ジェネレータによってプロダクションに自動的に追加されるビジネス・ホスト Ens.Activity.Operation.Local は、アクティビティ・モニタリングのために使用され、この機能が必要ない場合は削除できます。

プロダクション・ジェネレータの実行

プロダクション・ジェネレータを実行するには、以下の手順に従います。

  1. InterSystems ターミナルを開きます。

  2. set $namespace="namespace" と入力して、プロダクションを作成するネームスペースに移動します。

  3. 以下のように入力します。

    set status = ##class(EnsLib.InteropTools.HL7.ProductionGenerator).Load("configuration.csv","items.csv",.out)
    

    引数は以下のとおりです。

    • configuration.csv は、構成ファイルのパスとファイル名です。

    • items.csv は、項目ファイルのパスとファイル名です。

    • out は、プロダクション・ジェネレータによってレポートされるデータの問題を収集します。

  4. エラーをチェックするには、以下のように入力します。

    write status
    

    結果は 1 になります。

簡単なプロダクションの生成に使用できるサンプル CSV ファイルは、"CSV ファイルの例" を参照してください。

構成ファイル

構成ファイルは、生成されるプロダクションに属するコンポーネント (ビジネス・サービスや変換など) の名前付け規約を定義します。コンポーネント名は、リテラル値とプレースホルダの組み合わせから構築されます。プレースホルダの構文は { } です。プレースホルダには、プロダクション・ジェネレータによって以下の 3 つの場所からの値が入力されます。

  • 構成ファイル内の他のレコード。

  • 項目 CSV ファイルからの値。項目 CSV ファイルからの値をプレースホルダに入力するには、値が含まれる列名を指定します。例えば、項目ファイルに BusinessServiceName という名前の列があり、その列の最初のレコードに SourceA が指定されているとします。構成ファイルの ServiceName キーの値が {BusinessServiceName} である場合、SourceA という名前のサービスがプロダクション・ジェネレータによって作成されます。項目ファイルの BusinessServiceName 列に、値 SourceB が入った 2 つ目のレコードがある場合、SourceB という名前の別のサービスが作成されます。

  • プロダクション・ジェネレータ・ユーティリティを実行するネームスペース。プロダクション・ジェネレータを MyArea ネームスペースで実行する場合、{Namespace} プレースホルダを使用するすべてのコンポーネントの名前に MyArea が含まれます。

以下に、必要なレコードがすべて含まれる構成ファイルの例を示します。KeyValue、および Description が含まれる最初のレコードは必須です。この例では、{BusinessServiceName} は項目ファイルの列から取得され、{Namespace} は、プロダクション・ジェネレータ・ユーティリティを実行したネームスペースから取得されます。

キー 説明
ProductionClassName MyBasePackage.MyProduction 生成されるプロダクションの名前。ここでは MyBasePackage.MyProduction になります。
ServiceName {BusinessServiceName} サービスの名前付け規約を定義します。
RouterName {BusinessServiceName}Router ルータ・プロセスの名前付け規約を定義します。
OperationName {BusinessOperationName} オペレーションの名前付け規約を定義します。
RuleName {BasePackage}.{Namespace}.Rules.{BusinessServiceName}Rule ルールの名前付け規約を定義します。
TransformationName {BasePackage}.{Namespace}.Transforms.{BusinessServiceName}Transform 変換の名前付け規約を定義します。

これらの必須のレコードのほかに、以下のオプションのレコードを構成ファイルに追加することができます。

キー 説明
ConstrainRule 既定値は 1 です。つまり、ルールの定義で、constraint フィールドによって "source" がビジネス・サービスの名前に設定されることを意味します。他の制約は設定されません。0 に設定すると、ルールの constraint フィールドは空のままです。
Override_componentID:setting

componentID:setting に、項目ファイルの指定した列からの値を入力します。例えば、KeyOverride_S:H:MessageSchemaCategoryValue{SourceDocVersion} の場合、[メッセージ・スキーマ・カテゴリ] 設定は、項目ファイルの SourceDocVersion 列の値に設定されます。これにより、この設定の値を常に既存の列と共有する場合は、構成ファイルに列を追加しなくても済みます。

または、Value 列に固定値を指定できます。これは、項目ファイルに componentID:setting という名前の列を追加して、その列のすべてのレコードに同じ固定値を入力することと同じです。

構文 componentID:setting の詳細は、"コンポーネント設定の指定" を参照してください。

構成ファイルの他の値に名前を付ける目的のためだけに、構成ファイルに行を定義することもできます。これらの場合、キーには任意のユーザ定義文字列を指定できます。例えば、構成ファイルに以下が含まれているとします。

キー 説明
EnvironmentType Test ProductionClassName の値を入力するために使用されるオプションのレコード。
ProductionClassName MyProduction.{EnvironmentType} 生成されるプロダクションの名前。ここでは MyProduction.Test になります。

項目ファイル

項目 CSV ファイルの各レコードは、生成されるプロダクションのインタフェース・ルートに対応しており、どのコンポーネントをその属性で作成するかを決定します。複数のルートで同じコンポーネントを使用する場合は、1 つのコンポーネントが作成されます。例えば、同じビジネス・サービスが複数のルートに属する場合、プロダクションでは 1 つのビジネス・サービスのみが作成されます。

項目 CSV ファイル内の列の順序は、プロダクション・ジェネレータの動作には影響しません。各列は、以下のいずれかを実行します。

コンポーネント設定の指定

項目ファイルを使用して、コンポーネントの設定の初期値を指定できます。ほとんどの設定は、列名に componentID:settingName という特殊な構文を使用して指定します。例えば、オペレーションの [有効] 設定は、列名 O:Enabled で指定します。componentID は、以下のいずれかにできます。

ComponentID コンポーネント
S: ビジネス・サービス
S:A: サービス・アダプタ
S:H: サービス・ホスト
O: ビジネス・オペレーション
O:A: オペレーション・アダプタ
O:H: オペレーション・ホスト
P: ルータ・ビジネス・プロセス
R: ルール
T: 変換

settingName は、定義するコンポーネント設定の名前です。正しい名前は、以下の 2 つの方法で取得できます。

  • この設定が定義されたプロダクションが既にある場合は、そのプロダクション・クラスをスタジオまたは Atelier で開いて、設定名を検索します。“ホスト” または “アダプタ” のどちらを指定する必要があるのか、あるいはどちらも指定する必要がないのかを確認できます。

  • また、管理ポータルでダミー・プロダクションを作成してコンポーネントを追加することもできます。その後、右側のパネルの設定に移動し、システムの既定の設定のアイコンをクリックして、名前とホスト/アダプタを表示します。英語版以外のシステムを使用している場合は、マウスでローカル名をポイントすると、英語の設定名を表示できます。リストされるのはホストとアダプタの値だけです。

複数の値を指定できる設定の場合は、レコード内の値をコンマで区切ります。その際、スペースは使用しません。例えば、新しいサービスの [カテゴリ] 設定を Test1 および Test2 に設定するには、項目ファイルの S:Category 列に Test1,Test2 と指定します。区切り文字としてコンマを使用して、テキスト・エディタで CSV ファイルを手動で編集する場合は、"Test1,Test2" と指定します。

設定は以下のいずれかで定義されます。

  • コンポーネントのクラス定義

  • コンポーネントのアダプタ・クラス定義

  • これらのクラス定義のスーパークラス

  • クラス Ens.Config.ItemOpens in a new tab (例えば、[有効] 設定または [プール・サイズ] 設定)

HL7 メッセージ設定

ソースおよびターゲットの HL7 メッセージの特性を定義する設定では、componentID:settingName の構文は使用されません。代わりに、SourceTypeSourceSchemaTargetType、および TargetSchema の各列を使用して、ソースおよびターゲットの HL7 メッセージのタイプ (例えば、ADT_A01) とスキーマ (例えば、2.7.1) を指定することができます。

コンポーネントのタイプの指定

項目ファイルには、プロダクション・ジェネレータによって作成されるビジネス・サービスとビジネス・オペレーションのタイプを指定する、列 ServiceType および OperationType が含まれる必要があります。ServiceType および OperationType で指定できる値は、TCP、File、FTP、HTTP、および SOAP です。サービスまたはオペレーションの基盤となるクラスは、ServiceType または OperationType で指定された値に基づきます。ServiceType 列または OperationType 列で MyProduct.MyFileService のような完全修飾クラス名を指定することにより、サービスまたはオペレーションに対してカスタム・クラスを指定できます。

オプションで、列 RouterType を項目ファイルに含め、これによってインタフェース・ルートに関連付けられたカスタム・ルータのクラス名を指定できます。この列がない場合は、クラス EnsLib.HL7.MsgRouter.RoutingEngine が使用されます。

特別な命令

事前定義済みの特定の列名は、プロダクション・ジェネレータに特殊な命令を提供します。この列のレコードのブーリアン値 (0 または 1) は、プロダクション・ジェネレータがその命令を実行する必要があるかどうかを示します。以下の列を使用して特殊な命令を指定できます。

列名 説明
RuleDisabled ルールを有効にする場合は値を 0 に設定し、ルールを無効にする場合は 1 に設定します。この命令がない場合、ルールは無効になります。
NoTransformation プロダクション・ジェネレータが変換を生成しないようにする場合は、値を 1 に設定します。プロダクションを更新する場合、この列を追加しても既存の変換は削除されません。
T:Create 既定では、変換の送信メッセージは受信メッセージのコピーです。T:Create 列を追加してその値を new に設定すると、変換の送信メッセージは空のオブジェクトになります。

CSV ファイルの例

以下に、連携して基本的なプロダクションを作成する構成 CSV ファイルと項目 CSV ファイルの例を示します。以下をコピーして CSV テキスト・ファイルに貼り付け、プロダクション・ジェネレータに入力することができます。また、ファイルをスプレッドシート・アプリケーションで開いて列を表示することもできます。プロダクション・ジェネレータでは、セミコロンも区切り文字として使用できます。

構成ファイル
Key,Value,Description
BasePackage,MyPackage,Base package name of all classes
ProductionClassName,{BasePackage}.MyProduction,Definition of the production name
ServiceName,{ServiceName},Definition of service name
RouterName,{ServiceName}_Router,Definition of process name
OperationName,{OperationName},Definition of operation name
RuleName,{BasePackage}.{Namespace}.Rules.{ServiceName}Rule,Definition of rule name
TransformationName,{BasePackage}.{Namespace}.Transforms.{ServiceName}Transform,Definition of transformation name

項目ファイル
ServiceName,OperationName,ServiceType,OperationType,O:Enabled,S:A:FileSpec,S:H:MessageSchemaCategory,O:H:FailureTimeout,P:Category,NoTransformation
Service1,Op1,File,File,0,*,2.7.1,60,Cat1,0
Service2,Op2,TCP,FTP,1,,2.7.1,,,1

既存のプロダクションの更新

CSV ファイルを変更した後でプロダクション・ジェネレータを再実行すると、管理ポータルを使用せずに、生成されたコンポーネントを修正できます。設定の値をクリアするには、設定の列のレコードで "" を使用します。以前に値に区切り文字が含まれていた列 (例えば、Categories 列の FTP,Hospital) があると、値をクリアしようとしたときに問題が発生します。この場合は、"""""" を使用して値をクリアする必要があります。NULL データが含まれるレコードでは、生成されるコンポーネントは変更されません。

重要なロジックが失われるのを防ぐため、特定の項目は、プロダクションを更新する際にプロダクション・ジェネレータによって削除されません。

  • 項目ファイルから行を削除する場合、その行で定義されているサービスとオペレーションはプロダクションから削除されません。

  • 変換が存在していて、ルールに割り当てられている場合、NoTransformation 列を項目ファイルに追加すると、変換は削除されません。

  • いったん作成されたルーティング・ルールは削除されません。

FeedbackOpens in a new tab