Инструменты пользователя

Инструменты сайта


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

wf/sync_async_run_workflow.txt · Последние изменения: 2019/10/25 10:35 — wiki_admin