Este capitulo contiene información relacionada con la nomenclatura de códificación para la metadata de los servicios SOAP expuestos, la cual ha sido definida por la organización.
Consideraciones
Se implementará nomenclatura en profundida, es decir, cada estructura json será descrita por una metadata.
Las metadatas se pueden asociar segun estructura del servicios (consumo/respuesta)
Toda respuesta (return_object) debe tener su metadata
Toda metadata debe estar relacionada con un componente.
Estructura de Respuesta de Servicio
A continuación se describe la estructura de devolución de servicio la cual aplica para todas las respuestas de los servicios SOAP expuestos por los componentes Powerbuilder, se toma como ejemplo el servicio de login:
{
"return_component_code": "LOGIN",
"return_code": "0",
"return_user_message": "sesión vigente",
"return_technical_message": "sesión vigente",
"return_response_date": "16/10/2019 13:38:58",
"return_object": {
"login": "SICOF",
"company": [
{
"codigo_empresa": "9999999999",
"nit": 892000757,3,
"razon_social": "UNIVERSIDAD DE LOS LLANOS (PRINCIPAL)",
"_metadata_json_": "LOGIN_RESPONSE_COMPANY"
}
],
"dependence": [
{
"codigo_dependencia": 67,
"descripcion_dependencia": "ADMINISTRATIVA",
"_metadata_json_": "LOGIN_SECOND_PHASE_DEPENDENCE_RESPONSE"
}
],
"token_session": "c6e612d569abed936d2abc1f61de85d415509acbbc1645e67b162388a87760c8",
"multiempresa": "S",
"_metadata_json_": "LOGIN_RENEW_RESPONSE"
},
"return_execution_time": "157"
}
Definición de la Respuesta de Servicio
return_component_code: Código del componente al cual pertenece la operación del servicio SOAP expuesto.
return_code: Código de retorno del consumo. [0:Cancel,1:Ok,-1:Error,2:Continue]
return_user_message: Mensaje destinado al usuario.}
return_technical_message“: Mensaje Técnico.
return_number: Variable de respuesta númerica.
return_string: Variable de respuesta string.
return_datetime: Variable de respuesta fecha/hora.
return_response_date: Fecha de respuesta del servicio (Es retornada desde el servidor).
return_object: Objeto Json de retorno (Es el campo donde se debe configurar la metadata).
return_execution_time: Tiempo de procesamiento del servicio (Es diferente al tiempo de respuesta del servicio).
_metadata_json_: Metadata generica asociada a la operación del servicio.
La metadata debe relacionarse en un atributo llamado _metadata_json_ el cual debe estar contenido en cada estructura json de la respuesta y esa metadata debe estar previamente registrada en la base de datos de configuración.
El proceso de metadata requiere que se realicen varios tipos de configurción las cuales se describen a continuación.
Definición de Nombramiento
Acciones de Operación
Se definen como las acciones que pueden presentarse en la exposición de servicios generados por los componentes powerbuilder:
CONSUME: Acción asociada a los consumos o invocaciones de las operaciones expuestas en los servicios.
RESPONSE: Acción asociada a las respuestas o salidas generadas por las operaciones expuestas de lso servicios.
Las metadatas deben configurarse teniendo presente las siguientes reglas
Mayusculas: Los nombres de la metadata deben generarse en mayusculas.
Nombres: Toda metadata debe respetar la siguiente estructura en su nombramiento [Componente]_[Accion de Operación]_[Nombre de proceso]. Ejemplo: LOGIN_CONSUME_COMPANY, LOGIN_RESPONSE_COMPANY
Columnas: Cuando una metadata represente tablas de una base de datos, el nombramiento de las columnas debe ser igual al de los campos de las tablas que mapea y debe reflejar las condiciones y/o restricciones de la columna como Nulos, tipos de datos, etc.
Configuración DB
Consiste en registrar la configuración de la estructura de la metadata la cual se debe realizar en las siguientes tablas de la base de datos de configuración:
USER_ADM.TBL_ENTITY: Tabla principal, contiene el encabezado de la configuración de la metadata.
USER_ADM.TBL_ENTITY_COLUMN: Contiene el detalle ó descripción del contenido de la metadata.
USER_ADM.TBL_COMPONENT_SERVICE: Asocia las metadatas raíz a las operaciones (servicios) registradas de los componentes.
Estructura de las tablas de configuración
USER_ADM.TBL_ENTITY
Contiene el encabezado de la metadata o CRUD;
USER_ADM.TBL_ENTITY.ID: Identificador de registro
USER_ADM.TBL_ENTITY.ENTITY_NAME: Nombre de la metadata
USER_ADM.TBL_ENTITY.ENTITY_SQL: Sentencia de la metadata (Por lo general son consultas estáticas que describen la estructura general de la metadata)
USER_ADM.TBL_ENTITY.ENTITY_DESCRIPTION: Descripción asociada a la metadata
USER_ADM.TBL_ENTITY.ENTITY_TABLE: Tabla de actualiziación asociada a la metadata (Por lo general en las estructuras de definición estatica se utiliza DUAL)
USER_ADM.TBL_ENTITY.ENTITY_LOCAL: Identifica el origen de la estrcutura descrita (Local/Cliente)
USER_ADM.TBL_ENTITY.ESTADO: Estado del registro
USER_ADM.TBL_ENTITY.FECHA_REGISTRO: Fecha registro
USER_ADM.TBL_ENTITY.USUARIO_REGISTRO: Usuario registro
USER_ADM.TBL_ENTITY.ENTITY_TYPE_CODE: Tipo de entidad *
Ejemplo Registro: USER_ADM.TBL_ENTITY
USER_ADM.TBL_ENTITY_COLUMN
Contiene la definición de la estructura de la metadata/CRUD
USER_ADM.TBL_ENTITY_COLUMN.ID: Identificador de registro
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_NAME: Nombre de la metadata
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_COLUMN: Nombre del a columna o atributo
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_UPDATE: Indica si el atributo es actualizable (CRUD)
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_PK: Indica si el atributo hace parte del a llave primaria (CRUD)
COLUMN USER_ADM.TBL_ENTITY_COLUMN.ENTITY_REQUIRED_INSERT: Indica si el atributo es requerido en el proceso de inserción
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_REQUIRED_DELETE: Indica si el atributo es requerido en el proceso de eliminación
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_REQUIRED_UPDATE: Indica si el atributo es requerido en el proceso de actualización
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_DEFAULT_VALUE: Valor por defecto
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_VALIDATION: Validación de datawindow
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_MESSAGE_CODE: Mensaje de validación
USER_ADM.TBL_ENTITY_COLUMN.ESTADO: Estado del registro
USER_ADM.TBL_ENTITY_COLUMN.FECHA_REGISTRO: Fecha registro
USER_ADM.TBL_ENTITY_COLUMN.USUARIO_REGISTRO: Usuario registro
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_DATATYPE: Tipo de dato
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_DATALENGTH: Longitud del tipo de datos
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_DATAPRECISION: Precisión del tipo de datos
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_NULLABLE: Indica si el tipo de datos es nulo
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_LABEL: Etiqueta asociada a la columna
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_MIN_VALUE: Valor minimo permitido para el tipo de datos
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_MAX_VALUE: Valor máximo permitido para el tipo de datos
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_OBFUSCATE_COLUMN: Indica si la columna se ofusca para devolución de información
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_CONTEXT_VIEW: Contexto de visualización de la entidad
USER_ADM.TBL_ENTITY_COLUMN.REF_ENTITY_COLUMN: Identificador de la columna referenciada como dependencia
USER_ADM.TBL_ENTITY_COLUMN.REF_COMPONENT_CODE: Dependencia componente
USER_ADM.TBL_ENTITY_COLUMN.REF_SERVICE_CODE: Dependencia servicio
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_REQUIRED: Indica si la columna es requerida
USER_ADM.TBL_ENTITY_COLUMN.REF_PARAM_CONSUME_SERVICE: Parametros de consumo del servicio dependencia de la columna
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_SUB: Referencia de la dependencia que soporta el atributo (solo para tipo JSON)
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_SECTION: Sección de agrupación para atributos (campos) de las entidades de consumo y respuesta de servicios
USER_ADM.TBL_ENTITY_COLUMN.MESSAGE_REFERENCE_CODE: Código de mensajeria para soporte multilenguaje
USER_ADM.TBL_ENTITY_COLUMN.ENTITY_COLUMN_VISIBLE: Indica si la columna de la entidad es visible
Ejemplo Registro: USER_ADM.ENTITY_COLUMN
USER_ADM.TBL_COMPONENT_SERVICE
Contiene las operaciones de los servicios registrados a los componentes
USER_ADM.TBL_COMPONENT_SERVICE.ID: Identificador de registro
USER_ADM.TBL_COMPONENT_SERVICE.CODIGO: Código de identificador externo
USER_ADM.TBL_COMPONENT_SERVICE.COMPONENT_CODE: Código del Componente
USER_ADM.TBL_COMPONENT_SERVICE.DESCRIPCION: Descripción del servicio
USER_ADM.TBL_COMPONENT_SERVICE.ESTADO: Estado del registro
USER_ADM.TBL_COMPONENT_SERVICE.METHOD_DEFINITION: Método o servicio
USER_ADM.TBL_COMPONENT_SERVICE.OPCION: Opción de Menu
USER_ADM.TBL_COMPONENT_SERVICE.FECHA_REGISTRO: Fecha de registro
USER_ADM.TBL_COMPONENT_SERVICE.USUARIO_REGISTRO: Usuario registro
USER_ADM.TBL_COMPONENT_SERVICE.INVOCATION_CONTEXT: Indica el contexto de invocación del servicio
USER_ADM.TBL_COMPONENT_SERVICE.ENTITY_CONSUME: Entidad que representa la metadata de consumo
USER_ADM.TBL_COMPONENT_SERVICE.ENTITY_RESPONSE: Entidad que representa la metadata de retorno del consumo return_object)
Ejemplo Registro: USER_ADM.TBL_COMPONENT_SERVICE
Configuración Powerbuilder
Una vez configurada la metadata en la base de datos, se debe habilitar mediante código powerbuilder al procesar las respuestas de los servicios. Para hacerlo solo debe asignar en los objetos json la propiedad is_metadata_name con el nombre de la metadata que describe la estructura del json y que previamente fue definida.
Observaciones
Las metadata raíz de consumo (CONSUME) y respuesta (RESPONSE) se asocian en la tabla USER_ADM.TBL_COMPONENT_SERVICE
Las metadatas internas se asignan en el código de componente.
Por lo general las metadata se deben devolver en las respuestas de los servicios.
Las metadatas de consumo no se devuelven en los componentes, sin embargo es posible consultarlas por medio de las operaciones de cada componente y se encuentran en la tabla USER_ADM.TBL_COMPONENT_SERVICE.
Todas las operaciones (servicios) deben tener una metadata raíz que describa la estructura de retorno.
Toda metadata debe describir en su totalidad el contenido de la respuesta y cada json en la respuesta debe tener su propia metadata.
Check List de Implementación
La siguiente lista es una guía de implementación de metadatas en los componentes powerbuilder y su uso debe tomarse como una referencia.
Identificar la estructura de la respuesta que se quiere describir en la metadata.
Separar cada json de la respuesta ya que cada uno representará una configuración de metadata
Iniciar la configuración de las metadatas, se recomienda empezar con las metadatas externas e ir profundizando en las internas de esta forma se facilita la identificación y configuración ya que se resulve cada profundidad por separado.
Una vez finalizadas los registros en las tablas de configuración proceda en asociar la metadata a la operación del servicio del componente que representa.
Por último en el código powerbuilder (de respuesta) asocie al objeto json que describe la metadata el nombre que registro en la configuración (teniendo presente el nombramiento).