Вызов процесса из сервиса

Колеги, доброе время суток всем!

У меня вопрос такого плана происходит вызов процесса из сервиса и его отработка не совсем корректно отрабатывает в разных случаях.

Ситуация следующая, когда из postman стреляю пост запросом в сервис creatio, то внутри вызывается процесс и все ок отрабатывает. Хочу заметить пользуюсь вот такой ссылкой https://адресс-приложения/0/rest/NameService/MethodService, использую базовую авторизацию - логин и пароль беру из Системные настройки.

И в этом случае все ок. Процесс все предназначенные ему действия выполняет и ничего не пропускает.

Но как только происходит вызов сервиса по системам интеграции через OData, внутри него запуск процесса происходит, а сам процесс отрабатывает так как будто ему чего-то не хватает, он часть действий выполняет, а часть пропускает(просто к ним не прикасается, допустим при переходе по DCM не создаются активности на следующем шаге).

Помогите разобраться в чем загвоздка может быть.

Вот код вызова процесса из сервиса:

#region Class : NameService

[ServiceContract]

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

    public class NameService

    {

        #region Properties : Protected

        protected UserConnection UserConnection

        {

            get

            {

                return _userConnection ??

                       ((Func)

                       (() =>

                       {

                           AppConnection app = HttpContext.Current.Application["AppConnection"] as AppConnection;

                           _userConnection = app.SystemUserConnection;

                           return _userConnection;

                       }))();

            }

            set => _userConnection = value;

        }

........

#endregion

#region Methods : Public

        [OperationContract]

        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare,

            ResponseFormat = WebMessageFormat.Json)]

        public BaseResponse MethodService(NameRequestModel requestModel)

        {

try

            {

                var response = NameServiceFactory.NameClassWrapper(UserConnection)

                    .Execute(requestModel);

...........

}

        #endregion

    }

    #endregion

-------------------------------------------------------------------------------------------------------------------------

#region Class : NameClassWrapper

    public class NameClassWrapper: IBaseNameIntegrationWrapper

    {      

#region Properties : Protected

....

 protected UserConnection UserConnection { get; }

        #endregion

        #region Constructor

        public NameClassWrapper(UserConnection userConnection)

        {

            this.UserConnection = userConnection;

        }

      #endregion

#region Methods : Protected

........

 protected virtual void ExecuteNameProcess(Guid caseId){

            ProcessSchema schema = UserConnection.ProcessSchemaManager.GetInstanceByName("NameProcess");

            bool canUseFlowEngine = ProcessSchemaManager.GetCanUseFlowEngine(UserConnection, schema);

            if (canUseFlowEngine)

            {

                var flowEngine = new FlowEngine(UserConnection);

                var param = new Dictionary ();

                param["CaseId"] = caseId.ToString();

                flowEngine.RunProcess(schema, param);

            }

            else

            {

                Process process = schema.CreateProcess(UserConnection);

                process.SetPropertyValue("CaseId", caseId);

                process.Execute(UserConnection);

            }

        }

......

#endregion

    }

    #endregion

----------------------------------------------------------------------------------------------------------------------

Нравится

5 комментариев

Добрый день.

 

Попробуйте отладить процесс и посмотреть, что происходит на каждом из этапов, особенно, на тех шагах, которые пропускаются.

это не в UserConnection вопрос?

Андрей, очень может быть. Особенно часто на невозможность работы в фоновом режиме жаловались на механизмы генерации печатных форм и подобное. Например, тут и тут.

По идее, если будет null вместо UserConnection, то должно не просто пропускать, а выдать ошибку в скрипте, которая со всем стеком запишется в логи на сервере. Проверьте, что там пишется при неудачном выполнении. Может, и не UserConnection, но всё равно по стеку выяснится, чего не хватает.

в том и прикол что частично процесс отрабатывает, а частично нет, но там скриптов как таковых нету, может они генерируются под капотом.? Там есть блоки на вычитку и на запись и еще одно исключающее или, процесс не компилируемый. И если б в UserConnection был null, он бы совсем не запустился, но запуск есть и видно это в журнале процессов, но как то странно он себя ведет или это система так себя ведет по отношению к работе процесса. Самое удивительно, что два разных вызова сервиса происходит один из постмена, а второй из внешней интеграционной системы. При вызове сервиса из постмена процесс отрабатывает супер, при вызове  сервиса из внешней интеграцинной системы процесс отрабатывает частично. Адрес в урле один и тот же.

А тогда вопрос как может авторизация влиять на работу процесса? Ведь он вызывается из сервиса и если б не было прав на вызов сервиса, то сам сервис не вызвался б. Но вызов и сервиса, и так же из под него процесса происходит в двух случаях(постмен и внешняя интеграционная система).

В ошибках ещё не смотрели?

Показать все комментарии