/// <summary> /// Recupera la ruta de un determinado workflow según un conjunto de políticas /// </summary> /// <param name="parameterValues"> /// Parameter[0] = código del workflow /// Parameter[1] = código del empleado que generó el workflow /// Parameter[2...] = políticas /// </param> /// <returns>ruta, secuencia de "grupo de roles" tales como: 1;12;14;11</returns> public static string ObtenerRuta(params object[] parameterValues) { string politicas = ""; int PARAMETROS_FIJOS = 3; if (parameterValues == null || parameterValues.Length < PARAMETROS_FIJOS) { return(null); } for (int i = 2, j = parameterValues.Length; i < j; i++) { politicas += i + 1 < j ? parameterValues[i].ToString().Trim() + ";" : parameterValues[i].ToString().Trim(); } string xmlContent = ""; if (politicas != "") { int workflowId = Convert.ToInt32(parameterValues[0]); // código del workflow int staffId = Convert.ToInt32(parameterValues[1]); // quien origino el workflow ArrayList rutas = WFPolitica.ObtenerRuta(workflowId, politicas, staffId); if (rutas != null) { // for(int i = 0, j = rutas.Count; i < j; i++) // { // xmlContent += rutas[i].ToString(); // } xmlContent = rutas[0].ToString(); } else { return(null); // throw new Exception("No se pudo recuperar la ruta con las políticas establecidas"); } } return(xmlContent); }
public static ArrayList ObtenerPoliticasPorWorkflowId(int workflowId) { ArrayList arrPoliticas = new ArrayList(); DataSet ds = SqlHelper.ExecuteDataset(ESSeguridad.FormarStringConexion(), Queries.WF_ObtenerPoliticasPorWorkflowId, workflowId); foreach (DataRow r in ds.Tables[0].Rows) { WFTipoDeDato objTipoDeDato = new WFTipoDeDato(); objTipoDeDato.intCodTipoDeDato = Convert.ToInt16(r["wjp_cod_tipodedato"]); objTipoDeDato.strNbrTipoDeDato = Convert.ToString(r["wft_nbr_tipodedato"]); WFCondicion objCondicion = new WFCondicion(); objCondicion.intCodCondicion = Convert.ToInt16(r["wjp_cod_condicion"]); objCondicion.strNbrCondicion = Convert.ToString(r["wfc_nbr_condicion"]); int intPadre = r["wjp_cod_nodopadre"] == System.DBNull.Value ? 0 : Convert.ToInt32(r["wjp_cod_nodopadre"]); int intCodPolitica = Convert.ToInt32(r["wjp_cod_nodo"]); string strValor = Convert.ToString(r["wjp_val_condicion"]); WFPolitica objPolitica = new WFPolitica(workflowId, intCodPolitica, intPadre, objCondicion, strValor, objTipoDeDato); arrPoliticas.Add(objPolitica); } return(arrPoliticas); }
private static string AsignarParametrosXmlContent(Eventos evt, object[] parameterValues) { string politicas = ""; int PARAMETROS_FIJOS = 4; // Si el Workflow se va a crear los parámetros son: // Parámetro 0 = Código del Workflow // Parámetro 1 = Referencia del Documento // Parámetro 2 = Código de Staff Origen // Parámetro 3 = Código de Staff Destino // Si el mensaje es mientras la ejecución los parámetros son: // Parámetro 0 = Código de la Solicitud // Parámetro 1 = Referencia del Documento // Parámetro 2 = Código de Staff Destino // Parámetro 3 = Observaciones if (parameterValues == null || parameterValues.Length < PARAMETROS_FIJOS) { return(null); } string xmlContent = "<root>"; for (int i = 0, j = parameterValues.Length; i < j; i++) { if (i < PARAMETROS_FIJOS) { xmlContent += "<param" + i + ">" + parameterValues[i].ToString().Trim() + "</param" + i + ">"; } else { politicas += i + 1 < j ? parameterValues[i].ToString().Trim() + ";" : parameterValues[i].ToString().Trim(); } } //Actualizar Ruta en Solicitud Corregida if (evt == Eventos.SOLICITUD_CORREGIDA && politicas != "") { int workflowId = Convert.ToInt32(parameterValues[0]); int staffId = Convert.ToInt32(parameterValues[PARAMETROS_FIJOS - 2]); string strReferencia = parameterValues[1].ToString(); //Referencia del documento try { DataSet ds = SqlHelper.ExecuteDataset(ESSeguridad.FormarStringConexion(), Queries.WF_ObtenerCreador, workflowId, strReferencia); foreach (DataRow r in ds.Tables[0].Rows) { staffId = Convert.ToInt32(r["swf_cod_empleado_creador"]); break; } } catch (Exception ee) { System.Console.Write(ee.Message); } ArrayList rutas = WFPolitica.ObtenerRuta(workflowId, politicas, staffId); try { string strRuta = Convert.ToString(rutas[0]); SqlHelper.ExecuteScalar(ESSeguridad.FormarStringConexion(), Queries.WF_ActualizarRutaSolicitud, strReferencia, workflowId, staffId, strRuta); } catch (Exception ee) { System.Console.Write(ee.Message); } if (rutas != null) { for (int i = 0; i < rutas.Count; i++) { xmlContent += "<param" + (PARAMETROS_FIJOS + i) + ">" + rutas[i].ToString() + "</param" + (PARAMETROS_FIJOS + i) + ">"; } } else { return(null); // throw new Exception("No se pudo establecer una ruta con las políticas establecidas"); } } // LAS POLÍTICAS SE PASAN AL WORKFLOW CUANDO ESTE SE CREA if (evt == Eventos.CREAR_SOLICITUD) // && politicas != "") { int workflowId = Convert.ToInt32(parameterValues[0]); string strReferencia = parameterValues[1].ToString(); int staffId = Convert.ToInt32(parameterValues[PARAMETROS_FIJOS - 2]); ArrayList rutas = null;// WFPolitica.ObtenerRuta(workflowId, politicas, staffId); string strRuta = string.Empty; try { if (politicas != string.Empty) { rutas = WFPolitica.ObtenerRuta(workflowId, politicas, staffId); strRuta = Convert.ToString(rutas[0]); SqlHelper.ExecuteScalar(ESSeguridad.FormarStringConexion(), Queries.WF_ActualizarRutaSolicitud, strReferencia, workflowId, staffId, strRuta); } } catch (Exception ee) { System.Console.Write(ee.Message); } if (rutas != null) { for (int i = 0; i < rutas.Count; i++) { xmlContent += "<param" + (PARAMETROS_FIJOS + i) + ">" + rutas[i].ToString() + "</param" + (PARAMETROS_FIJOS + i) + ">"; } } else { xmlContent += "<param" + PARAMETROS_FIJOS + ">0;0;</param" + PARAMETROS_FIJOS + ">"; } /* * else * { * return null; * // throw new Exception("No se pudo establecer una ruta con las políticas establecidas"); * } * */ } xmlContent += "</root>"; return(xmlContent); }