Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
ada:tips:sicoferp:general:pbtows:procesos:developmentstandards:nomenclature:pb [2019/10/17 20:11] administraidor |
ada:tips:sicoferp:general:pbtows:procesos:developmentstandards:nomenclature:pb [2019/10/22 15:52] (actual) administraidor [Recomendaciones:] |
||
---|---|---|---|
Línea 19: | Línea 19: | ||
Cualquier nueva aplicación que se defina y que impacte los componentes Backend debe ser definida en esta tabla. | Cualquier nueva aplicación que se defina y que impacte los componentes Backend debe ser definida en esta tabla. | ||
+ | |||
+ | ==== Tipos de Librerías ==== | ||
+ | |||
+ | * **Librerías Lanzadoras**: Son las que exponen las operaciones de los servicios SOAP (Generan la estructura del WSDL). | ||
+ | * **Librerías Invocadoras**: Contienen las clases que orquestan la ejecución de los procesos asociados a las operaciones de los servicios expuestos. | ||
+ | * **Librerías Modelo (Lógica del Negocio)**: Contiene las clases de la lógica del negocio. | ||
+ | |||
+ | ==== Capas de Implementación ==== | ||
+ | * **Capa Core**: Capa relacionada con los procesos internos de ejecución. Por lo general está asociada a las operaciones del Framework. | ||
+ | * **Capa Controller**: Capa relacionada con los procesos de orquestación de servicios. | ||
+ | * **Capa Model**: Capa relacionada con los procesos de la lógica del negocio (código migrado). | ||
+ | |||
+ | ==== Prefijos ==== | ||
+ | * **ws: (WebService)**: Prefijo asociado a la exposición de servicios. Es utilizado por las librerías lanzadoras. | ||
+ | * **sf: (Software)**: Prefijo asociado a las librerias de implementación de los procesos y la exposición de los servicios. | ||
==== Librerías ==== | ==== Librerías ==== | ||
Se deben crear respetando las siguientes convenciones de acuerdo a la capa de implementación (se toma como ejemplo el componente Login): | Se deben crear respetando las siguientes convenciones de acuerdo a la capa de implementación (se toma como ejemplo el componente Login): | ||
- | ^ Tipo Libreria ^ Prefijo ^ Código Aplicación ^ | + | ^ Tipo Libreria ^ Prefijo ^ Código Aplicación ^ Capa de implementación ^ Nombre Componente ^ Ejemplo ^ |
- | |Presupuesto|01| | + | |Lanzadora|ws|00|No Aplica|login|ws00_login.pbl| |
+ | |Invocadora|sf|00|Controller|login|sf00controller_login.pbl| | ||
+ | |Modelo|sf|00|Model|login|sf00model_login.pbl| | ||
+ | |||
+ | === Observaciones === | ||
+ | |||
+ | * Todos los nombres de librerías deben ser en minuscula. | ||
+ | * La capa de implementación de la libreria Lanzadora no aplica porque esa capa es gestionada automaticamente por powerbuilder al desplegar las operaciones de los servicios SOAP. | ||
+ | * Los nombres pueden contener el separador _ | ||
+ | * Los nombres deben representar las funcionalidades contenidas, debe evitar acronimos. | ||
+ | * Los nombres no deben estar duplicados incluso en otros proyectos. | ||
+ | |||
+ | ==== Codificación ==== | ||
+ | |||
+ | === Calificadores de Alcance === | ||
+ | |||
+ | ^ Alcance ^ Prefijo ^ Ejemplo ^ Restricciones ^ | ||
+ | |Argumento|a|al_variable|Ninguna| | ||
+ | |Global|g|gl_variable|No permita en la implementación| | ||
+ | |Instance|i|il_variable|Ninguna| | ||
+ | |Local|l|ll_variable|Ninguna| | ||
+ | |Shared|s|sl_variable|No permita en la implementación| | ||
+ | |||
+ | === Calificadores de Alcance === | ||
+ | |||
+ | ^ Tipo Dato ^ Prefijo ^ Ejemplo ^ Observaciones ^ | ||
+ | |Any|a|la_raw|Solo se puede utilizar en las librerias Modelo| | ||
+ | |Blob|blb|lblb_image|Se recomienda hacer uso limitado de este tipo y solo en las librerías Modelo| | ||
+ | |Boolean|b|lb_exit| | | ||
+ | |Character|c|lc_letra| | | ||
+ | |Date|d|ld_fecha|Evaluar el uso de este tipo en procesos que van a la base de datos. Se recomienda usar el tipo Datetime| | ||
+ | |Datetime|dt|ldt_fecha| | | ||
+ | |Decimal|dec|ldec_numero| | | ||
+ | |Double|db|ldb_numero| | | ||
+ | |Integer|i|li_numero| | | ||
+ | |Long|l|ll_numero| | | ||
+ | |Real|r|lr_numero|Se recomienda el uso del tipo Double| | ||
+ | |String|s|ls_cadena| | | ||
+ | |Time|t|lt_tiempo|Evaluar el uso de este tipo en procesos que van a la base de datos. Se recomienda usar el tipo Datetime| | ||
+ | |Unsigned Integer|ui|lui_numero| | | ||
+ | |Unsigned Long|ul|lul_numero| | | ||
+ | |||
+ | === Prefijos de Tipo de Datos de Objetos Estándar === | ||
+ | |||
+ | |||
+ | ^ Tipo Dato ^ Prefijo ^ Código Aplicación ^ Ejemplo ^ Observaciones ^ | ||
+ | |Application|ws|00|ws00_login|Solo para proyectos de exposición de servicios | | ||
+ | |Application|app|00|app00_login|Solo para proyectos de consumo de servicios (Proxy) | | ||
+ | |ClassDefinition|cldef| |lcldef_Object| | | ||
+ | |ClassDefinitionObject|cldefo| |lcdefo_ThatObject| | | ||
+ | |Connection|cn| |lcn_Known| | | ||
+ | |ConnectionInfo|cni| |lcni_ServerInfo| | | ||
+ | |ConnectObject|cno| |scno_ConObj| | | ||
+ | |Datastore|ds| |lds_source| | | ||
+ | |Datawindow Grid|dwg| |dwg_lista|Solo aplica para la definición del control (dataobject). No para utilización en la implementación (se usa datastore)| | ||
+ | |Datawindow Free|dwf| |dwf_consulta|Solo aplica para la definición del control (dataobject). No para utilización en la implementación (se usa datastore)| | ||
+ | |DynamicDescriptionArea|dda| |ldda_Execute| | | ||
+ | |DynamicStagingArea|dsa| |ldsa_MyQuery| | | ||
+ | |EnumerationDefinition|enum| |lenum_Cycle| | | ||
+ | |EnumerationItemDefinition|enumi| |ienumi_Item| | | ||
+ | |Environment|env| |lenv_System| | | ||
+ | |Error|err| |gerr_Snarl| | | ||
+ | |ExtObject|exto| |gexto_Outside| | | ||
+ | |Function_Object|of| |of_Function| | | ||
+ | |iNet|inet| |linet_Web| | | ||
+ | |InternetResult|ir| |lir_Page| | | ||
+ | |MailFileDescription|mfd| |lmfd_Mail| | | ||
+ | |MailMessage|mm| |lmm_Mail| | | ||
+ | |MailRecipient|mr| |lmr_Mail| | | ||
+ | |MailSession|ms| |lms_Session| | | ||
+ | |NonVisualObject|nvo| |lnvo_Invisible| | | ||
+ | |OLEObject|oo| |loo_Ghost| | | ||
+ | |OLEStorage|ostg| |gostg_WordFile| | | ||
+ | |OLEStream|ostm| |lostm_River| | | ||
+ | |OMObject|omo| |iomo_Bob| | | ||
+ | |OMStorage|omstg| |somstg_Drive| | | ||
+ | |OMStream|omstm| |lomstm_Mersey| | | ||
+ | |PBtoCPPObject|pb2cpp| |lpb2cpp_Quad| | | ||
+ | |Pipeline|pl| |lpl_OilandGas| | | ||
+ | |Powerobject|po| |lpo_Source| | | ||
+ | |ProfileCall|prc| |lprc_Face| | | ||
+ | |ProfileClass|prcl| |lprcl_Room| | | ||
+ | |ProfileLine|prl| |iprl_Bob| | | ||
+ | |ProfileRoutine|prr| |lprr_Cat| | | ||
+ | |Profiling|pr| |lpr_Outline| | | ||
+ | |RemoteObject|ro| |iro_Employee| | | ||
+ | |ScriptDefinition|sdef| |lsdef_Mycode| | | ||
+ | |Service|srv| |lsrv_Charge| | | ||
+ | |SimpleTypeDefinition|std| |istd_MyType| | | ||
+ | |Structure|str| |lstr_Data| | | ||
+ | |SystemFunctions|sf| |lsf_Bay| | | ||
+ | |Timing|tmg| |ltmg_Clock| | | ||
+ | |TraceActivityNode|tran| |ltran_Node| | | ||
+ | |TraceBeginEnd|trbe| |ltrbe_Start| | | ||
+ | |TraceError|tre| |ltre_Error| | | ||
+ | |TraceFile|trf| |itrf_TraceFile| | | ||
+ | |TraceGarbageCollect|trgc| |itrgc_Call| | | ||
+ | |TraceLine|trln| |strln_Rope| | | ||
+ | |TraceObject|tro| |ltro_Bob| | | ||
+ | |TraceRoutine|trr| |ltrr_Tiger| | | ||
+ | |TraceSQL|trsql| |ltrsql_MySQL| | | ||
+ | |TraceTree|trt| |ltrt_Birch| | | ||
+ | |TraceTreeError|trte| |ltrte_Err| | | ||
+ | |TraceTreeGarbageCollect|trtgc| |ltrtgc_Trash| | | ||
+ | |TraceTreeLine|trtl| |ltrtl_String| | | ||
+ | |TraceTreeNode|trtn| |ltrtn_Kilt| | | ||
+ | |TraceTreeObject|trto| |ltrto_Trace| | | ||
+ | |TraceTreeRoutine|trtr| |ltrtr_BobGrimmer| | | ||
+ | |TraceTreeUser|trtu| |ltrtu_User| | | ||
+ | |TraceUser|tru| |ltru_Blue| | | ||
+ | |Transaction|ts| |lts_Trans| | | ||
+ | |TypeDefinition|typdef| |ltypdef_Details| | | ||
+ | |UserObject|uo| |luo_Control| | | ||
+ | |VariableCardinalityDefinition|vcd| |lvcd_Type| | | ||
+ | |VariableDefinition|vd| |lvd_Sore| | | ||
+ | |||
+ | === Observaciones === | ||
+ | * Cualquier tipo de datos o control no definido en la tabla anterior no debe ser utilizado en la generación de componentes ni en el consumo de proxys. | ||
+ | |||
+ | === Convención de nombres de clases === | ||
+ | |||
+ | == Prefijos de clases == | ||
+ | |||
+ | ^ Clase ^ Prefijo ^ Código Aplicación ^ Ejemplo ^ Observaciones ^ | ||
+ | |Standard Class User Object|n_| |n_ds|Esta nomenclatura se puede ignorar si se mantiene el nombramiento de variables y calificadores de acceso Ej: lds_source para datastore| | ||
+ | |Custom Class User Object|n_cst_| |n_cst_customer| | | ||
+ | |Global Structure|s_| |s_point| | | ||
+ | |||
+ | == Nombramiento de clases: Custom Class User Object == | ||
+ | |||
+ | ^ Tipo de Clase ^ Capa de Implementación ^ Prefijo ^ Ejemplo ^ Observaciones ^ | ||
+ | |Controller|Controller|n_cst_controller_|n_cst_controller_login|Se recomienda una sola implementación por componente| | ||
+ | |Service|Controller|n_cst_service_|n_cst_service_login|Se recomienda una sola implementación por componente| | ||
+ | |Model|Model|n_cst_|n_cst_login|Pueden existir varias clases modelo dependiendo de la complejidad del componente| | ||
+ | |||
+ | === Observaciones === | ||
+ | * Cualquier tipo de datos o control no definido en la tabla anterior no debe ser utilizado en la generación de componentes ni en el consumo de proxys. | ||
+ | |||
+ | === Convención de nombres de Tipos de Datawindows === | ||
+ | |||
+ | ^ Clase ^ Prefijo ^ Código Aplicación ^ Ejemplo ^ Observaciones ^ | ||
+ | |Grid|dwg_| |dwg_prueba| | | ||
+ | |Free o para Filtros|dwf_| |dwf_prueba| | | ||
+ | |External|dwe_| |dwe_prueba| | | ||
+ | |||
+ | === Observaciones === | ||
+ | * Cualquier tipo de datawindows no definido en la tabla anterior no debe ser utilizado en la generación de componentes ni en el consumo de proxys. | ||
+ | |||
+ | === Convención de nombres de funciones === | ||
- | * **Librerías Lanzadoras**: ws[código aplicación]_[nombre componente].pbl - Ejemplo: ws00_login.pbl | + | ^ Tipo ^ Prefijo ^ Código Aplicación ^ Ejemplo ^ Observaciones ^ |
- | * **Librerías Invocadoras**: sf[código aplicación]controller_[nombre componente].pbl - Ejemplo: sf00controller_login.pbl | + | |Function Object|of_| |of_calcular_saldo| | |
- | * **Librerías Modelo (Lógica del Negocio)**: sf[código aplicación]model_[nombre componente].pbl - Ejemplo: sf00model_login.pbl | + | |Function Set|set_| |set_valor| | |
+ | |Function Get|get_| |get_valor| | | ||
+ | === Observaciones === | ||
+ | * No debe utilizar funciones globales. | ||
+ | ==== Recomendaciones: ==== | ||
+ | La siguientes recomendaciones no imponen reglas de utilización sin embargo trate en lo posible de aplicarlas ya que el hacerlo optimiza el código generado: | ||
- | * [[ada:tips:sicoferp:general:pbtows:procesos:developmentstandards:nomenclature:pb|Nomenclatura Powerbuilder]] | + | * Evite el uso de variables globales. |
+ | * No utilice cursores en el código (utilice datastore). | ||
+ | * Evite el uso de funciones globales (agrupelas en objetos no visuales). | ||
+ | * Evite el uso de la tabla Dummy (utilice datawindows external). | ||
+ | * Evite el uso de la función RowCount() en un bucle Ej: for i = 1 to ldwg_prueba.RowCount ya que implica un consumo excesivo de ram en su lugar asigne el valor una variable y utilicela en la definición del bucle. | ||
+ | * Evite el uso del tipo de dato Date en su lugar utilice el tipo Datetime. | ||
+ | * No debe utilizar el tipo de datos Any en la capa de implementacion controller, solo puede ser utilizado en la capa model ya que las conversiones implicitas pueden generar comportamientos indefinidos y excepciones en tiempo de ejecución. | ||
+ | * El valor Nulo solo es permitido en las asignaciones implicitas setNull y en los valores de retornos de la base de datos. | ||