public void WorkflowContinue()
        {
            var service = GetService();

            var  context    = new WorkflowContextData(Guid.Empty, UserId);
            Guid userAction = Guid.NewGuid();

            service.WorkflowContinueWithUserAction(context, userAction);
        }
        public WorkflowContextData WorkflowContinueWithUploadFile(WorkflowContextData contextData, byte[] uploadData, string fileName)
        {
            var context = new WorkflowContext(contextData, Provider);

            if (contextData != null)
            {
                context.UploadFileReturn(uploadData, fileName);
            }

            return(WorkflowEngine.Continue(contextData));
        }
        /// <summary>
        /// Продолжение выполнения бизнес-процесса
        /// </summary>
        /// <param name="contextData">Контекст выполнения бизнес-процесса</param>
        /// <returns>Контекст выполнения бизнес-процесса</returns>
        public WorkflowContextData WorkflowContinue(WorkflowContextData contextData)
        {
            var context = new WorkflowContext(contextData, Provider);

            if (contextData != null)
            {
                context.ShowReturn(null);
            }

            return(WorkflowEngine.Continue(contextData));
        }
        /// <summary>
        /// Продолжение выполнения бизнес-процесса с учетом документа
        /// </summary>
        /// <param name="contextData">Контекст выполнения бизнес-процесса</param>
        /// <param name="document">Документ</param>
        /// <returns>Контекст выполнения бизнес-процесса</returns>
        public WorkflowContextData WorkflowContinueWithDocument(WorkflowContextData contextData, Doc document)
        {
            if (contextData != null)
            {
                var context = new WorkflowContext(contextData, Provider);
                contextData.SelectedDocument = document;
                context.ShowSelectReturn(document != null ? document.Id : Guid.Empty);
            }

            return(WorkflowEngine.Continue(contextData));
        }
        /// <summary>
        /// Продолжение выполнения бизнес-процесса с учетом документа
        /// </summary>
        /// <param name="contextData">Контекст выполнения бизнес-процесса</param>
        /// <param name="docId">Идентификатор документа</param>
        /// <returns>Контекст выполнения бизнес-процесса</returns>
        public WorkflowContextData WorkflowContinueWithDocumentId(WorkflowContextData contextData, Guid docId)
        {
            var context = new WorkflowContext(contextData, Provider);

            if (contextData != null)
            {
                context.ShowSelectReturn(docId);
            }

            return(WorkflowEngine.Continue(contextData));
        }
        /// <summary>
        /// Продолжение выполнения бизнес-процесса с учетом пользовательского действия
        /// </summary>
        /// <param name="contextData">Контекст выполнения бизнес-процесса</param>
        /// <param name="userAction">Идентификатор пользовательского действия</param>
        /// <returns>Контекст выполнения бизнес-процесса</returns>
        public WorkflowContextData WorkflowContinueWithUserAction(WorkflowContextData contextData, Guid userAction /*, Guid? forDocId */)
        {
            var context = new WorkflowContext(contextData, Provider);

            if (contextData != null)
            {
                context.ShowReturn(userAction);
            }

            return(WorkflowEngine.Continue(contextData));
        }
Exemple #7
0
        public ExternalProcessExecuteResult Launch(string serviceUrl, string userName, string password, string processName,
                                                   WorkflowContextData contextData)
        {
            var binding = new WSHttpBinding(SecurityMode.Message);

            binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
            binding.MessageEncoding        = WSMessageEncoding.Mtom;
            binding.SendTimeout            = new TimeSpan(0, 10, 0);
            binding.OpenTimeout            = new TimeSpan(0, 10, 0);
            binding.MaxReceivedMessageSize = 1024 * 1024 * 1024;

            var uri      = new Uri(serviceUrl);
            var endpoint = //new EndpointAddress(serviceUrl);
                           new EndpointAddress(uri, EndpointIdentity.CreateDnsIdentity("localhost"));
            var channelFactory = new ChannelFactory <IWorkflowManager>(binding, endpoint);

            if (channelFactory.Credentials != null)
            {
                channelFactory.Credentials.UserName.UserName = userName;
                channelFactory.Credentials.UserName.Password = password;

                channelFactory.Credentials.ServiceCertificate.SetDefaultCertificate(
                    StoreLocation.LocalMachine, StoreName.TrustedPeople, X509FindType.FindBySubjectName, "localhost");
            }

            IWorkflowManager client = null;

            try
            {
                client = channelFactory.CreateChannel();
                var result = client.WorkflowGateExecute(processName, contextData);

                ((ICommunicationObject)client).Close();

                return(result);
            }
            catch (Exception e)
            {
                throw;
            }

            throw new ApplicationException(String.Format("Не могу установить соединение для {0}!", serviceUrl));
        }
Exemple #8
0
        public ExternalProcessExecuteResult Launch(string serviceUrl, string userName, string password, string processName,
                                                   WorkflowContextData contextData)
        {
            var binding = GetBinding();

            var uri = new Uri(serviceUrl);
            //var endpoint = new EndpointAddress(serviceUrl);
            var endpoint       = new EndpointAddress(uri, EndpointIdentity.CreateDnsIdentity("localhost"));
            var channelFactory = new ChannelFactory <IWorkflowManager>(binding, endpoint);

            if (channelFactory.Credentials != null)
            {
                channelFactory.Credentials.UserName.UserName = userName;
                channelFactory.Credentials.UserName.Password = password;

                channelFactory.Credentials.ServiceCertificate.SetDefaultCertificate(
                    StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "localhost");
            }

            IWorkflowManager client = null;

            try
            {
                client = channelFactory.CreateChannel();
                var result = client.WorkflowGateExecute(processName, contextData);

                ((ICommunicationObject)client).Close();

                return(result);
            }
            catch (Exception e)
            {
                if (client != null)
                {
                    ((ICommunicationObject)client).Abort();
                }
                var fileName = Logger.GetLogFileName("ProcessLaunher");
                Logger.OutputLog(fileName, e, "ProcessLauncher.Launch");
            }

            throw new ApplicationException(String.Format("Не могу установить соединение для {0}!", serviceUrl));
        }
Exemple #9
0
        /// <summary>
        /// Формирует выходной документ из шаблона на основе документа и данных рабочего контекста
        /// </summary>
        /// <param name="document">Документ, из которого берутся данные для подстановки в шаблон</param>
        /// <param name="contextData">Контекст бизнес процесса, из которого берутся данные для подстановки в шаблон</param>
        /// <param name="fileName">Наименование файла - шаблона выходного документа в форматах (Excel, PDF)</param>
        /// <returns>Массив двоичных данных представляющих собой выходной файл</returns>
        public byte[] GenerateFromTemplate(Doc document, WorkflowContextData contextData, string fileName)
        {
            var context = new WorkflowContext(contextData, Provider);

            var generator = ReportGeneratorProvider.FindForTemplate(fileName);

            if (generator != null)
            {
                using (var stream = generator.Generate(document, fileName, context))
                {
                    using (var buf = new MemoryStream())
                    {
                        stream.Position = 0;
                        stream.CopyTo(buf);
                        return(buf.GetBuffer());
                    }
                }
            }
            throw new ApplicationException(String.Format("Неизвестный тип файла \"{0}\"", fileName));
        }
Exemple #10
0
        protected void Run(IWorkflowManager workflowManager)
        {
            var param = new Dictionary <string, object>();

            if (DocumentId != null)
            {
                /*var document = FindDocumentById((Guid) DocumentId);
                 *
                 * if (document != null)
                 *  param.Add("InputDocument", document);*/

                param.Add("InputDocumentId", DocumentId);
            }
            if (MenuId != null)
            {
                param.Add("InputAttributeId", MenuId);
            }

            ProcessContext = workflowManager.WorkflowExecute(ProcessId, param);
        }
Exemple #11
0
        public ContextState FindProcessContextState(WorkflowContextData context)
        {
            var prev = Previous;

            while (prev != null)
            {
                if (prev is IProcessContextState)
                {
                    var processContext = ((IProcessContextState)prev).GetWorkflowContext();

                    if (processContext.ParentProcessId == context.ParentProcessId)
                    {
                        return(prev);
                    }
                }

                prev = prev.Previous;
            }
            return(null);
        }
Exemple #12
0
 public WorkflowContextData ContinueWithUploadFile(byte[] fileData, string fileName, IWorkflowManager workflowManager)
 {
     return(ProcessContext = workflowManager.WorkflowContinueWithUploadFile(ProcessContext, fileData, fileName));
 }
 public ExternalProcessExecuteResult WorkflowGateExecute(string gateName, WorkflowContextData contextData)
 {
     return(WorkflowEngine.RunGate(gateName, contextData));
 }
Exemple #14
0
        public void TestExternalProcLaunch()
        {
            var data = new WorkflowContextData();

            Launch(TjTestNrszServiceUtl, "d", "123", "FindPersons", data);
        }
Exemple #15
0
 public WorkflowContextData Continue(IWorkflowManager workflowManager)
 {
     return(ProcessContext = workflowManager.WorkflowContinue(ProcessContext));
 }
Exemple #16
0
 public WorkflowContextData ContinueWithDocument(Doc document, IWorkflowManager workflowManager)
 {
     return(ProcessContext = workflowManager.WorkflowContinueWithDocument(ProcessContext, document));
 }
Exemple #17
0
 public WorkflowContextData ContinueWithDocument(Guid docId, IWorkflowManager workflowManager)
 {
     return(ProcessContext = workflowManager.WorkflowContinueWithDocumentId(ProcessContext, docId));
 }
Exemple #18
0
 public WorkflowContextData ContinueWithUserAction(Guid actionId, IWorkflowManager workflowManager)
 {
     return(ProcessContext = workflowManager.WorkflowContinueWithUserAction(ProcessContext, actionId));
 }
Exemple #19
0
 public Doc DocumentInit(Doc doc, WorkflowContextData data)
 {
     return(DocRepo.InitDocFrom(doc, data));
 }
 /// <summary>
 /// Продолжение выполнения процесса
 /// </summary>
 /// <param name="contextData">Контекст процесса</param>
 /// <returns>Результат выполения процесса (промежуточный, или конечный)</returns>
 public WorkflowContextData Continue(WorkflowContextData contextData)
 {
     return(new WorkflowContextData(Guid.Empty, UserId));
 }
 public GenerateTemplate(IContext context, ContextState previous, string fileName, WorkflowContextData processContext)
     : base(context, previous)
 {
     FileName       = fileName;
     ProcessContext = processContext;
 }