====== Синхронный и асинхронный вызов WorkFlow ====== Для вызова WF в синхронном или асинхронном режиме необходимо использовать стандартные для [[bs:start|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 системного пользователя, а не пользователя инициирующего выполнение. [[bs:web_engine_http_txn|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; } --- //[[e.zhevak@gmail.com|wiki_admin]] 2019/09/18 09:35// {{tag>eScript}}