public GestionDesembolsoResponse NotificarEstadoDesembolso(GestionDesembolsoRequest NotificacionDesembolsoRequest) { ControladorGestionDesembolso manager = new ControladorGestionDesembolso(); GestionDesembolsoResponse respuesta = manager.ProcesarSolicitud(NotificacionDesembolsoRequest); return(respuesta); }
/* * 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 * 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)); }
public GestionDesembolsoResponse ProcesarSolicitud(GestionDesembolsoRequest notificacion) { try { string numeroTramite = notificacion.InformacionDesembolso.NumeroTramite; respuesta = new GestionDesembolsoResponse(); InfoCasoDesembolso infoCasoDesembolso = consultarCasoDesembolsoPorTramite(numeroTramite); if (infoCasoDesembolso == null) { // crear caso respuesta = crearCasoDesembolso(notificacion); return(respuesta); } else { //valida que la estación que ejecuta la actividad sea la misma asociada en Bizagi. Si ha cambiado en Cobis, se consulta la estación en Bizagi para //enviarla en el perform activity, y asi registrar la estación que realmente ejecuta la acción. //PENDIENTE IMPLEMENTACIÓN //if (!notificacion.InformacionEstacion.TipoIdentificacionEstacion.Codigo.Equals(infoCasoDesembolso.OidTrackingDesembolso.OidTipoDocumentoEstac.SCodigo) && // !notificacion.InformacionEstacion.IdentificacionEstacion.Equals(infoCasoDesembolso.OidTrackingDesembolso.SIdentificacionEstacion)) //{ // InformacionEstacionBO datosEstacion = consultarUsuariosPorID(notificacion.InformacionEstacion.TipoIdentificacionEstacion.Codigo, notificacion.InformacionEstacion.IdentificacionEstacion); //} // perform activity return(performActivity2(notificacion, infoCasoDesembolso)); } } catch (Exception e) { respuesta.Codigo = Properties.Resources.ErrorTecnico; respuesta.Mensaje = e.Message; } return(respuesta); }