示例#1
0
        public string StartProcessInstance(string processDefinitionKey, string businessKey, Dictionary <string, object> variables)
        {
            var http = helper.HttpClient();

            var request = new CompleteRequest();

            request.Variables   = CamundaClientHelper.ConvertVariables(variables);
            request.BusinessKey = businessKey;



            var requestContent = new StringContent(JsonConvert.SerializeObject(request, new JsonSerializerSettings {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            }), Encoding.UTF8, CamundaClientHelper.CONTENT_TYPE_JSON);
            var response = http.PostAsync("process-definition/key/" + processDefinitionKey + "/start", requestContent).Result;

            if (response.IsSuccessStatusCode)
            {
                var processInstance = JsonConvert.DeserializeObject <ProcessInstance>(response.Content.ReadAsStringAsync().Result);
                return(processInstance.Id);
            }
            else
            {
                var errorMsg = response.Content.ReadAsStringAsync();
                var error    = string.Concat(response.StatusCode.GetHashCode(), "-", errorMsg.Result);
                return(error);
                //throw new EngineException(response.ReasonPhrase);
            }
        }
        public string StartProcessInstance(string processDefinitionKey, string businessKey, Dictionary <string, object> variables)
        {
            var http = helper.HttpClient("process-definition/key/" + processDefinitionKey + "/start");

            var request = new CompleteRequest();

            request.Variables   = CamundaClientHelper.ConvertVariables(variables);
            request.BusinessKey = businessKey;

            var requestContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, CamundaClientHelper.CONTENT_TYPE_JSON);
            var response       = http.PostAsync("", requestContent).Result;

            if (response.IsSuccessStatusCode)
            {
                var processInstance = JsonConvert.DeserializeObject <ProcessInstance>(response.Content.ReadAsStringAsync().Result);

                http.Dispose();
                return(processInstance.Id);
            }
            else
            {
                //var errorMsg = response.Content.ReadAsStringAsync();
                http.Dispose();
                throw new EngineException(response.ReasonPhrase);
            }
        }
示例#3
0
        public string StartProcessInstance(string processDefinitionKey, string businessKey, Dictionary <string, object> variables, IDictionary <string, Action <IDictionary <string, object> > > events)
        {
            var http = helper.HttpClient();

            var request = new CompleteRequest();

            request.Variables   = CamundaClientHelper.ConvertVariables(variables);
            request.BusinessKey = businessKey;

            var requestContent = new StringContent(JsonConvert.SerializeObject(request, new JsonSerializerSettings {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            }), Encoding.UTF8, CamundaClientHelper.CONTENT_TYPE_JSON);
            var response = http.PostAsync("process-definition/key/" + processDefinitionKey + "/start", requestContent).Result;

            if (response.IsSuccessStatusCode)
            {
                var processInstance = JsonConvert.DeserializeObject <Dto.ProcessInstance>(response.Content.ReadAsStringAsync().Result);

                this._userTasks.Add(processInstance.Id, null);

                if (events != null)
                {
                    foreach (var evt in events)
                    {
                        var externalTask = GetExternalTaskByTopicName(evt.Key);
                        if (externalTask != null)
                        {
                            if (externalTask.Events.ContainsKey(processInstance.Id))
                            {
                                var list_evt = externalTask.Events[processInstance.Id] ?? new List <Action <IDictionary <string, object> > >();
                                list_evt.Add(evt.Value);
                                externalTask.Events[processInstance.Id] = list_evt;
                            }
                            else
                            {
                                externalTask.Events.Add(processInstance.Id, new List <Action <IDictionary <string, object> > >()
                                {
                                    evt.Value
                                });
                            }
                        }
                    }
                }

                return(processInstance.Id);
            }
            else
            {
                //var errorMsg = response.Content.ReadAsStringAsync();
                throw new EngineException(response.ReasonPhrase);
            }
        }
        public void Complete(string workerId, string externalTaskId, Dictionary <string, object> variablesToPassToProcess)
        {
            var http = helper.HttpClient("external-task/" + externalTaskId + "/complete");

            var request = new CompleteRequest();

            request.WorkerId  = workerId;
            request.Variables = CamundaClientHelper.ConvertVariables(variablesToPassToProcess);

            var requestContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, CamundaClientHelper.CONTENT_TYPE_JSON);
            var response       = http.PostAsync("", requestContent).Result;

            http.Dispose();
            if (!response.IsSuccessStatusCode)
            {
                throw new EngineException("Could not complete external Task: " + response.ReasonPhrase);
            }
        }
示例#5
0
        public async Task <TaskResponse> StartProcessInstanceAsync(string processDefinitionKey, Dictionary <string, object> variables, string topicName)
        {
            var result = new TaskResponse();

            var request = new CompleteRequest();

            request.Variables = CamundaClientHelper.ConvertVariables(variables);
            var response = await helper.PostAsync(string.Format("process-definition/key/{0}/start", processDefinitionKey), request);

            if (response.IsSuccessStatusCode)
            {
                var processInstance = JsonConvert.DeserializeObject <Dto.ProcessInstance>(response.Content.ReadAsStringAsync().Result);
                result.ProcessInstanceId = processInstance.Id;

                if (!string.IsNullOrEmpty(topicName))
                {
                    var externalTask = GetExternalTaskByTopicName(topicName);
                    if (externalTask != null)
                    {
                        var taskCompletionSource = new TaskCompletionSource <object>();
                        if (externalTask.CompletionSources.ContainsKey(processInstance.Id))
                        {
                            var list = externalTask.CompletionSources[processInstance.Id] ?? new List <TaskCompletionSource <object> >();
                            list.Add(taskCompletionSource);
                            externalTask.CompletionSources[processInstance.Id] = list;
                        }
                        else
                        {
                            externalTask.CompletionSources.Add(processInstance.Id, new List <TaskCompletionSource <object> > {
                                taskCompletionSource
                            });
                        }

                        result.Variables = await taskCompletionSource.Task;
                    }
                }

                return(result);
            }
            else
            {
                throw new EngineException(response.ReasonPhrase);
            }
        }
        public void Complete(string taskId, Dictionary <string, object> variables)
        {
            var http = helper.HttpClient();

            var request = new CompleteRequest();

            request.Variables = CamundaClientHelper.ConvertVariables(variables);

            var requestContent = new StringContent(JsonConvert.SerializeObject(request, new JsonSerializerSettings {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            }), Encoding.UTF8, CamundaClientHelper.CONTENT_TYPE_JSON);
            var response = http.PostAsync("task/" + taskId + "/complete", requestContent).Result;

            if (!response.IsSuccessStatusCode)
            {
                //var errorMsg = response.Content.ReadAsStringAsync();
                throw new EngineException(response.ReasonPhrase);
            }
        }
示例#7
0
 public HumanTaskService(CamundaClientHelper client)
 {
     this.helper = client;
 }
示例#8
0
 public RepositoryService(CamundaClientHelper helper)
 {
     this.helper = helper;
 }
 public BpmnWorkflowService(CamundaClientHelper client)
 {
     this.helper = client;
 }
示例#10
0
 public BpmnWorkflowService(CamundaClientHelper client, IDictionary <string, HumanTask> userTasks, IList <ExternalTaskWorker> workers)
 {
     this.helper     = client;
     this._userTasks = userTasks;
     this._workers   = workers;
 }
 public ProcessInstanceService(CamundaClientHelper client)
 {
     this.helper = client;
 }
 public ExternalTaskService(CamundaClientHelper client)
 {
     this.helper = client;
 }