Field sets
Events that start a transaction - notify and solicit events - create an initial field set. Other data events can add fields to it. SPARKL uses a field set to satisfy outstanding goals with it.
A field set is:
- A bunch of fields created by a transaction start event - a notify or a solicit
- Carried by data events through the Sequencing Graph
- Possibly supplied with other fields by reply events
- Used to satisfy goal - consume or response - events
- Discarded when SPARKL cannot do anything else with the field set it has
Events therefore can:
- Create field sets
- Add fields to existing field sets
- Wait for field sets
Event type | Creates new field set | Adds fields to existing field set | Waits for field set | Description |
---|---|---|---|---|
Notify | Yes | No | No | A notify creates a new field set and starts a transaction. |
Consume | No | No | Yes | A consume is invoked when a field set includes all the fields the consume expects to receive. |
Solicit | Yes | No | No | A solicit creates a new field set and starts a new transaction. It waits for a corresponding response event. |
Response | No | No | Yes | A response is sent when a field set includes all the fields the response expects to receive. |
Request | No | No | Yes | A request is invoked when a field set includes all the fields the request expects to receive. |
Reply | Maybe | Yes | No | A reply adds fields to a field set (received by the reply's corresponding
request). If a reply corresponds to a consume/reply operation, the reply event generates a new field set that can satisfy other goal events. A consume/reply thus creates a parallel thread of execution. |
Take a look at Figure 1 to see how fields are added to the field set until SPARKL can use it to satisfy the response to the initial solicit.
- The transaction starts with the
ORDER
field, sent by the starting solicit - The replies to the
AddTonic
andAddGin
requests supply the fieldstonic
andgin
- The response to the solicit expects the
gin
andtonic
fields. Since the field set now contains both, the response is sent concluding the transactionNote: Though not needed by the response, theORDER
field is also present in the field set. - Since the field set cannot be used to satisfy other goals, it is discarded