private InformacionEstacionBO consultarUsuariosPorID(string tipoIdEstacion, string numIdEstacion)
        {
            BizAgiWSParam           param  = new BizAgiWSParam();
            BizAgiWSParamEntityData entity = new BizAgiWSParamEntityData();

            entity.EntityName = "WFUSER";
            entity.Filters    = "SNumeroidentificacion = '" + numIdEstacion + "' and idTipodeDocumento = ";
            param.EntityData  = entity;

            XmlDocument schemaDoc  = new XmlDocument();
            string      schemaPath = Path.Combine(AsDirectory.AssemblyDirectory, Properties.Resources.SchemaConsultarCasoDesembolso);

            schemaDoc.Load(schemaPath);

            BizagiSOALayerOperations ejecutar = new BizagiSOALayerOperations();
            string xml = SerializerManager.SerializarToXml <BizAgiWSParam>(param);

            ejecutar.Url = ProxyUtils.GetServiceEndpoint("URLEntityManager");
            string respuesta = ejecutar.getEntitiesUsingSchemaAsString(xml, schemaDoc.OuterXml);

            // pendiente ajustar esta parte, se debe generar objetos de tipo wfuser para poder hacer la extracción de la información.
            InformacionEstacionBO datosEstacion = new InformacionEstacionBO();

            return(datosEstacion);
        }
        /*
         * Andres Alberto Yepes
         * 28-10-2016
         * ***************************************************************************************************************
         * función encargada crear un caso de gestión desembolso.
         *
         * */
        private GestionDesembolsoResponse crearCasoDesembolso(GestionDesembolsoRequest notificacion)
        {
            BizAgiWSParam <M_CAT_GestionDesembolso>     param = new BizAgiWSParam <M_CAT_GestionDesembolso>(Properties.Resources.DominioDomain, Properties.Resources.UsuarioCrearCaso);
            BizAgiWSParamCase <M_CAT_GestionDesembolso> caso  = new BizAgiWSParamCase <M_CAT_GestionDesembolso>(Properties.Resources.ProcesoDesembolso);

            caso.Entities.InfoCaso = new M_CAT_GestionDesembolso();
            caso.Entities.InfoCaso.OidInformacionDesembolso.SNumeroTramite = notificacion.InformacionDesembolso.NumeroTramite;
            caso.Entities.InfoCaso.OidInformacionDesembolso.OidTrackingDesembolso.SCodigoEstacion               = notificacion.InformacionEstacion.CodigoEstacion;
            caso.Entities.InfoCaso.OidInformacionDesembolso.OidTrackingDesembolso.SIdentificacionEstacion       = notificacion.InformacionEstacion.IdentificacionEstacion;
            caso.Entities.InfoCaso.OidInformacionDesembolso.OidTrackingDesembolso.OidTipoDocumentoEstac.SCodigo = notificacion.InformacionEstacion.TipoIdentificacionEstacion.Codigo;
            caso.Entities.InfoCaso.OidInformacionDesembolso.OidTrackingDesembolso.IRuta              = notificacion.RutaActual;
            caso.Entities.InfoCaso.OidInformacionDesembolso.OidTrackingDesembolso.IEtapa             = notificacion.EtapaActual;
            caso.Entities.InfoCaso.OidInformacionDesembolso.OidTrackingDesembolso.DFechaNotificacion = notificacion.FechaNotificacion;
            if (notificacion.InformacionDesembolso.CausalReintegro != null)
            {
                caso.Entities.InfoCaso.OidInformacionDesembolso.OidTrackingDesembolso.OidCausalReintegro.SCodigo = notificacion.InformacionDesembolso.CausalReintegro.Codigo;
            }
            param.Cases[0] = caso;
            BizagiSOALayerOperations <BizAgiWSParam <M_CAT_GestionDesembolso> > ejecutar = new BizagiSOALayerOperations <BizAgiWSParam <M_CAT_GestionDesembolso> >();

            ejecutar.Url = ProxyUtils.GetServiceEndpoint("URLWorkFlowEngine");
            processes crearCasoResp = ejecutar.createCase2(param);

            return(getRespuestaBO(crearCasoResp, EnumSOALayerAction.CreateCase));
        }
        /*
         * Andres Alberto Yepes
         * 28-10-2016
         * ***************************************************************************************************************
         * función encargada de consultar un desembolso de acuerdo al número de trámite, para identificar su existencia, y
         * obtener los datos básicos del caso.
         *
         * */
        private InfoCasoDesembolso consultarCasoDesembolsoPorTramite(string numeroTramite)
        {
            BizAgiWSParam           param  = new BizAgiWSParam();
            BizAgiWSParamEntityData entity = new BizAgiWSParamEntityData();

            entity.EntityName = "M_Desembolso";
            entity.Filters    = "SNumeroTramite = '" + numeroTramite + "' and (OidEstadoDesembolso <> 6  and OidEstadoDesembolso <> 7 and  OidEstadoDesembolso <> 8 and OidEstadoDesembolso <> 9 and OidEstadoDesembolso <> 10)";
            param.EntityData  = entity;

            XmlDocument schemaDoc  = new XmlDocument();
            string      schemaPath = Path.Combine(AsDirectory.AssemblyDirectory, Properties.Resources.SchemaConsultarCasoDesembolso);

            schemaDoc.Load(schemaPath);

            BizagiSOALayerOperations ejecutar = new BizagiSOALayerOperations();
            string xml = SerializerManager.SerializarToXml <BizAgiWSParam>(param);

            ejecutar.Url = ProxyUtils.GetServiceEndpoint("URLEntityManager");
            string respuesta = ejecutar.getEntitiesUsingSchemaAsString(xml, schemaDoc.OuterXml);
            BizAgiWSResponse <BizAgiWSResponseEntities <InfoCasoDesembolso> > response = SerializerManager.DeserializarTo2 <BizAgiWSResponse <BizAgiWSResponseEntities <InfoCasoDesembolso> > >(respuesta);

            return(response.Entities.M_Desembolso);
        }
        /*
         * Andres Alberto Yepes
         * 06-01-2017
         * ***************************************************************************************************************
         * función encargada de realizar el perform activity. como base utiliza xslt para realizar la transformación de la información
         * recibida en la fachada a la estructura esperada por Bizagi de acuerdo al modelo de datos del proceso. No tiene acoplamiento
         * con la estructura del proceso, mas allá que a través de la xslt recibida anteriormente. Utiliza una clase generica para realizar
         * el perform activity funcionando como un DTO.
         *
         * */
        private GestionDesembolsoResponse performActivity2(GestionDesembolsoRequest notificacion, InfoCasoDesembolso casoDesembolsoConsultado)
        {
            XmlDocument request = SerializerManager.SerializarToXmlDocument <GestionDesembolsoRequest>(notificacion);

            HUB.BizagiSOAObjects.PeformActivityGeneric.BizAgiWSParam             param    = new HUB.BizagiSOAObjects.PeformActivityGeneric.BizAgiWSParam();
            HUB.BizagiSOAObjects.PeformActivityGeneric.BizAgiWSParamActivityData activity = new HUB.BizagiSOAObjects.PeformActivityGeneric.BizAgiWSParamActivityData();

            activity.idCase   = casoDesembolsoConsultado.OidTrackingDesembolso.IIdCaso;
            activity.taskName = casoDesembolsoConsultado.OidTrackingDesembolso.OidActividadEspera.STaskName;
            param.domain      = Properties.Resources.DominioFNA;
            param.userName    = casoDesembolsoConsultado.OidTrackingDesembolso.SNombreUsuarioEstacion;

            param.ActivityData = activity;
            BizagiSOALayerOperations <HUB.BizagiSOAObjects.PeformActivityGeneric.BizAgiWSParam> ejecutar = new BizagiSOALayerOperations <HUB.BizagiSOAObjects.PeformActivityGeneric.BizAgiWSParam>();

            ejecutar.Url = ProxyUtils.GetServiceEndpoint("URLWorkFlowEngine");
            string      xmlParam    = SerializerManager.SerializarToXml(param);
            XmlDocument paramDocXML = new XmlDocument();

            paramDocXML.LoadXml(xmlParam);
            XPathNavigator navigatorParam = paramDocXML.CreateNavigator();

            //transforma el request en un xml con la definición de esquema del proceso en Bizagi
            string      xmlEntities    = XMLOperations.XSLTransformation(casoDesembolsoConsultado.OidTrackingDesembolso.OidActividadEspera.STransformacion, request);
            XmlDocument docEntitiesXml = new XmlDocument();

            docEntitiesXml.LoadXml(xmlEntities);
            XPathNavigator navEntities = docEntitiesXml.CreateNavigator();

            //crea el nodo de entities
            navigatorParam.MoveToChild("BizAgiWSParam", String.Empty);
            navigatorParam.AppendChild("<Entities></Entities>");
            navigatorParam.MoveToChild("Entities", String.Empty);
            //inserta en el nodo entities el xml con el xml transformado por la xslt
            navigatorParam.AppendChild(docEntitiesXml.OuterXml);

            processes performResp = ejecutar.performActivity(paramDocXML.OuterXml);

            return(getRespuestaBO(performResp, EnumSOALayerAction.PerformActivity));
        }