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

model_name

str

Workflow-Modellname (siehe workflow_by_name()).

user

str | ECMOrganisationObject | ECMOrganisationObjectRef

Workflow-Organisations-Benutzer.

client_type

str | ECMClientType

Client-Typ als ECMClientType, GUID oder Name. Pflichtparameter.

organisation

str | ECMOrganisation | None

None

Bei None wird die aktive Organisation verwendet.

include_internal

bool

False

Wenn True, werden auch interne (nicht-INOUT) Variablen exponiert. Standard: nur Eingangsvariablen.

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).

3.1. Typ-Mapping

Server-Typ Python-Typ

STRING

str

INTEGER_SAFE

int

FLOAT_SAFE

float

DATE_SAFE

date

DATETIME_SAFE

datetime

TIME_SAFE

time

ListType

list[…]

RecordType

verschachteltes Record-Modell (Model.record_model("<name>"))

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