Коллеги, добрый день!
Не удается вызвать бизнес-процесс из С# кода.
Из сценария пользователя в бизнес-процессе происходит вызов другого бизнес-процесса. Код бизнес-процесса следующий
var userConnection = GetUserConnection>("UserConnection");
var caseStatusNew = "AE5F2F10-F46B-1410-FD9A-0050BA5D6C38";
var caseStatusInWork = "7E9F1204-F46B-1410-FB9A-0050BA5D6C38";
using (DBExecutor dbExecutor = userConnection.EnsureDBConnection()) {
Select caseDeadlineResponseSelect = new Select(userConnection).
Column("Case", "id").As("CaseId").
From("Case").
Where("Case", "StatusId").IsEqual(Column.Parameter(caseStatusNew)) as Select;
using (var dr = caseDeadlineResponseSelect.ExecuteReader(dbExecutor)) {
while (dr.Read())
{
var caseId = dr.GetColumnValue("CaseId").ToString();
var utils = new TestUtils();
utils.SendReminding(Guid.Parse(caseId.ToString()));
Update updateCase = new Update(userConnection, "Case").
Set("NrbSentDeadlineResponse", Column.Parameter(true)).
Where("Id").IsEqual(Column.Parameter(caseId)) as Update;
updateCase.Execute();
}
}
}
return true;
Для вызова бизнес-процесса был реализован отдельный модуль исходного кода, со следующим наполнением:
namespace Terrasoft.Configuration.UsrUtilities
{
using System;
using Core;
using Common;
using System.Web;
using Core.Process;
public class TestUtils
{
private UserConnection _userConnection;
public UserConnection userConnection
{
get
{
if (_userConnection != null)
{
return _userConnection;
}
_userConnection = HttpContext.Current.Session["UserConnection"] as UserConnection;
if (_userConnection != null)
{
return _userConnection;
}
var appConnection = (AppConnection)HttpContext.Current.Application["AppConnection"];
_userConnection = appConnection.SystemUserConnection;
if (_userConnection != null)
{
return _userConnection;
}
return null;
}
set
{
_userConnection = value;
}
}
private void Authenticate()
{
if (userConnection == null)
{
throw new System.Security.Authentication.AuthenticationException();
}
}
public TestUtils()
{
Authenticate();
}
public void SendReminding(Guid caseId)
{
var processSchemaManager = (ProcessSchemaManager) userConnection.GetSchemaManager(@"ProcessSchemaManager");
var processSchema = processSchemaManager.GetInstanceByName(@"UsrSendDeadlineEmail");
var process = processSchema.CreateProcess(_userConnection);
process.SetPropertyValue(@"CaseId", caseId);
process.Execute(_userConnection);
}
}
}
Сохранение и компиляция кода происходит успешно. Но при вызове данного бизнес-процесса в журнале процесса, данный процесс отображается с ошибкой:
System.NotImplementedException: Метод или операция не реализована. в Terrasoft.Core.Process.ProcessSchema.CreateProcess(UserConnection userConnection) в Terrasoft.Configuration.NrbUtilities.NorbitUtils.SendReminding(Guid caseId) в Terrasoft.Core.Process.NrbCheckTimingMethodsWrapper.ScriptTask2Execute(ProcessExecutingContext context) в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)