Table of Contents

Class PermissionMatrixInference

Namespace
Zedal.Sdk.Apis.Diwass.Permissions
Assembly
Zedal.Sdk.dll

Rollen-Inferenz aus currentOperatorId(s) × Document. Pro Schein-Typ gibt es eine eigene InferRoles-Methode, die alle Party-Slots des Dokuments durchgeht und alle Rollen zurückgibt, in denen mindestens eine der übergebenen OperatorIds im Doc steht. Der Single-Operator-Pfad (typischer UI-Fall: ein eingeloggter Account) und der Mehr-Operator-Pfad (Operator-Verbund / mehrere Accounts auf einer Logik-Einheit) teilen sich dieselbe Implementierung — Single delegiert auf Plural.

Quelle ist immer die Server-Sicht. Inferenz arbeitet ausschließlich auf den Get*-Information-Typen (Infotech.Zedal.Documents.V1.Diwass.Waste.Retrieval.V1.NotificationInformationType, Infotech.Zedal.Documents.V1.Diwass.Waste.Retrieval.V1.Annex7InformationType) bzw. der im Movement-Aggregat referenzierten GetNotificationResponse. Submission-/Update-Requests sind als Eingang verboten — sie sind ein Wunsch des Notifizierenden; erst nach dem Abschicken legt der Server fest, welche Operatoren in welchem Slot landen.

Authority wird hier nicht inferiert — Behörden haben keine OperatorInternalId im Dokument. Wer als Competent Authority handelt, übergibt Role.Authority direkt an die rollen-basierten Methoden auf PermissionMatrix.

public static class PermissionMatrixInference
Inheritance
PermissionMatrixInference
Inherited Members

Methods

CanPerform(IEnumerable<long>, DiwassIntents, Annex7InformationType)

Vereinigung der erlaubten Intents über mehrere Rollen — passt zur Inferenz-API, die für eine OperatorId mehrere Rollen zurückgeben kann (z.B. S&F = Notifizierer + Erzeuger) und zu Aufrufern, die einen Operator-Verbund mit mehreren OperatorIds prüfen.

CanPerform(IEnumerable<long>, DiwassIntents, NotificationInformationType)

Vereinigung der erlaubten Intents über mehrere Rollen — passt zur Inferenz-API, die für eine OperatorId mehrere Rollen zurückgeben kann (z.B. S&F = Notifizierer + Erzeuger) und zu Aufrufern, die einen Operator-Verbund mit mehreren OperatorIds prüfen.

CanPerform(IEnumerable<long>, DiwassIntents, Document)

Vereinigung der erlaubten Intents über mehrere Rollen — passt zur Inferenz-API, die für eine OperatorId mehrere Rollen zurückgeben kann (z.B. S&F = Notifizierer + Erzeuger) und zu Aufrufern, die einen Operator-Verbund mit mehreren OperatorIds prüfen.

CanPerform(IEnumerable<long>, DiwassIntents, AnnexViiDocument)

Vereinigung der erlaubten Intents über mehrere Rollen — passt zur Inferenz-API, die für eine OperatorId mehrere Rollen zurückgeben kann (z.B. S&F = Notifizierer + Erzeuger) und zu Aufrufern, die einen Operator-Verbund mit mehreren OperatorIds prüfen.

CanPerform(IEnumerable<long>, DiwassIntents, MovementDocument)

Vereinigung der erlaubten Intents über mehrere Rollen — passt zur Inferenz-API, die für eine OperatorId mehrere Rollen zurückgeben kann (z.B. S&F = Notifizierer + Erzeuger) und zu Aufrufern, die einen Operator-Verbund mit mehreren OperatorIds prüfen.

CanPerform(IEnumerable<long>, DiwassIntents, NotificationDocument)

Vereinigung der erlaubten Intents über mehrere Rollen — passt zur Inferenz-API, die für eine OperatorId mehrere Rollen zurückgeben kann (z.B. S&F = Notifizierer + Erzeuger) und zu Aufrufern, die einen Operator-Verbund mit mehreren OperatorIds prüfen.

CanPerform(long, DiwassIntents, Annex7InformationType)

Vereinigung der erlaubten Intents über mehrere Rollen — passt zur Inferenz-API, die für eine OperatorId mehrere Rollen zurückgeben kann (z.B. S&F = Notifizierer + Erzeuger) und zu Aufrufern, die einen Operator-Verbund mit mehreren OperatorIds prüfen.

CanPerform(long, DiwassIntents, NotificationInformationType)

Vereinigung der erlaubten Intents über mehrere Rollen — passt zur Inferenz-API, die für eine OperatorId mehrere Rollen zurückgeben kann (z.B. S&F = Notifizierer + Erzeuger) und zu Aufrufern, die einen Operator-Verbund mit mehreren OperatorIds prüfen.

CanPerform(long, DiwassIntents, Document)

Vereinigung der erlaubten Intents über mehrere Rollen — passt zur Inferenz-API, die für eine OperatorId mehrere Rollen zurückgeben kann (z.B. S&F = Notifizierer + Erzeuger) und zu Aufrufern, die einen Operator-Verbund mit mehreren OperatorIds prüfen.

CanPerform(long, DiwassIntents, AnnexViiDocument)

Vereinigung der erlaubten Intents über mehrere Rollen — passt zur Inferenz-API, die für eine OperatorId mehrere Rollen zurückgeben kann (z.B. S&F = Notifizierer + Erzeuger) und zu Aufrufern, die einen Operator-Verbund mit mehreren OperatorIds prüfen.

CanPerform(long, DiwassIntents, MovementDocument)

Vereinigung der erlaubten Intents über mehrere Rollen — passt zur Inferenz-API, die für eine OperatorId mehrere Rollen zurückgeben kann (z.B. S&F = Notifizierer + Erzeuger) und zu Aufrufern, die einen Operator-Verbund mit mehreren OperatorIds prüfen.

CanPerform(long, DiwassIntents, NotificationDocument)

Vereinigung der erlaubten Intents über mehrere Rollen — passt zur Inferenz-API, die für eine OperatorId mehrere Rollen zurückgeben kann (z.B. S&F = Notifizierer + Erzeuger) und zu Aufrufern, die einen Operator-Verbund mit mehreren OperatorIds prüfen.

Filter(IEnumerable<long>, IEnumerable<DiwassIntents>, Annex7InformationType)

Schnittmenge auf Rollen-Mengen-Basis (Union der Allow-Listen × Eingabestrom).

Filter(IEnumerable<long>, IEnumerable<DiwassIntents>, NotificationInformationType)

Schnittmenge auf Rollen-Mengen-Basis (Union der Allow-Listen × Eingabestrom).

Filter(IEnumerable<long>, IEnumerable<DiwassIntents>, Document)

Schnittmenge auf Rollen-Mengen-Basis (Union der Allow-Listen × Eingabestrom).

Filter(IEnumerable<long>, IEnumerable<DiwassIntents>, AnnexViiDocument)

Schnittmenge auf Rollen-Mengen-Basis (Union der Allow-Listen × Eingabestrom).

Filter(IEnumerable<long>, IEnumerable<DiwassIntents>, MovementDocument)

Schnittmenge auf Rollen-Mengen-Basis (Union der Allow-Listen × Eingabestrom).

Filter(IEnumerable<long>, IEnumerable<DiwassIntents>, NotificationDocument)

Schnittmenge auf Rollen-Mengen-Basis (Union der Allow-Listen × Eingabestrom).

Filter(long, IEnumerable<DiwassIntents>, Annex7InformationType)

Schnittmenge auf Rollen-Mengen-Basis (Union der Allow-Listen × Eingabestrom).

Filter(long, IEnumerable<DiwassIntents>, NotificationInformationType)

Schnittmenge auf Rollen-Mengen-Basis (Union der Allow-Listen × Eingabestrom).

Filter(long, IEnumerable<DiwassIntents>, Document)

Schnittmenge auf Rollen-Mengen-Basis (Union der Allow-Listen × Eingabestrom).

Filter(long, IEnumerable<DiwassIntents>, AnnexViiDocument)

Schnittmenge auf Rollen-Mengen-Basis (Union der Allow-Listen × Eingabestrom).

Filter(long, IEnumerable<DiwassIntents>, MovementDocument)

Schnittmenge auf Rollen-Mengen-Basis (Union der Allow-Listen × Eingabestrom).

Filter(long, IEnumerable<DiwassIntents>, NotificationDocument)

Schnittmenge auf Rollen-Mengen-Basis (Union der Allow-Listen × Eingabestrom).

InferRoles(IEnumerable<long>, Annex7InformationType)

Sucht eine der operatorIds in den Party-Slots der Server-bestätigten TransportAnnouncement und liefert alle gefundenen Rollen. Der Annex7-Arranger ist semantisch der Notifizierer. Eingang ist die Server-Information aus GetAnnex7Response — niemals der Submit-/Update-Request.

InferRoles(IEnumerable<long>, NotificationInformationType)

Sucht eine der operatorIds in den Party-Slots der Server-bestätigten Submission und liefert alle gefundenen Rollen. Eingang ist die Server-Information aus GetNotificationResponse — niemals der Submit-/Update-Request, da dort die Slot-Belegung noch nicht final ist.

InferRoles(IEnumerable<long>, Document)

Inferenz auf dem Aggregat-Infotech.Zedal.Documents.V1.Document. Greift ausschließlich auf die Server-Information zu:

  • Notification → GetNotificationResponse.NotificationInformation
  • Annex7 → GetAnnex7Response (entspricht Infotech.Zedal.Documents.V1.Diwass.Waste.Retrieval.V1.Annex7InformationType)
  • Movement → die im Movement-Aggregat referenzierte GetNotificationResponse.NotificationInformation (Movement-Stages tragen keine Operator-Slots; die Rollen kommen aus der Notification-Submission)

Liegt für den jeweiligen Sub-Doc-Typ keine Server-Information vor, gibt die Methode ein leeres Set zurück — Rollen sind dann (noch) nicht final.

InferRoles(IEnumerable<long>, AnnexViiDocument)

Convenience für handler.Annex7: zieht intern die Server-Information aus DiwassMessage.GetAnnex7Response und delegiert.

InferRoles(IEnumerable<long>, MovementDocument)

Convenience für handler.Movement: Movement-Stages tragen keine eigenen Operator-Slots, also greift die Inferenz auf die im Movement-Aggregat referenzierte Notification (DiwassMessage.GetNotificationResponse.NotificationInformation) zu.

InferRoles(IEnumerable<long>, NotificationDocument)

Convenience für handler.Notification: zieht intern die Server- Information aus DiwassMessage.GetNotificationResponse.NotificationInformation und delegiert. Liegt noch kein GetResponse vor (z.B. direkt nach CreateSubmission vor dem ersten Pull), kommt ein leeres Set zurück.

InferRoles(long, Annex7InformationType)

Sucht eine der operatorIds in den Party-Slots der Server-bestätigten TransportAnnouncement und liefert alle gefundenen Rollen. Der Annex7-Arranger ist semantisch der Notifizierer. Eingang ist die Server-Information aus GetAnnex7Response — niemals der Submit-/Update-Request.

InferRoles(long, NotificationInformationType)

Sucht eine der operatorIds in den Party-Slots der Server-bestätigten Submission und liefert alle gefundenen Rollen. Eingang ist die Server-Information aus GetNotificationResponse — niemals der Submit-/Update-Request, da dort die Slot-Belegung noch nicht final ist.

InferRoles(long, Document)

Inferenz auf dem Aggregat-Infotech.Zedal.Documents.V1.Document. Greift ausschließlich auf die Server-Information zu:

  • Notification → GetNotificationResponse.NotificationInformation
  • Annex7 → GetAnnex7Response (entspricht Infotech.Zedal.Documents.V1.Diwass.Waste.Retrieval.V1.Annex7InformationType)
  • Movement → die im Movement-Aggregat referenzierte GetNotificationResponse.NotificationInformation (Movement-Stages tragen keine Operator-Slots; die Rollen kommen aus der Notification-Submission)

Liegt für den jeweiligen Sub-Doc-Typ keine Server-Information vor, gibt die Methode ein leeres Set zurück — Rollen sind dann (noch) nicht final.

InferRoles(long, AnnexViiDocument)

Convenience für handler.Annex7: zieht intern die Server-Information aus DiwassMessage.GetAnnex7Response und delegiert.

InferRoles(long, MovementDocument)

Convenience für handler.Movement: Movement-Stages tragen keine eigenen Operator-Slots, also greift die Inferenz auf die im Movement-Aggregat referenzierte Notification (DiwassMessage.GetNotificationResponse.NotificationInformation) zu.

InferRoles(long, NotificationDocument)

Convenience für handler.Notification: zieht intern die Server- Information aus DiwassMessage.GetNotificationResponse.NotificationInformation und delegiert. Liegt noch kein GetResponse vor (z.B. direkt nach CreateSubmission vor dem ersten Pull), kommt ein leeres Set zurück.