wf:sync_async_run_workflow
Синхронный и асинхронный вызов WorkFlow
Для вызова WF в синхронном или асинхронном режиме необходимо использовать стандартные для Siebel Business Service
Синхронное
try { svcServerRequest = TheApplication().GetService("Synchronous Server Requests"); psWorkflowChildIn = TheApplication().NewPropertySet(); psWorkflowIn = TheApplication().NewPropertySet(); psWorkflowOut = TheApplication().NewPropertySet(); psWorkflowChildIn.SetProperty("ProcessName", "My Workflow Process"); psWorkflowChildIn.SetProperty("inputParamName", "1-QWERTY"); psWorkflowIn.SetProperty("Component", "WfProcMgr"); psWorkflowIn.AddChild(psWorkflowChildIn); svcServerRequest.InvokeMethod("SubmitRequest", psWorkflowIn, psWorkflowOut); } catch(e) { TheApplication().RaiseErrorText(e.toString()); } finally { svcServerRequest = null; }
Асинхронное
При асинхронном вызове происходит создание задачи на сервере, далее задача будет выполнена в порядке очереди.
Важно понимать что создание и обновление записи будет происходить от системного пользователя. В результате поля CREATED_BY и UPDATED_BY будут иметь Id системного пользователя, а не пользователя инициирующего выполнение. IP адрес машины 127.0.0.1
var svcServerRequest; var psWorkflowChildIn; var psWorkflowIn; var psWorkflowOut; try{ svcServerRequest = TheApplication().GetService("Asynchronous Server Requests"); psWorkflowChildIn = TheApplication().NewPropertySet(); psWorkflowIn = TheApplication().NewPropertySet(); psWorkflowOut = TheApplication().NewPropertySet(); psWorkflowChildIn.SetProperty("ProcessName", "My Workflow Process"); psWorkflowChildIn.SetProperty("inputParamName", "1-QWERTY"); psWorkflowIn.SetProperty("Component", "WfProcMgr"); psWorkflowIn.AddChild(psWorkflowChildIn); svcServerRequest.InvokeMethod("SubmitRequest", psWorkflowIn, psWorkflowOut); } catch(e) { TheApplication().RaiseErrorText(e.toString()); } finally { svcServerRequest = null; }
Вызов как Business service
var svcWorkflow; var psWFInputs; var psWFOutputs; try { svcWorkflow = TheApplication().GetService("Workflow Process Manager"); psWFInputs = TheApplication().NewPropertySet(); psWFOutputs = TheApplication().NewPropertySet(); psWFInputs.SetProperty("ProcessName", "My Workflow Process"); svcWorkflow.InvokeMethod("RunProcess", psWFInputs, psWFOutputs); } catch(e) { TheApplication().RaiseErrorText(e.toString()); } finally { svcWorkflow = null; }
— wiki_admin 2019/09/18 09:35 eScript
wf/sync_async_run_workflow.txt · Востаннє змінено: 2022/05/23 15:26 повз 127.0.0.1