コード例 #1
0
        /// <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));
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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 }"));
            }
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
        private GenericResponse <string> DoTask(ProcesoDetalle procesoDetalle, SecurityContext security)
        {
            TaskManager taskManager = new TaskManager();

            return(taskManager.RunTask(procesoDetalle, security));
        }
コード例 #6
0
        /// <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));
        }