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); }
/* * 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)); }