示例#1
0
        /// <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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }