リソースのルールプロパティ
リソースを活用して、実行中の異なるシミュレーション間で実行時にデータを共有することが可能です。シミュレーションファイルでリソースのルールプロパティを使用して、参照したい値を指定してくださ。例えば、リソースから特定の値を読み込み、好きな場所に挿入することができます。
ルールの指定は、必ずサービスステップの「resource」プロパティ内で行ってください。
使用可能なルールプロパティは以下のとおりです。
|
ルールプロパティ |
説明 |
例 |
|---|---|---|
|
このプロパティは必須です。リソースに意味のある固有の名前を付けてください。 |
read |
|
|
one |
デフォルトでは、リソースの内容全体が処理対象です。このプロパティを用いて、使用する予定の値を限定できます。「where」プロパティとは異なり、返される値は一つ(最初に見つかった値)のみです。リソースの種類に応じて、以下の構文を定義してください。
|
|
|
ref |
参照したいデータリソースの名前を指定します。これは、データリソースにアクセスするためのシミュレーションで定義した名前です。 |
user |
|
template |
要求されたリソースのパターンを定義する場合は、このプロパティを指定します。受信したデータは、その後、このパターンに従って構造化されます。JSONやXMLといった任意のパターン形式を使用できます。このプロパティは、リソースのステッププロパティ「read」内で使用してください。 |
|
|
value |
任意の値を入力します。 |
GET |
|
デフォルトでは、リソースの内容全体が処理対象です。このプロパティは、使用される値を制限することが可能です。リソースのタイプに応じて、下記の構文を定義してください。
|
これは、プロパティ「one」を使用して読み取られるリソースのデータを使用する例です。
-
シミュレーションはSQLiteテーブルのデータを参照します。リソース「user」はテーブルの位置を定義します。
-
シミュレーションには「get」というサービスが含まれています。
-
サービスの最初のステップは、GETメソッドを使用して受信メッセージを待つことです。受信メッセージがこの条件を満たす場合、このパスのIDは、XBufferの構文を使用してバッファリングされます。
-
2番目のステップでは、「user」のリソースからデータを読み取ります。具体的には、ここではプロパティ「one」をSQL句と一緒に使用して、最初に見つかったIDを読み取ります。
-
この同じステップで、見つかった値が「result」列のリソースに挿入されます。
schema: SimV1
connections:
- name: http
port: 8080
resources:
- name: user
file: user.sqlite
services:
- name: get
steps:
- trigger:
- property: Method
value: GET
buffer:
- type: Path
value: "user/{xb[id]}"
- resource:
read:
- ref: user
name: result
one: "id == '{b[id]}'"
insert:
- value: "{b[result.name]}"
これは、プロパティ「where」を使用してリソースのデータを更新する方法の例です。
-
シミュレーションは、任意の値を含むリソース「user」のデータを参照しています。
-
シミュレーションには、「update」というサービスが含まれています。
-
サービスの最初のステップは、PUTメソッドを使用して受信メッセージを待つことです。受信メッセージがこの条件を満たす場合、このパスのIDは、XBufferの構文を使用してバッファリングされます。
-
2番目のステップでは、「user」リソース内のデータを更新します。具体的には、ここでは「where」プロパティとXPathを使用して、要素「request」に合わせてバッファされた値に一致する値を検索します。
-
この同じステップ内で、値「user updated successfully」がペイロードに書き込まれます。
schema: SimV1
connections:
- name: http
port: 8080
resources:
- name: user
type: Value
services:
- name: update
steps:
- trigger:
- property: Method
value: PUT
buffer:
- type: Path
value: "user/{xb[id]}"
- resource:
update:
- ref: user
where: '"[?(@.id == "{b[id]}")]"'
value: "{b[request]}"
message:
payload: user updated successfully
これは、要求されたリソースの内容を構造化する方法の例です。
-
シミュレーションは、任意の値を含むリソース「user」のデータを参照しています。
-
シミュレーションには、「update」というサービスが含まれています。
-
サービスの最初のステップは、GETメソッドを使用して受信メッセージを待つことです。受信メッセージがこの条件を満たす場合、サービスは「users」のリソースのユーザー全員を「results」という名前のバッファに読み込みます。「resource」プロパティは、XML形式のデータの構造を定義します。
-
2番目のステップでは、「results」のバッファのデータを応答のペイロードに書き込みます。
schema: SimV1
connections:
- name: http
port: 8080
resources:
- name: user
type: Value
services:
- name: update
steps:
- name: request users
trigger:
- property: Method
value: GET
resource:
read:
- ref: user
name: results
template:
<user>
<id>%{results.id}</id>
<name>%{results.name}</name>
</user>
- name: return list of users
- insert:
- value: <users>{b[results]}</users>