Skip to content

Commit 97e9e63

Browse files
committed
Minor README Update
1 parent f977eab commit 97e9e63

15 files changed

Lines changed: 507 additions & 211 deletions

README.md

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ For Maven projects you can import the WLDT Library into your ``<dependencies></d
1010
<dependency>
1111
<groupId>io.github.wldt</groupId>
1212
<artifactId>wldt-core</artifactId>
13-
<version>0.2.1</version>
13+
<version>0.3.0</version>
1414
</dependency>
1515
```
1616

1717
If you are using Gradle use instead the following:
1818

1919
```groovy
20-
implementation group: 'io.github.wldt', name: 'wldt-core', version: '0.2.1'
20+
implementation group: 'io.github.wldt', name: 'wldt-core', version: '0.3.0'
2121
```
2222

2323
## Motivation & Digital Twin "Definition" and Main Concepts
@@ -253,31 +253,37 @@ architecture is developed: the one related to the ``core`` of the library, the o
253253
and finally, that of the ``adapters``.
254254

255255
<p align="center">
256-
<img class="center" src="images/wldt_structure.jpeg" width="80%">
256+
<img class="center" src="images/wldt_structure.jpg" width="80%">
257257
</p>
258258

259259
Each of this core components has the following main characteristics:
260260

261-
- **WLDT Engine**: Defines the multi-thread engine of the library allowing the execution and monitoring of
262-
multiple workers simultaneously. Therefore, the it is also responsible for orchestrating
263-
the different internal modules of the architecture while keeping track of each one, and it can be
264-
considered the core of the DT itself
265-
- **WLDT Event Bus**: Represents the internal Event Bus, designed to support communication between
266-
the different components of the DT's instance. It allows defining customized events to model
267-
both physical and digital input and outputs. Each WLDT's component can publish on the shared Event Bus and define
268-
an Event Filter to specify which types of events it is interested in managing,
261+
- **Metrics Manager**: Provides the functionalities for managing and tracking various metrics
262+
within DT instances combining both internal and custom metrics through a flexible and extensible approach.
263+
- **Logger**: Is designed to facilitate efficient and customizable logging within implemented and deployed DTs with
264+
configurable log levels and versatile output options.
265+
- **Utils & Commons**: Hold a collection of utility classes and common functionalities that can be readily employed
266+
across DT implementations ranging from handling common data structures to providing helpful tools for string manipulation.
267+
- **Event Communication Bus**: Represents the internal Event Bus, designed to support communication between
268+
the different components of the DT's instance. It allows defining customized events to model
269+
both physical and digital input and outputs. Each WLDT's component can publish on the shared Event Bus and define
270+
an Event Filter to specify which types of events it is interested in managing,
269271
associating a specific callback to each one to process the different messages.
270-
- **WLDT Workers**: Models the basic internal component and actually constitutes
271-
the single executable element by the WLDT Engine.
272-
Except for the Digital Twin State, each of the modules described later defines a specific implementation of a WLDT Worker.
273-
- **Digital Twin State**: It structures the state of the DT by defining the list of properties, events, and actions.
272+
- **Digital Twin Engine**: Defines the multi-thread engine of the library allowing the execution and monitoring of
273+
multiple DTs (and their core components) simultaneously. Therefore, it is also responsible for orchestrating
274+
the different internal modules of the architecture while keeping track of each one, and it can be
275+
considered the core of the platform itself allowing the execution and control of the deployed DTs. Currently, it supports
276+
the execution of twins on the same Java process, however the same engine abstraction might be used to extend the framework to
277+
support distributed execution for example through different processes or microservices.
278+
- **Digital Twin**: Models a modular DT structure built through the combination of core functionalities together with physical
279+
and digital adapter capabilities. This Layer includes the `Digital Twin State` responsible to structure the state of the DT by defining the list of properties, events, and actions.
274280
The different instances included in the lists can correspond directly to elements of the physical asset
275-
or can derive from their combination, in any case, it is the Shadowing Model Function (SMF) that defines
281+
or can derive from their combination, in any case, it is the `Shadowing Function (SF)` that defines
276282
the mapping, following the model defined by the designer.
277-
This component also exposes a set of methods to allow SMF manipulation.
283+
This component also exposes a set of methods to allow SF manipulation.
278284
Every time the Digital Twin State is modified, the latter generates the corresponding DT's event to notify all the components
279285
about the variation.
280-
- **Shadowing Model Function**: It is the library component responsible for defining the behavior of
286+
- **Shadowing Function**: It is the library component responsible for defining the behavior of
281287
the Digital Twin by interacting with the Digital Twin State.
282288
Specifically, it implements the shadowing process that allows keeping the
283289
DT synchronized with its physical entity.
@@ -293,19 +299,19 @@ have completed the binding procedure with the physical asset. This component als
293299
related to specific protocols, must implement.
294300
As provided by the DT definition, a DT can be equipped with multiple Physical Adapters
295301
in order to manage communication with the corresponding physical entity.
296-
Each will produce a Physical Asset Description (PAD),
302+
Each will produce a `Physical Asset Description (PAD)`,
297303
i.e., a description of the properties, events, actions, and relationships
298304
that the physical asset exposes through the specific protocol.
299305
The DT transitions from the Unbound to the Bound state when all its Physical Adapters
300306
have produced their respective PADs.
301-
The Shadowing Model Function, following the DT model,
307+
The Shadowing Function, following the DT model,
302308
selects the components of the various PADs that it is interested in managing.
303309
- **Digital Adapter**: It provides the set of callbacks that each specific implementation can use
304310
to be notified of changes in the DT state.
305311
Symmetrically to what happens with Physical Adapters, a Digital Twin can define
306312
multiple Digital Adapters to expose its state and functionality through different protocols.
307313

308-
Therefore, to create a Digital Twin using WLDT, it is necessary to define a Shadowing Model Function and
314+
Therefore, to create a Digital Twin using WLDT, it is necessary to define and instantiate a DT with its Shadowing Function and
309315
at least one Physical Adapter and one Digital Adapter, in order to enable connection with the physical
310316
entity and allow the DT to be used by external applications. Once the 3 components are defined,
311317
it is possible to instantiate the WLDT Engine and, subsequently, start the lifecycle of the DT.
@@ -319,7 +325,8 @@ The steps that we have to follow in order to create our first (and super simple)
319325
- Physical Adapter
320326
- Shadowing Function
321327
- Digital Adapter
322-
- Digital Twin Process
328+
- Digital Twin
329+
- Digital Twin & Digital Twin Engine
323330

324331
### Physical Adapter
325332

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* This file was generated by the Gradle 'init' task.
33
*/
44
group = "io.github.wldt"
5-
version = "0.2.1"
5+
version = "0.3.0-alpha"
66
description = "The core library to build White Label Digital Twins"
77
java.sourceCompatibility = JavaVersion.VERSION_1_8
88

@@ -19,7 +19,7 @@ repositories {
1919

2020
dependencies {
2121
api("org.apache.commons:commons-lang3:3.9")
22-
api("ch.qos.logback:logback-classic:1.4.6")
22+
api("ch.qos.logback:logback-classic:1.4.12")
2323
api("javax.inject:javax.inject:1")
2424
testImplementation("org.junit.jupiter:junit-jupiter-engine:5.10.1")
2525
}

images/wldt_structure.jpg

1.28 MB
Loading

src/main/java/it/wldt/adapter/digital/DigitalAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import it.wldt.core.event.WldtEventFilter;
99
import it.wldt.core.event.WldtEventListener;
1010
import it.wldt.core.state.*;
11-
import it.wldt.core.worker.WldtWorker;
11+
import it.wldt.core.engine.DigitalTwinWorker;
1212
import it.wldt.exception.EventBusException;
1313
import it.wldt.exception.WldtDigitalTwinStateEventException;
1414
import it.wldt.exception.WldtRuntimeException;
@@ -37,7 +37,7 @@
3737
* Multiple Digital Adapters can be active at the same time on the Digital Twin with the aim to handle different
3838
* interaction with the digital layer according to the nature of the twin and its operation context.
3939
*/
40-
public abstract class DigitalAdapter<C> extends WldtWorker implements WldtEventListener, LifeCycleListener {
40+
public abstract class DigitalAdapter<C> extends DigitalTwinWorker implements WldtEventListener, LifeCycleListener {
4141

4242
public static final String DIGITAL_ACTION_EVENT = "da.digital.action.event";
4343

src/main/java/it/wldt/adapter/physical/PhysicalAdapter.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@
44
import it.wldt.core.event.WldtEventBus;
55
import it.wldt.core.event.WldtEventFilter;
66
import it.wldt.core.event.WldtEventListener;
7-
import it.wldt.core.worker.WldtWorker;
7+
import it.wldt.core.engine.DigitalTwinWorker;
88
import it.wldt.exception.EventBusException;
99
import it.wldt.exception.PhysicalAdapterException;
1010
import it.wldt.exception.WldtRuntimeException;
1111
import it.wldt.adapter.physical.event.*;
12-
import it.wldt.exception.WldtWorkerException;
1312
import org.slf4j.Logger;
1413
import org.slf4j.LoggerFactory;
1514

@@ -34,7 +33,7 @@
3433
* same time on the Digital Twin with the aim to handle different interaction with the physical layer according to the
3534
* nature of the twin and the associated physical device.
3635
*/
37-
public abstract class PhysicalAdapter extends WldtWorker implements WldtEventListener {
36+
public abstract class PhysicalAdapter extends DigitalTwinWorker implements WldtEventListener {
3837

3938
private static final Logger logger = LoggerFactory.getLogger(ConfigurablePhysicalAdapter.class);
4039

src/main/java/it/wldt/augmentation/AugmentationFunction.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package it.wldt.augmentation;
22

3-
import it.wldt.core.worker.WldtWorker;
4-
import it.wldt.exception.WldtRuntimeException;
5-
63
/**
74
* @author Marco Picone, Ph.D. - picone.m@gmail.com
85
* @project HelloJava

0 commit comments

Comments
 (0)