====== Status ====== Unter [[StatusWorkflow_Settings#Workflow]] werden für jeden Status den es in Primus geben soll ein eigener Abschnitt abgelegt. Der Name der Abschnitte ist frei wählbar und muss eindeutig sein. In Primus wird das Namensschema **Status_**//// verwendet. Dadurch ist die Konfiguration übersichtlich und leicht anpassbar. Die Standardstatus in Primus sind: ^Status ^Name^ |001|Verfügbar| |002|Wird geprüft| |003|Freigegeben| |004|Veraltet| |005|Ungültig| In der Liste [[List_WorkflowStatus]] sind noch weitere Status definiert, diese werden z.B. für den [[JobServer]] gebraucht, haben hier aber keine Workflowdefinition. ===== Beispiel ===== ====== Aufbau eines Status ====== Ein Status besteht wiederum aus vier optionalen Abschnitten. Zwischen den Abschnitten sind [[Glossar#Kommentare]] erlaubt, innerhalb der Abschnitte nicht. ^ ^Abschnitt ^Funktion^ ^1|[[Status#PreCalls]] | Funktionen die vor dem zuweisen des Status aufgerufen werden und z.B. prüfen ob alle Vorbedingungen erfüllt sind| ^2|[[Status#SetDataValues]] |Enthält die Felder und die Werte die einem Dokument mit diesem Status zugewiesen werden| ^3|[[Status#PostCalls]]|Funktionen die nach dem Zuweisen dieses Status aufgerufen werden| ^4|[[Status#TargetStatus]]|Zielstatus den Dokumente mit diesem Status als nächstes annehmen können| Die Abschnitte werden in der aufgelisteten Reihenfolge abgearbeitet. ===== SetDataValues ===== Hier werden den Datenfeldern Werte zugewiesen. Der Name des Tag ist der Name des Datenfelds, der Wert wird mit dem [[Glossar#Attribut]] **value** zugewiesen. Eine wichtige Rolle spielt die Zuweisung ''WorkflowStatus'', an diesem Feld erkennt Primus die Nummer des Status. Ohne eine Zuweisung dieses Wertes, wird nur ein leerer [[StatusWorkflow_Settings#buttons|Status Workflow Dialog]] angezeigt. ==== Beispiel ==== ===== TargetStatus ===== In diesem Abschnitt wird definiert, welchen Folge- bzw. Zielstatus ein Dokument im [[Glossar#Lebenszyklus]] als nächstes annehmen kann. ==== Beispiel ==== ===== PostCalls ===== In **PostCalls** werden die [[Method]]en aufgerufen, die abgearbeitet werden nach dem ein Dokument diesen Status erreicht hat. Es können [[AddIns]] Befehle, [[prmStartProcess|externe]] Programme oder prinzipiell auch [[Menübefehl]]e sein. Mit [[CreateJob_StatusPostCalls]] können auch ein oder mehrere Methoden in eine Jobdatei geschrieben werden, welche dann von einem [[JobServer]] abgearbeitet wird. ==== Funktionen für PostCalls ==== ^ Funktion^ Beschreibung^ | [[CopyFile]]| Kopiert eine bestimmtes Dokument unter Angabe von Quell- und Zielpfad| | [[SetParentToStatus]]| Bezieht auch übergeordnete Elemente in den Statuswechsel mit ein und darf nur in den PostCalls verwendet werden| | [[SetXMLValue]]| Setzt ein bestimmtes Datenfeld eines Dokuments auf einen Wert| | [[seUpdatePropertiesByPath]]| Öffnet und aktualisiert Das Dokument unter dem angegebenen Pfad| Siehe auch [[SEInterface]]. ==== Beispiel ==== ===== PreCalls ===== **PreCalls** werden zu Beginn eines Status aufgerufen, hier kann geprüft werden ob alle Vorbedingungen erfüllt sind damit der Status dem Dokument zugewiesen werden kann. Ein typischer Befehl ist [[CheckChildrenStatus]], mit dem z.B. geprüft werden kann ob alle untergeordneten Dokumente ebenfalls freigegeben sind. Alle Prüfungen müssen als Ergebnis ''TRUE'' zurück liefern, sonst wird der Workflow für dieses Dokument abgebrochen. Liefert eine Prüfung ''FALSE'' als Ergebnis wird **PreCalls** sofort beendet und die weiteren Prüfungen werden nicht mehr durchgeführt. ==== Funktionen für PreCalls ==== ^ Funktion^ Beschreibung^ | [[CheckChildrenStatus]]| Prüft ob verlinkte untergeordnete Dokumente einen bestimmten Status haben| | [[CheckParentsStatus]]| Prüft ob verlinkte übergeordnete Dokumente einen bestimmten Status haben| | [[CheckParentsWriteable]]| Prüft ob übergeordnete Elemente beschreibbar sind| | [[CheckXMLValue]]| Prüft ob ein Feld einen bestimmten Wert hat| | [[IgnoreStatus]]| Dokumente mit bestimmten Status werden für den Workflow ignoriert| | [[SetChildrenToStatus]]| Bezieht auch untergeordnete Elemente in den Statuswechsel mit ein| | [[SetPrevVersionToStatus]]| Setzt das Dokument der vorherigen Revision auf einen bestimmten Status| | [[SetSubFilesToStatus]]| Bezieht auch abgeleitete Dokumente wie ''DXF'' / ''DWG'' in den Statuswechsel mit ein| ==== Beispiel ====