CodamAIDocs
Themafertig

Das CRMS-Modul im Hub

Was ein Projekt im CRMS-Modul festlegt, wie die Laufzeit über die Platzierung entscheidet und was jedes Feld im Build und in der Umgebung bewirkt.

Ausprägungen
eingebettet (local)eigener Dienst (remote)nicht platziertProjekt ohne CRMS-Modul

Worum es geht

Ein Projekt im Hub kann ein CRMS-Modul haben. Darin steht, was das Projekt über Berichte einmal entscheidet, bevor es das System überhaupt gibt: ob endgültige Dokumente aufbewahrt werden, wie lange, ob sie versiegelt werden, welche Formate es gibt, wer Vorlagen schreibt und wer sie freigibt. Ein endgültiges Dokument ist ein Bericht, den CRMS als Nachweis ablegt. Mehr dazu unter Was ein endgültiges Dokument ist.

Du bearbeitest das Modul im CRMS-Portal, einer Oberfläche im Hub. Der Hub öffnet sie aus dem Projekt heraus. Das Portal verwaltet keine Vorlagen und keine Dokumente einer laufenden Installation. Es bearbeitet nur das Modell.

Ein Projekt hat höchstens ein CRMS-Modul. Hat es zwei, bricht der Export des Projekts ab. Jedes geschützte CDMS-Modul des Projekts nutzt dieses eine CRMS-Modul.

Vom Hub in den Build

  1. 1
    Hub
    hält das CRMS-Modul mit seinen Feldern, seinen Freigabestufen und der Laufzeit, in der es steht
  2. 2
    Hub→Build
    gibt das Modul als crms.yaml aus, neben cias.yaml
  3. 3
    Build
    liest crms.yaml und leitet die Platzierung ab
  4. 4
    Build
    Modul in keiner Laufzeit, oder in der Laufzeit eines öffentlichen CDMS-Moduls → der Build bricht ab und nennt, was zu modellieren ist
  5. 5
    Build
    setzt die CRMS-Abhängigkeiten in die pom.xml, je nach Platzierung und gewählten Formaten
  6. 6
    Build
    schreibt bei jedem Build crms-configuration.yaml, wenn CRMS eingebettet ist
    Ergebnis: Die Anwendung importiert die Datei beim Start. Eine Umgebungsvariable überschreibt jeden Wert daraus.

Die Platzierung: wo das Modul läuft

Ein Feld für „eingebettet oder eigener Dienst“ gibt es nicht. Der Build leitet es daraus ab, in welcher Laufzeit das CRMS-Modul steht. Eine Laufzeit ist im Hub ein Prozess, in dem Module laufen.

Was ein geschütztes CDMS-Modul aus der Platzierung macht

Wann: Das CRMS-Modul steht in derselben Laufzeit wie das CDMS-Modul.

CRMS läuft im Prozess der Anwendung. Die pom.xml bekommt crms-spring-boot-starter, crms-document, crms-storage-s3, crms-rest und die Formatmodule der gewählten Formate. Die Konfiguration bekommt codamai.crms.placement: local und importiert crms-configuration.yaml.

Ergebnis: Vorlagen, Rendern, endgültige Dokumente und ihr Nachweis laufen in der Anwendung. Unter /crms stehen die Routen auch den anderen CDMS-Modulen des Projekts zur Verfügung.

Wann: Das CRMS-Modul steht in einer anderen Laufzeit, als eigener CRMS-Dienst oder eingebettet in ein anderes CDMS-Modul des Projekts.

Das CDMS-Modul ist Client. Die pom.xml bekommt crms-spring-boot-starter und crms-client, die Konfiguration codamai.crms.placement: remote. Die Adresse kommt aus CODAMAI_CRMS_CLIENT_URL.

Ergebnis: Das CDMS-Modul rendert nichts selbst. Es ruft den CRMS-Dienst mit dem Token des Aufrufers auf.

Wann: Das CRMS-Modul steht in einer Laufzeit ohne CDMS-Modul.

Daraus wird ein eigenständiger CRMS-Dienst. Der Hub liefert seinen Projektrahmen als ZIP zum Herunterladen. Für ein eingebettetes oder nicht platziertes Modul lehnt der Hub den Download ab.

Ergebnis: Ein Maven-Projekt, das bei jedem Build das CRMS-Modul aus dem Hub liest.

Wann: Das CRMS-Modul steht noch in keiner Laufzeit.

Beim Modellieren ist das ein gültiger Zustand. Ein Build eines geschützten CDMS-Moduls bricht dann ab: Er weiß nicht, ob CRMS eingebettet ist oder ein Dienst.

Ergebnis: Build abgelehnt, mit dem Hinweis, das CRMS-Modul in eine Laufzeit zu stellen.

Wann: Das Projekt hat kein CRMS-Modul.

Der Build setzt nichts von CRMS ein.

Ergebnis: Die Anwendung hat kein CRMS.

CRMS braucht CIAS. CRMS fragt CIAS nach dem Mandanten und reicht das Token des Aufrufers weiter. Ein öffentliches CDMS-Modul (authentication: NONE) hat beides nicht und bekommt deshalb nie einen CRMS-Teil. Steht das CRMS-Modul in der Laufzeit eines öffentlichen CDMS-Moduls, lehnt der Build ab.

Die Felder

Jedes Feld ist optional. „Leer“ heißt: Das Feld wird nicht geschrieben, die Spalte „Vorgabe von CRMS“ gilt.

FeldWas es festlegtVariableVorgabe von CRMS
documentRevisionsob endgültige Dokumente abgelegt werden. Aus: Ein FINAL-Rendern wird abgelehntCODAMAI_CRMS_DOCUMENT_REVISIONStrue
documentRetentionwie lange ein endgültiges Dokument aufbewahrt wird, als ISO-8601-Zeitraum, etwa P10YCODAMAI_CRMS_DOCUMENT_RETENTIONkeine, Pflicht solange Dokumente abgelegt werden
documentStorePayloadob die Daten eines endgültigen Dokuments verschlüsselt mit abgelegt werdenCODAMAI_CRMS_DOCUMENT_STORE_PAYLOADtrue
auditReadsob auch jedes Lesen eines endgültigen Dokuments ins Journal geht, nicht nur das SchreibenCODAMAI_CRMS_AUDIT_READSfalse
sealModedas Siegel von PDF-Dokumenten: INTERNAL oder NONECODAMAI_CRMS_SEAL_MODEinternal
formatswelche Formate gebaut und angeboten werden: PDF, DOCX, XLSX, ODS, CSVkeine, siehe untenjedes Format
pdfProfiledas PDF-Profil, wenn eine Anfrage keins nennt: NONE, PDF_A_3A, PDF_UA, PDF_A_3A_UACODAMAI_CRMS_PDF_PROFILEPDF_A_3A
templateScopeswelche Vorlagen-Scopes es gibt: USER, TENANT, SYSTEMCODAMAI_CRMS_TEMPLATE_SCOPESalle drei
templateReasonRequiredob Einreichen, Zurücksetzen und Stilllegen eine Begründung brauchen. Beim Ablehnen ist sie immer PflichtCODAMAI_CRMS_TEMPLATE_REASON_REQUIREDtrue
templateRoleUserdie Rolle, die eigene Vorlagen eines Benutzers schreibtCODAMAI_CRMS_TEMPLATE_ROLES_USERcrms-template-personal
templateRoleTenantdie Rolle, die Vorlagen eines Mandanten schreibtCODAMAI_CRMS_TEMPLATE_ROLES_TENANTcrms-template-author
documentRoleReaddie Rolle, die endgültige Dokumente liestCODAMAI_CRMS_REST_DOCUMENT_ROLES_READcrms-document-reader
documentRoleHolddie Rolle, die eine Sperre gegen Löschen setzt und löst (Legal Hold)CODAMAI_CRMS_REST_DOCUMENT_ROLES_HOLDcrms-document-custodian
documentRoleErasedie Rolle, die ein Dokument löschtCODAMAI_CRMS_REST_DOCUMENT_ROLES_ERASEcrms-document-eraser
approvalStagesdie Freigabestufen je Scope, siehe untenkeinekeine Stufe: direkt veröffentlicht

Ein Scope sagt, wem eine Vorlage gehört: der Plattform (SYSTEM), einem Mandanten (TENANT) oder einem Benutzer (USER). Siehe Aufbau einer Vorlage. Die Rollen sind Client-Rollen in CIAS, siehe Rollen in CRMS.

Zwei weitere Felder stehen im Modell: approvalReauthenticate und approvalTenantDefined. Der Build liest sie nicht. Sie ändern weder die Konfiguration noch die Umgebung.

Was die Datei enthält

Der Build schreibt jedes gesetzte Feld als ${VARIABLE:wert}. Das ist die Spring-Schreibweise für „nimm die Variable, sonst diesen Wert“. Die Berichte des Hubs zum Beispiel legen keine Dokumente ab, siegeln nicht und erlauben nur Systemvorlagen. Ihr Build schreibt:

# Generated on every build from the CRMS module of this project in the CodamAI hub
codamai:
  crms:
    document:
      revisions: "${CODAMAI_CRMS_DOCUMENT_REVISIONS:false}"
    seal:
      mode: "${CODAMAI_CRMS_SEAL_MODE:none}"
    template:
      scopes: "${CODAMAI_CRMS_TEMPLATE_SCOPES:SYSTEM}"

Leere Felder fehlen in der Datei. Die Datei wird nicht von Hand bearbeitet: Der nächste Build überschreibt sie.

Formate entscheiden die pom.xml

formats ist kein Vorgabewert einer Variable. Das Feld entscheidet, welche Formatmodule in die pom.xml kommen. CRMS bietet dann an, was installiert ist.

FormatModul in der pom.xml
PDFcrms-format-pdf
DOCXcrms-format-word
XLSX, ODS, CSVcrms-format-table, einmal für alle drei
HTMLkeins: HTML ist im Renderer von CRMS eingebaut und immer da
Feld leeralle Formatmodule

Ein CDMS-Modul, das CRMS nur als Client nutzt, bekommt kein Formatmodul. Es rendert nichts selbst.

Die Freigabestufen

Eine Freigabe ist die Zustimmung, bevor eine eingereichte Vorlage veröffentlicht wird. Je Scope kann das Projekt eine Kette von Stufen festlegen. Jede Stufe hat diese Felder:

FeldBedeutungleer
scopeUSER, TENANT oder SYSTEMPflicht
sortOrderReihenfolge innerhalb des Scopesans Ende
namewie die Stufe heißtPflicht
roledie CIAS-Rolle der FreigebendenPflicht
minimumApproverswie viele verschiedene Personen zustimmen müssen1
authorExcludedob die Autorin oder der Autor selbst ausgeschlossen istja
meaningwas eine Zustimmung aussagt: REVIEWED (geprüft) oder APPROVED (freigegeben)Pflicht

Der Build schreibt die Stufen in der Reihenfolge von sortOrder nach codamai.crms.template.approval.<scope>:

codamai:
  crms:
    template:
      approval:
        tenant:
          - name: Fachliche Prüfung
            role: crms-template-reviewer
            meaning: REVIEWED
          - name: Freigabe
            role: crms-template-approver
            minimum-approvers: 2
            meaning: APPROVED

(Die Rollennamen sind ein Beispiel.) Die Stufen haben keine Umgebungsvariable. Eine Freigabekette, die eine Umgebung abschalten könnte, wäre keine. Ein Scope ohne Stufe veröffentlicht eine eingereichte Vorlage sofort. Wie die Kette abläuft, steht unter Freigabe.

Hinweise im Portal

Das Portal prüft das Modul beim Bearbeiten und zeigt Hinweise. Speichern sperrt es nur bei Freigabestufen, die das Modell selbst ablehnt.

BereichSituationWas das Portal sagt
FreigabeStufe ohne Name, Rolle oder Bedeutung, oder weniger als 1 PersonFehler, Speichern gesperrt
DokumentedocumentRetention ist kein lesbarer ZeitraumFehler
Ausgabeunbekanntes FormatFehler
DokumentedocumentRevisions ausWarnung: keine endgültigen Dokumente
Freigabeletzte Stufe hat nicht APPROVEDWarnung
DokumenteAufbewahrung leer, Dokumente anHinweis: Wert kommt aus der Umgebung
VorlagenSYSTEM zugelassenHinweis: CIAS muss Plattform-Administratoren nennen
FreigabeScope ohne StufeHinweis: veröffentlicht direkt

Fallen

Weiter

Suchen