workflow_model_by_name()
Liefert eine zur Laufzeit generierte, typisierte Modellklasse für die Eingangsvariablen
eines Workflows — konzeptionell analog zu ecm.dms.model_by_name. Der Workflow wird über
workflow_by_name() aufgelöst, sein Modell über
wfm.GetWorkflow gelesen und die Variablen-Schnittstelle (INOUT) auf native Python-Typen
abgebildet.
1. Signatur
-
Sync
-
Async
ecm.workflow.workflow_model_by_name(
model_name: str,
user: ECMOrganisationObjectIdLike,
client_type: str | ECMClientType,
organisation: str | ECMOrganisation | None = None,
*,
include_internal: bool = False,
) -> type[ECMWorkflowModel]
await ecm.workflow.workflow_model_by_name(
model_name: str,
user: ECMOrganisationObjectIdLike,
client_type: str | ECMClientType,
organisation: str | ECMOrganisation | None = None,
*,
include_internal: bool = False,
) -> type[ECMWorkflowModel]
2. Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
|
|
— |
Workflow-Modellname (siehe workflow_by_name()). |
|
|
— |
Workflow-Organisations-Benutzer. |
|
|
— |
Client-Typ als |
|
|
|
Bei |
|
|
|
Wenn |
3. Rückgabewert
Eine ECMWorkflowModel-Subklasse. Instanzen werden mit den Eingangsvariablen als
Keyword-Argumenten erzeugt; Werte werden als Attribute gelesen/gesetzt und über
to_variables() serialisiert (intern beim Start verwendet).
4. Fehler
-
ECMNotFoundException— kein Workflow mit diesem Modellnamen -
ECMWrongStateException— mehrere Workflows mit diesem Modellnamen
5. Beispiel
Model = ecm.workflow.workflow_model_by_name("test", user, "#OSECM_Client#")
record = Model.record_model("TestRecordVar")(
StringField="x", IntegerField=1, TimeField="08:00:00",
DateTimeField="1779365400", FloatField="2.5", StringListField=["inner"],
)
instance = Model(
StringVar="hallo",
IntegerVar=42,
StringListVar=["a", "b"],
TestRecordVar=record,
)
process_id = ecm.workflow.start_process(
user=user, workflow="test", client_type="#OSECM_Client#", variables=instance,
)
6. Benutzer per Login auflösen
Der user-Parameter ist die Workflow-Organisations-GUID (nicht der Security-Login). Mit
ecm.workflow.organisation_user_by_login(login, organisation=None) lässt sich diese aus dem
Login-Namen auflösen (case-insensitiv über das Login-Attribut; ECMNotFoundException bei
0, ECMWrongStateException bei mehreren Treffern):
user = ecm.workflow.organisation_user_by_login("root")
Model = ecm.workflow.workflow_model_by_name("test", user, "#OSECM_Client#")
7. Statische Modelle (Code-Generator)
Für statisches Typing / IDE-Vervollständigung lassen sich die Modelle als .py-Dateien
generieren — siehe ecm-generate-workflow-models.
8. Siehe auch
-
workflow_by_name() — Workflow auflösen
-
start_process() — Workflow mit Modell starten
-
ecm-generate-workflow-models — Modelle generieren