Herramientas de usuario

Herramientas del sitio


ada:tips:sicoferp:general:pbtows:procesos:developmentstandards:nomenclature:pb

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

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 Ejfor 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.
  
ada/tips/sicoferp/general/pbtows/procesos/developmentstandards/nomenclature/pb.1571343079.txt.gz · Última modificación: 2019/10/17 20:11 por administraidor