Пример #1
0
 public virtual ReturnInfo <WorkflowBasicInfo> Apply(FlowInitInfo <FormT> flowInit)
 {
     return(Execute(flowInit, () =>
     {
         return WorkflowInitService.Apply(flowInit);
     }));
 }
Пример #2
0
        public void ExportBillDemand(ApiCommandArgument arg)
        {
            AuthenticationService.Authenticate(arg.SecurityToken);

            if (!AuthenticationService.IsAuthenticated())
            {
                return;
            }

            if (!AuthorizationService.IsAllowedToExecuteCommand(arg.InstanceId, WorkflowCommandType.Export))
            {
                return;
            }

            FireCommandWithWaiting(arg, delegate(ApiCommandArgument arg1)
            {
                using (var sync = GetWorkflowSync(arg1))
                {
                    WorkflowInitService.RaiseExport(arg1.InstanceId);
                    sync.WaitHandle.WaitOne(60000);
                }
            });

            var state = WorkflowStateService.GetCurrentState(arg.InstanceId);

            if (state == WorkflowState.BillDemandInAccountingWithExport)
            {
                var errorMessage = WorkflowParcelService.GetAndRemoveMessage(arg.InstanceId);

                throw new FaultException <BaseFault>(new BaseFault((int)ErrorCodes.BillDemandUploadError),
                                                     new FaultReason(string.IsNullOrEmpty(errorMessage) ?
                                                                     "Не удалось выгрузить расходный документ. Попробуйте провести данную операцию еще раз. Если сообщение будет повторятся, обратитесь к Администратору." : errorMessage));
            }
        }
Пример #3
0
        public void SetPaidStatus(BillDemandPaidApiCommandArgument arg)
        {
            AuthenticationService.Authenticate(arg.SecurityToken);

            if (!AuthenticationService.IsAuthenticated())
            {
                return;
            }

            if (!AuthorizationService.IsAllowedToExecuteCommand(arg.InstanceId, WorkflowCommandType.SetPaidStatus))
            {
                return;
            }

            FireCommandWithWaiting(arg, delegate(BillDemandPaidApiCommandArgument arg1)
            {
                using (var sync = GetWorkflowSync(arg1))
                {
                    WorkflowInitService.RaiseSetPaidStatus(arg1.InstanceId,
                                                           arg1.PaymentDate,
                                                           arg1.DocumentNumber);
                    sync.WaitHandle.WaitOne(4000);
                }
            });
        }
Пример #4
0
        public void StartProcessing(ApiCommandArgument arg)
        {
            AuthenticationService.Authenticate(arg.SecurityToken);

            if (!AuthenticationService.IsAuthenticated())
            {
                return;
            }

            if (!AuthorizationService.IsAllowedToExecuteCommand(arg.InstanceId, WorkflowCommandType.StartProcessing))
            {
                return;
            }

            WorkflowInitService.CreateWorkflowIfNotExists(arg.InstanceId);

            using (var sync = GetWorkflowSync(arg))
            {
                sync.WaitHandle.WaitOne(4000);
            }

            FireCommandWithWaiting(arg, delegate(ApiCommandArgument arg1)
            {
                using (var sync = GetWorkflowSync(arg1))
                {
                    WorkflowInitService.RaiseStartProcessing(arg1.InstanceId);
                    sync.WaitHandle.WaitOne(4000);
                }
            });
        }
Пример #5
0
        public virtual ReturnInfo <WorkflowBasicInfo> Apply(FlowInitInfo <FormT> flowInit)
        {
            var comData = HttpContext.CreateCommonUseData(ComDataFactory, functionCodes: FunCodeDefine.APPLY);

            return(Execute(flowInit, () =>
            {
                return WorkflowInitService.Apply(flowInit, comData);
            }));
        }
Пример #6
0
        public void SetWorkflowState(SetStateApiCommandArgument arg)
        {
            if (CheckNotAllowToSetState(arg))
            {
                return;
            }

            WorkflowInitService.SetWorkflowState(arg.InstanceId, arg.StateNameToSet, arg.Comment);
        }
Пример #7
0
 private void RaiseSetStateAction(MultipleExportState multipleExportState)
 {
     FireCommandWithWaiting(multipleExportState.InstanceId, delegate(Guid arg1)
     {
         using (var sync = GetWorkflowSync(arg1))
         {
             WorkflowInitService.SetWorkflowState(arg1, multipleExportState.Identity, multipleExportState.StateToSet, multipleExportState.Comment);
             sync.WaitHandle.WaitOne(60000);
         }
     }, arg2 => arg2);
 }
Пример #8
0
        private void TryRaiseCommand(MultipleExportState multipleExportState)
        {
            if (multipleExportState.CommandToExecute != WorkflowCommandType.SetWorkflowState &&
                !multipleExportState.AuthorizationService.IsAllowedToExecuteCommand(multipleExportState.InstanceId,
                                                                                    multipleExportState.CommandToExecute))
            {
                AddErrorResult(multipleExportState);
            }
            else
            {
                try
                {
                    switch (multipleExportState.CommandToExecute)
                    {
                    case WorkflowCommandType.Sighting:
                        RaiseAction(multipleExportState, WorkflowInitService.RaiseSighting);
                        break;

                    case WorkflowCommandType.StartProcessing:
                        WorkflowInitService.CreateWorkflowIfNotExists(multipleExportState.InstanceId);
                        using (var sync = GetWorkflowSync(multipleExportState.InstanceId))
                        {
                            sync.WaitHandle.WaitOne(4000);
                        }
                        RaiseAction(multipleExportState, WorkflowInitService.RaiseStartProcessing);
                        break;

                    case WorkflowCommandType.Denial:
                        RaiseActionWithComment(multipleExportState, WorkflowInitService.RaiseDenial);
                        break;

                    case WorkflowCommandType.Rollback:
                        RaiseActionWithComment(multipleExportState, WorkflowInitService.RaiseRollback);
                        break;

                    case WorkflowCommandType.SetWorkflowState:
                        RaiseSetStateAction(multipleExportState);
                        break;

                    default:
                        throw new ActionNotSupportedException();
                    }
                }
                catch (Exception ex)
                {
                    AddErrorResult(multipleExportState);
                    throw;
                }

                AddOkResult(multipleExportState);
            }
        }
Пример #9
0
 private void RaiseExportBillDemand(MultipleExportBillDemandState multipleExportBillDemandState)
 {
     FireCommandWithWaiting(multipleExportBillDemandState.InstanceId, delegate(Guid arg1)
     {
         using (
             var sync =
                 GetWorkflowSync(
                     arg1))
         {
             WorkflowInitService.
             RaiseExport(arg1, multipleExportBillDemandState.Identity);
             sync.WaitHandle.WaitOne
                 (60000);
         }
     }, arg2 => arg2);
 }
Пример #10
0
        public void Rollback(ApiCommandArgument arg)
        {
            AuthenticationService.Authenticate(arg.SecurityToken);

            if (!AuthenticationService.IsAuthenticated())
            {
                return;
            }

            if (!AuthorizationService.IsAllowedToExecuteCommand(arg.InstanceId, WorkflowCommandType.Rollback))
            {
                return;
            }

            FireCommandWithWaiting(arg, delegate(ApiCommandArgument arg1)
            {
                using (var sync = GetWorkflowSync(arg1))
                {
                    WorkflowInitService.RaiseRollback(arg1.InstanceId, arg1.Comment);
                    sync.WaitHandle.WaitOne(4000);
                }
            });
        }