====== Синхронный и асинхронный вызов 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}}