|
|
# Overview
|
|
|
|
|
|
In this scenario, the Orchestrator (role asigned to a swarm participant managing the Energy Community), requests Prosumers to provide information on how much energy they estimate to produce/consume in an upcoming time window, for the purpose of computing energy requirements across the Community and updating its records accordingly.
|
|
|
In this scenario, the Orchestrator (role asigned to a swarm participant managing the Energy Community) requests Prosumers to provide information on how much energy they estimate to produce/consume within an upcoming time window, for the purpose of monitoring energy requirements across the Community.
|
|
|
|
|
|
```ruby
|
|
|
# roles
|
... | ... | @@ -33,18 +33,18 @@ gpf1 -->+ acc |
|
|
gpf0 -->+ acc
|
|
|
acc -->% acc
|
|
|
```
|
|
|
In this case, there are two roles, Prosumer (P) and Orchestrator (O), both parameterize with an id, _e.g:_ `P(1), O(0)`.
|
|
|
In this case, there are two roles, Prosumer (P) and Orchestrator (O), both parameterised with an id, _e.g._, `P(1), O(0)`.
|
|
|
|
|
|
> **NOTE**: The roles are defined in the first lines of the process and are used to identify the prosumers in the process. The role `Z` is a dummy role used to define the security lattice and information flow of all the events in the process.
|
|
|
> **NOTE**: The roles are defined in the first lines of the process and are used to identify the prosumers in the process. The role `Z` is a dummy role used to define the security lattice and information flow control (IFC) of all the events in the process. For the sake of simplicity, we ignore IFC in this example.
|
|
|
|
|
|
---
|
|
|
The process comprises the following event representing the orchestrator information (computation event).
|
|
|
The process comprises the following event representing the orchestrator's information (computation event).
|
|
|
|
|
|
```ruby
|
|
|
(oInfo:Info) (Z;Z) ['Manager'] [O(0)]
|
|
|
```
|
|
|
To emulate the intended behavior, the Orchestrator (`O(0)`) sends a request (`rpf`) to all prosumers (`P(0)`,` P(1)`) asking for their production forecasts. Each prosumer responds with their forecast (`gpf_0`, `gpf_1`), and the Orchestrator updates the energy accounting records (`acc`).
|
|
|
> **NOTE**: The event `acc` is local, meaning that is only available for `O(0)`, who updates the community's energy records.
|
|
|
To emulate the intended behavior, the Orchestrator (`O(0)`) sends a request (`rpf`) to all prosumers (`P(0)`,` P(1)`) asking for their production forecasts. Each prosumer responds with their forecast (`gpf_0`, `gpf_1`), and the Orchestrator updates the Community's accounting records (`acc`).
|
|
|
> **NOTE**: The event `acc` is local, meaning that is only available for `O(0)` which is effectively responsible for updating the Community's energy records.
|
|
|
|
|
|
```ruby
|
|
|
(rpf:requestProductionForecast) (Z;Z) [? ] [O(0) -> P(0), P(1)]
|
... | ... | |