シミュレーション間でデータを共有する
リソースを活用することで、実行中の異なるシミュレーション間でデータを共有できます。たとえば、シミュレーションの最初のステップとして常にアクセストークンが必要だとします。このトークンをリソースに保存し、シミュレーション内で参照することができます。こうすることで、トークンが必要なすべてのシミュレーションではなく、一箇所でトークンを管理できるようになります。
これはどのように機能しますか。
-
まず、データソースへのアクセス方法を定義するリソースを作成する必要があります。
-
次に、アクセス情報を使ってこのリソースを参照し、データソースからデータを取得します。
データを共有するシミュレーションは、同じワークスペースフォルダーに保存する必要があります。
データにアクセスするためのリソースを作成する
シミュレーションのデータへのアクセス方法を定義するリソースを作成します。例えば、リソース内でファイルパスやデータベースへのアクセスデータを定義します。このデータが変更された場合、リソースを更新するだけで済みます。そのリソースを参照しているすべてのシミュレーションを更新する必要はありません。
リソースを作成するには、nameプロパティのみ必須です。必要に応じて、追加のリソースプロパティを使用してデータソースの構造を定義することができます。
以下はリソース定義の例です。
-
リソースの名前はuserです。
-
参照するデータソースは、エントリがコンマで区切られたSQLテーブルです。
schema: SimV1
name: Customer
resources:
- name: user
type: Table
file: ../../resources/db.sqlite
listEntrySeparator: ","
アクセスデータを使用してリソースを参照する
データソースからのデータを使用するには、適切なプロパティを使用してリソースを参照し、アクセスする必要があります。
シミュレーションを以下のように定義します。
-
適切なステップにresourceプロパティを入力し、データソースにアクセスしていることを示します。
-
データソースからデータを読み取るか、変更するかを指定します。有効なプロパティは、delete、insert、read、およびupdateです。
-
必要に応じて、リソースルールプロパティのいずれかを指定して、使用するデータをさらに特定できます。
-
Alternatively, you can use the FROM expression to access data from a resource.
以下はデータソースからデータにアクセスする例です。
-
シミュレーションの名前はread customerで、readというサービスが含まれています。
-
サービスの最初のステップでは、userというリソースからデータを読み取ります。後でこのデータにアクセスするために、これにlistという名前を付けます。
-
2番目のステップでは、バッファ構文を使用してreadステップからの値を挿入します。
schema: SimV1
name: read customer
services:
- name: read
steps:
- resource:
read:
- ref: user
name: list
- insert:
- value: '{B[list]}'