diff --git a/source/concepts/claims.md b/source/concepts/claims.md new file mode 100644 index 0000000..6edd66d --- /dev/null +++ b/source/concepts/claims.md @@ -0,0 +1,16 @@ +# Claims +Ein Claim ist eine Zugang zu einer Resource um deren dynamischen Zustand zu ändern. Claims können dabei auch von mehreren Nutzern gleichzeitig erhalten werden. +Claims enthalten Traits, welche eine Liste an Methoden ist, um den Zustand einer Resource zu ändern. +Um einen Claim auf eine Resource zu erhalten kann man entweder ein Claim der Resource selber beziehen oder sich auf eine Liste mit einem Interest eintragen, welche als Queue abgearbeitet wird, sobald eine Resource disowned wird. + +Ein Interest bildet das Anmeleden eines Interesses an einer Resource beim Server an. Ein Interest ist hierbei verbindlich, sollte also ein Nutzer ein Interest auf eine Resource haben, dann wird ihm diese auch automatisch gegeben, sobald die Resource keinen Claim mehr hat. + +Um den Zustand einer Resource abzufragen kann auf eine Resource ein Notify geholt werden. Dieses Notify gibt den Zustand einer Resource zurück, also auch eine Möglichkeit auf einen Zustand zu einer Resource zu subscriben und Updates zu einer Änderung zu erhalten. + +Mit Claims sollen die verschienden Eigenschaften einer Resource abgebildet werden ohne, dass der Server das Konzept des Verleihens jedes mal neu Implementieren muss. + +Eine weitere Möglichkeit einen Claim zu erhalten ist über ein Transfer eines Claims. Hierbei holt sich der erste Nutzer ein Token, über transfer(), welches er per QR-Code oder NFC an einen zweiten Nutzer weitergibt. Dieser kann dann den Claim übernehmen, wenn er das Token beim Server einlöst. Dabei ist zu beachten, dass der übernehmende Nuter auch über die Berechtigung verfügen muss die Resource leihen zu dürfen. + +Die letzte Möglichkeit einen Claim zu erhalten ist in dem ein Ausbilder lend() auf dem Claim aufruft und ein Token erhält, welches er einer Auszubildenen übergibt. Dieser kann dann auch die Maschine nutzen, wenn er nicht die erforderliche Berechtigung hat. Dabei erhält nach erfolgreicher einlösung des Tokens der Ausbilder einen Interest, mit welchem er den Claim zurückfordern kann. Dieses Konzept kann recursiv angewendet werden. Bei einem Lend bleibt der übergeber des Tokens in Verantwortung, im gegensatz zum Transfer, in dem er die Verantwortung abgibt. + +# TODO diff --git a/source/concepts/concepts.rst b/source/concepts/concepts.rst new file mode 100644 index 0000000..da463bf --- /dev/null +++ b/source/concepts/concepts.rst @@ -0,0 +1,13 @@ +Concepts of FabAccess +================= + +FabAccess nutzt mehrer Konzept um den Process des Verleihens nutzbar zu machen. Und an den benötigten Stellen Freiheiten zugeben, um Anpassungen vornehmen zu können. + + + +.. toctree:: + claims.md + traits.md + measurements.md + projects.md + terminals.md \ No newline at end of file diff --git a/source/concepts/measurements.md b/source/concepts/measurements.md new file mode 100644 index 0000000..2d5259d --- /dev/null +++ b/source/concepts/measurements.md @@ -0,0 +1,2 @@ +# Measurements +Messwerte von Resourcen \ No newline at end of file diff --git a/source/concepts/projects.md b/source/concepts/projects.md new file mode 100644 index 0000000..a0904ec --- /dev/null +++ b/source/concepts/projects.md @@ -0,0 +1,2 @@ +# Projects +Claims mit einem Verweis auf Projekte beim Leihen von Resourcen \ No newline at end of file diff --git a/source/concepts/terminals.md b/source/concepts/terminals.md new file mode 100644 index 0000000..f721ec0 --- /dev/null +++ b/source/concepts/terminals.md @@ -0,0 +1,2 @@ +# Terminals +Eingeschränkte Nutzung von Resourcen bei Ausleih Terminals \ No newline at end of file diff --git a/source/concepts/traits/checkable.md b/source/concepts/traits/checkable.md new file mode 100644 index 0000000..3d3b3b3 --- /dev/null +++ b/source/concepts/traits/checkable.md @@ -0,0 +1,18 @@ +# Checkable +Trait welcher den Zustand von Resourcen abbildet, welche eine Überprüfung nach einer Nutzung benötigen. + +## OID +`1.3.6.1.4.1.61783.612.1.3` + +## States +```mermaid +stateDiagram + [*] --> FREE + FREE --> INUSE: use + INUSE --> CHECK: giveback + CHECK --> FREE: accept + CHECK --> REJECTED: reject + REJECTED --> INUSE: use + REJECTED --> CHECK: giveback + REJECTED --> FREE: accept +``` \ No newline at end of file diff --git a/source/concepts/traits/claimable.md b/source/concepts/traits/claimable.md new file mode 100644 index 0000000..7b7f4a2 --- /dev/null +++ b/source/concepts/traits/claimable.md @@ -0,0 +1,5 @@ +# Claimable +Sonderfall um den Status des Claims anbieten zu können. + +## OID +`1.3.6.1.4.1.61783.612.1.0` \ No newline at end of file diff --git a/source/concepts/traits/doorable.md b/source/concepts/traits/doorable.md new file mode 100644 index 0000000..7524cc3 --- /dev/null +++ b/source/concepts/traits/doorable.md @@ -0,0 +1,16 @@ +# Doorable +Grundlegender Traits zum Ansteuern von Türen. + +## OID +`1.3.6.1.4.1.61783.612.1.2` + +## States +```mermaid +stateDiagram + [*] --> CLOSED + CLOSED --> OPEN: unlock + OPEN --> CLOSED: lock + CLOSED --> tempOPEN: unlocktemp + tempOPEN --> OPEN: unlock + tempOPEN --> CLOSED +``` \ No newline at end of file diff --git a/source/concepts/traits/locatable.md b/source/concepts/traits/locatable.md new file mode 100644 index 0000000..0c9c65e --- /dev/null +++ b/source/concepts/traits/locatable.md @@ -0,0 +1,15 @@ +# Locatable +Grundlegender Trait zum Auffinden von Resourcen + +## OID +`1.3.6.1.4.1.61783.612.1.5` + +## States +```mermaid +stateDiagram + [*] --> IDLE + IDLE --> ACTIVE: setActive + IDLE --> ACTIVE: identify + ACTIVE --> IDLE: setIdle + ACTIVE --> IDLE +``` \ No newline at end of file diff --git a/source/concepts/traits/lockable.md b/source/concepts/traits/lockable.md new file mode 100644 index 0000000..3b07e75 --- /dev/null +++ b/source/concepts/traits/lockable.md @@ -0,0 +1,16 @@ +# Lockers +Traits zum Abbilden von Schlössern + +## OID +`1.3.6.1.4.1.61783.612.1.4` + +## States +```mermaid +stateDiagram + [*] --> locked + locked --> unlocked: unengage + unlocked --> locked + unlocked --> open + open --> unengaged + unengaged --> locked: engage + unengaged --> open \ No newline at end of file diff --git a/source/concepts/traits/powerable.md b/source/concepts/traits/powerable.md new file mode 100644 index 0000000..0cdf096 --- /dev/null +++ b/source/concepts/traits/powerable.md @@ -0,0 +1,13 @@ +# Powerable +Grundlegender Trait, welcher Resourcen einschalten kann. + +## OID +`1.3.6.1.4.1.61783.612.1.1` + +## States +```mermaid +stateDiagram + [*] --> OFF + OFF --> ON: turnON + ON --> OFF: turnOFF +``` \ No newline at end of file diff --git a/source/concepts/traits/traits.rst b/source/concepts/traits/traits.rst new file mode 100644 index 0000000..175161b --- /dev/null +++ b/source/concepts/traits/traits.rst @@ -0,0 +1,17 @@ +Traits +================= + +Traits sind Implementierung speziell für eine Eigenschaft einer Resource. +Mit einem Traits können Zustände auf einer Resource geändert werden. + +TODO +===== +Es kann mehrere Traits pro Resource gebenb + +.. toctree:: + claimable.md + powerable.md + doorable.md + lockable.md + checkable.md + locatable.md \ No newline at end of file diff --git a/source/index.rst b/source/index.rst index 5fccedb..3a3cac5 100644 --- a/source/index.rst +++ b/source/index.rst @@ -19,3 +19,4 @@ We will inform you about breaking changes over our Zulip. Please subscript to it installation/installation.rst configuration/configuration.rst usage/usage.rst + concepts/concepts.rst