start_process()
Erzeugt eine Workflow-Prozessinstanz und startet sie in einem Aufruf. Intern werden
wfm.CreateProcessInstance (liefert die ProcessId) und anschließend wfm.StartProcess
ausgeführt. Rückgabe ist die ID des neuen Prozesses.
1. Signatur
-
Sync
-
Async
ecm.workflow.start_process(
user: ECMOrganisationObjectIdLike,
workflow: str | ECMWorkflow,
client_type: str | ECMClientType,
organisation: str | ECMOrganisation | None = None,
*,
variables: Mapping[str, str | RawWorkflowVariable] | None = None,
documents: Iterable[ECMWorkspaceDocument] | None = None,
) -> str
await ecm.workflow.start_process(
user: ECMOrganisationObjectIdLike,
workflow: str | ECMWorkflow,
client_type: str | ECMClientType,
organisation: str | ECMOrganisation | None = None,
*,
variables: Mapping[str, str | RawWorkflowVariable] | None = None,
documents: Iterable[ECMWorkspaceDocument] | None = None,
) -> str
2. Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
|
|
— |
Der Workflow-Organisations-Benutzer — nicht die Security-Benutzer-GUID. Lookup via |
|
|
— |
Der zu startende Workflow: ein |
|
|
— |
Client-Typ als |
|
|
|
Bei |
|
|
|
Workflow-Eingangsvariablen — entweder ein Mapping (String-Werte als |
|
|
|
Dokumente, die in den Workspace der Workflow-Akte gelegt werden. |
2.1. ECMWorkspaceDocument
-
id(int) — Dokument-ID -
type(int) — Objekttyp-ID des Dokuments -
location(int, Standard1) —1= SDREL,2= Systemarchiv -
moveable(bool, StandardTrue) — Verschieben zwischen Infobereich und Workspace erlaubt -
deleteable(bool, StandardFalse) — Löschen aus der Akte erlaubt -
in_workspace(bool, StandardTrue) —True= im Workspace (Workflow-Standard),False= im Infobereich
4. Fehler
-
ECMMissingArgumentException— kein Client-Typ angegeben -
ECMNotFoundException— ein als Name übergebener Workflow oder Client-Typ existiert nicht -
ECMWrongStateException— ein als Name übergebener Workflow oder Client-Typ ist mehrdeutig
5. Beispiele
5.1. Kürzester Weg: per Modellname, aktive Organisation
process_id = ecm.workflow.start_process(
user=user,
workflow="test", # Workflow-Modellname
client_type="#OSECM_Client#", # Client-Typ-Name
)
print(process_id)
5.2. Mit Eingangsvariablen und einem Dokument
from ecmind_blue_client.ecm import ECMWorkspaceDocument, RawWorkflowVariable
process_id = ecm.workflow.start_process(
user=user,
workflow="test",
client_type="#OSECM_Client#",
variables={
"StringVar": "Hallo",
# Skalare (auch Zahlen/Datum/Zeit) gehen als <String> — der Server konvertiert
"IntegerVar": RawWorkflowVariable("<WFVar><String>42</String></WFVar>"),
},
documents=[ECMWorkspaceDocument(id=4711, type=131073)],
)
6. Variablen-Wertformate
Gegen den enaio®-Server verifizierte Formate für RawWorkflowVariable:
-
Skalare (String, Integer, Float, Date, Time) werden als
<WFVar><String>WERT</String></WFVar>gesendet — der Server konvertiert. Typisierte Tags wie<Integer>werden abgewiesen. -
Datetime erwartet einen Unix-Epoch-Timestamp im
<String>. -
Listen werden nicht in
<WFVar>gekapselt:<List><ListItem Id="GUID" Selection="0"><STRING>WERT</STRING></ListItem></List>(Member-Tag in Großschreibung:<STRING>). -
Records verwenden
<Record><Member Name="…">…</Member></Record>und müssen jedes vom Record-Typ deklarierte Member setzen.
7. Hinweise zur Server-Antwort
-
ClientTypeIdist serverseitig zwingend genau eine GUID. Ein leerer Wert wird mitGUID 'ClientTypeId' is not setabgewiesen, eine Mehrfachliste als ungültige GUID — es gibt keinen „alle Clients"-Wert (empirisch gegen den enaio®-Testserver verifiziert). -
wfm.StartProcesslegt übergebene Dokumente immer in den Workspace der Workflow-Akte.
8. Siehe auch
-
client_types() — Client-Typen ermitteln
-
workflow_list() — startbare Workflows ermitteln
-
workflow_by_name() — Workflow per Modellname auflösen
-
workflow_model_by_name() — typisierte Variablen-Modelle