public List <ProcessDefinition> LoadProcessDefinitions(bool onlyLatest) { var http = helper.HttpClient(); HttpResponseMessage response = http.GetAsync("process-definition/?latestVersion=" + (onlyLatest ? "true" : "false")).Result; if (response.IsSuccessStatusCode) { var result = JsonConvert.DeserializeObject <IEnumerable <ProcessDefinition> >(response.Content.ReadAsStringAsync().Result); // Could be extracted into separate method call if you run a lot of process definitions and want to optimize performance foreach (ProcessDefinition pd in result) { http = helper.HttpClient(); HttpResponseMessage response2 = http.GetAsync("process-definition/" + pd.Id + "/startForm").Result; var startForm = JsonConvert.DeserializeObject <StartForm>(response2.Content.ReadAsStringAsync().Result); pd.StartFormKey = startForm.Key; } return(new List <ProcessDefinition>(result)); } else { return(new List <ProcessDefinition>()); } }
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 IList <ExternalTask> FetchAndLockTasks(FetchAndLockRequest fetchAndLockRequest) { var http = helper.HttpClient("external-task/fetchAndLock"); try { var requestContent = new StringContent(JsonConvert.SerializeObject(fetchAndLockRequest), Encoding.UTF8, CamundaClientHelper.CONTENT_TYPE_JSON); var response = http.PostAsync("", requestContent).Result; if (response.IsSuccessStatusCode) { var tasks = JsonConvert.DeserializeObject <IEnumerable <ExternalTask> >(response.Content.ReadAsStringAsync().Result); http.Dispose(); return(new List <ExternalTask>(tasks)); } else { http.Dispose(); throw new EngineException("Could not fetch and lock tasks: " + response.ReasonPhrase); } } catch (Exception ex) { http.Dispose(); Console.WriteLine(ex.Message); // TODO: Handle Exception, add back off return(new List <ExternalTask>()); } }
public List <ProcessDefinition> LoadProcessDefinitions(bool onlyLatest) { var http = helper.HttpClient("process-definition/"); HttpResponseMessage response = http.GetAsync("?latestVersion=" + (onlyLatest ? "true" : "false")).Result; if (response.IsSuccessStatusCode) { var result = response.Content.ReadAsAsync <IEnumerable <ProcessDefinition> >().Result; http.Dispose(); // Could be extracted into seperate method call if you run a lot of process definitions and want to optimize performance foreach (ProcessDefinition pd in result) { http = helper.HttpClient("process-definition/" + pd.id + "/startForm"); HttpResponseMessage response2 = http.GetAsync("").Result; var startForm = response2.Content.ReadAsAsync <StartFormDto>().Result; pd.startFormKey = startForm.key; http.Dispose(); } return(new List <ProcessDefinition>(result)); } else { http.Dispose(); return(new List <ProcessDefinition>()); } }
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); } }
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 IList <HumanTask> LoadTasks(IDictionary <string, string> queryParameters) { var queryString = string.Join("&", queryParameters.Select(x => x.Key + "=" + x.Value)); var http = helper.HttpClient(); var response = http.GetAsync("task/?" + queryString).Result; if (response.IsSuccessStatusCode) { // Successful - parse the response body var tasks = JsonConvert.DeserializeObject <IEnumerable <HumanTask> >(response.Content.ReadAsStringAsync().Result); return(new List <HumanTask>(tasks)); } else { //Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase); throw new EngineException("Could not load tasks: " + response.ReasonPhrase); } }
public IList <HumanTask> LoadTasks() { HttpClient http = helper.HttpClient("task/"); HttpResponseMessage response = http.GetAsync("").Result; if (response.IsSuccessStatusCode) { // Successful - parse the response body var tasks = response.Content.ReadAsAsync <IEnumerable <HumanTask> >().Result; http.Dispose(); return(new List <HumanTask>(tasks)); } else { //Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase); http.Dispose(); return(new List <HumanTask>()); } }
public string StartProcessInstance(String processDefinitionKey, Dictionary <string, object> variables) { HttpClient http = helper.HttpClient("process-definition/key/" + processDefinitionKey + "/start"); StartProcessInstanceRequest request = new StartProcessInstanceRequest(); request.variables = helper.convertVariables(variables); HttpResponseMessage response = http.PostAsJsonAsync("", request).Result; if (response.IsSuccessStatusCode) { var processInstance = response.Content.ReadAsAsync <ProcessInstance>().Result; http.Dispose(); return(processInstance.id); } else { var errorMsg = response.Content.ReadAsStringAsync(); http.Dispose(); throw new EngineException(response.ReasonPhrase); } }
public IEnumerable <Dto.ProcessInstance> GetInstances() { var http = helper.HttpClient(); var response = http.GetAsync(API).Result; if (response.IsSuccessStatusCode) { var result = JsonConvert.DeserializeObject <IEnumerable <Dto.ProcessInstance> >(response.Content.ReadAsStringAsync().Result); return(result); } else { throw new EngineException("Could not get ProcessInstances: " + response.ReasonPhrase); } }