/// <summary> /// Instancia un proceso /// </summary> /// <param name="proceso">Objeto recibido por el proceso</param> /// <param name="processId">Id del proceso</param> /// <param name="security">Contexto de seguridad</param> /// <returns>Respuesta del proceso</returns> public GenericResponse <string> InstantiateProcess(ProcesoDetalle proceso, string processId, SecurityContext security) { try { var client = new RestClient(string.Concat(Ruta, "/bonita/API/bpm/process/", processId, "/instantiation")); var request = new RestRequest(Method.POST); request.AddHeader("X-Bonita-API-Token", security.XapiBonitaToken); request.AddHeader("JSESSIONID", security.SessionId); request.AddHeader("bonita.tenant", security.Tenant); request.AddCookie("bonita.tenant", security.Tenant); request.AddCookie("JSESSIONID", security.SessionId); request.AddCookie("X-Bonita-API-Token", security.XapiBonitaToken); request.AddHeader("Content-Type", "application/json"); request.AddHeader("Accept", "application/json"); request.AddJsonBody(proceso); IRestResponse response = client.Execute(request); if (response.StatusCode == HttpStatusCode.OK) { var content = JsonConvert.DeserializeObject <Case>(response.Content); return(Mapper <string> .MapGenericResponse(content.caseId, HttpStatusCode.OK, HttpStatusCode.OK.ToString(), string.Empty, string.Empty)); } else { return(Mapper <string> .MapGenericResponse(processId, HttpStatusCode.NotFound, HttpStatusCode.NotFound.ToString(), "Cant Instantiate Process", string.Empty)); } } catch (Exception ex) { return(Mapper <string> .MapGenericResponse("ERROR", HttpStatusCode.OK, HttpStatusCode.OK.ToString(), $"ERROR: { ex.Message }", string.Empty)); } }
public GenericResponse <string> RunTask(ProcesoDetalle processDetail) { try { RequestAuthorization requestAuthorization = new RequestAuthorization() { Password = Request.Headers.ToList().FirstOrDefault(x => x.Key == "pws").Value.ToString(), UserName = Request.Headers.ToList().FirstOrDefault(x => x.Key == "username").Value.ToString() }; var secure = this.Authorize(requestAuthorization); if (secure.Data.SessionId != null) { var done = this.DoTask(processDetail, secure.Data); this.CloseSession(secure.Data); return(done); } else { return(Mapper <string> .MapGenericResponse(string.Empty, HttpStatusCode.Unauthorized, HttpStatusCode.Unauthorized.ToString(), "Wrong username or password", "Verify credentials")); } } catch (Exception ex) { return(Mapper <string> .MapGenericResponse("ERROR", HttpStatusCode.OK, HttpStatusCode.OK.ToString(), $"ERROR: { ex.Message }", string.Empty)); } }
public GenericResponse <string> CreateProcess(ProcesoDetalle process) { try { RequestAuthorization requestAuthorization = new RequestAuthorization() { Password = Request.Headers.ToList().FirstOrDefault(x => x.Key == "pws").Value.ToString(), UserName = Request.Headers.ToList().FirstOrDefault(x => x.Key == "username").Value.ToString() }; var secure = this.Authorize(requestAuthorization); if (secure.Data.SessionId != null) { var proceso = this.FindProcess(process.NombreProceso, secure.Data); if (proceso.Data != null) { var instanciaId = this.InstantiateProcess(process, proceso.Data, secure.Data); this.CloseSession(secure.Data); return(instanciaId); } else { this.CloseSession(secure.Data); return(new GenericResponse <string>() { Data = "No se encontro el id del proceso" }); } } else { return(Mapper <string> .MapGenericResponse(string.Empty, HttpStatusCode.Unauthorized, HttpStatusCode.Unauthorized.ToString(), "Wrong username or password", "Verify credentials")); } } catch (Exception ex) { return(Mapper <string> .MapGenericResponse(string.Empty, HttpStatusCode.InternalServerError, HttpStatusCode.InternalServerError.ToString(), $"Error en la instanciación del proceso.", $"{ ex.Message }")); } }
public GenericResponse <string> RunTask(ProcesoDetalle processDetail, SecurityContext security) { try { var url = string.Concat(Ruta, "/bonita/portal/resource/taskInstance/", processDetail.NombreProceso, "/", processDetail.Version, "/", processDetail.NombreTarea, "/API/bpm/userTask/", processDetail.IdTarea, "/execution"); var client = new RestClient(url); var request = new RestRequest(Method.POST); request.AddHeader("X-Bonita-API-Token", security.XapiBonitaToken); request.AddHeader("JSESSIONID", security.SessionId); request.AddHeader("bonita.tenant", security.Tenant); request.AddCookie("bonita.tenant", security.Tenant); request.AddCookie("JSESSIONID", security.SessionId); request.AddCookie("X-Bonita-API-Token", security.XapiBonitaToken); IRestResponse response = client.Execute(request); if (response.StatusCode == System.Net.HttpStatusCode.OK || response.StatusCode == System.Net.HttpStatusCode.NoContent) { return(Mapper <string> .MapGenericResponse(processDetail.IdTarea, HttpStatusCode.OK, HttpStatusCode.OK.ToString(), "Tarea ejecutada correctamente", string.Empty)); } else { return(Mapper <string> .MapGenericResponse("-1", HttpStatusCode.OK, HttpStatusCode.OK.ToString(), "No se pudo ejecutar la tarea", string.Empty)); } } catch (Exception ex) { return(Mapper <string> .MapGenericResponse("-1", HttpStatusCode.OK, HttpStatusCode.OK.ToString(), $"ERROR: { ex.Message }", string.Empty)); } }
private GenericResponse <string> DoTask(ProcesoDetalle procesoDetalle, SecurityContext security) { TaskManager taskManager = new TaskManager(); return(taskManager.RunTask(procesoDetalle, security)); }
/// <summary> /// Instancia un proceso /// </summary> /// <param name="proceso">Objeto de la orden</param> /// <param name="idProceso">Id del proceso</param> /// <param name="security">Contexto de seguridad</param> /// <returns>Resultado de la operación</returns> private GenericResponse <string> InstantiateProcess(ProcesoDetalle proceso, string idProceso, SecurityContext security) { ProcessManager processManager = new ProcessManager(); return(processManager.InstantiateProcess(proceso, idProceso, security)); }