Herramientas de usuario

Herramientas del sitio


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

PBtoWS - Procesos - Backend Powerbuilder (WS-SOAP) - Estándares de Desarrollo - Nomenclatura: Powerbuilder

Este capitulo contiene información relacionada con la nomenclatura de códificación para el lenguaje Powerbuilder, la cual ha sido definida por la organización.

Se implementará la nomenclatura estandar sugerida por sybase/SAP. La cual puede consultarse desde la url: http://www.pbdr.com/pbstd/varnmstd.htm

Organización de los Componentes

Todos los componentes que se definan en el proceso de migración y posteriomente en el legunaje Powerbuilder que sean expuestos en servicios SOAP por medio del framework PBtoWS SICOF deben seguir los siguientes lineamientos:

Tabla de Código de Aplicaciones

Aplicación Prefijo
Presupuesto01
Tesorería02
Contabilidad03
Compras04
Nómina05
Talento10
Core/Framework/Main00

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

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 Capa de implementación Nombre Componente Ejemplo
Lanzadoraws00No Aplicaloginws00_login.pbl
Invocadorasf00Controllerloginsf00controller_login.pbl
Modelosf00Modelloginsf00model_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
Argumentoaal_variableNinguna
Globalggl_variableNo permita en la implementación
Instanceiil_variableNinguna
Locallll_variableNinguna
Sharedssl_variableNo permita en la implementación

Calificadores de Alcance

Tipo Dato Prefijo Ejemplo Observaciones
Anyala_rawSolo se puede utilizar en las librerias Modelo
Blobblblblb_imageSe recomienda hacer uso limitado de este tipo y solo en las librerías Modelo
Booleanblb_exit
Characterclc_letra
Datedld_fechaEvaluar el uso de este tipo en procesos que van a la base de datos. Se recomienda usar el tipo Datetime
Datetimedtldt_fecha
Decimaldecldec_numero
Doubledbldb_numero
Integerili_numero
Longlll_numero
Realrlr_numeroSe recomienda el uso del tipo Double
Stringsls_cadena
Timetlt_tiempoEvaluar el uso de este tipo en procesos que van a la base de datos. Se recomienda usar el tipo Datetime
Unsigned Integeruilui_numero
Unsigned Longullul_numero

Prefijos de Tipo de Datos de Objetos Estándar

Tipo Dato Prefijo Código Aplicación Ejemplo Observaciones
Applicationws00ws00_loginSolo para proyectos de exposición de servicios
Applicationapp00app00_loginSolo para proyectos de consumo de servicios (Proxy)
ClassDefinitioncldef lcldef_Object
ClassDefinitionObjectcldefo lcdefo_ThatObject
Connectioncn lcn_Known
ConnectionInfocni lcni_ServerInfo
ConnectObjectcno scno_ConObj
Datastoreds lds_source
Datawindow Griddwg dwg_listaSolo aplica para la definición del control (dataobject). No para utilización en la implementación (se usa datastore)
Datawindow Freedwf dwf_consultaSolo aplica para la definición del control (dataobject). No para utilización en la implementación (se usa datastore)
DynamicDescriptionAreadda ldda_Execute
DynamicStagingAreadsa ldsa_MyQuery
EnumerationDefinitionenum lenum_Cycle
EnumerationItemDefinitionenumi ienumi_Item
Environmentenv lenv_System
Errorerr gerr_Snarl
ExtObjectexto gexto_Outside
Function_Objectof of_Function
iNetinet linet_Web
InternetResultir lir_Page
MailFileDescriptionmfd lmfd_Mail
MailMessagemm lmm_Mail
MailRecipientmr lmr_Mail
MailSessionms lms_Session
NonVisualObjectnvo lnvo_Invisible
OLEObjectoo loo_Ghost
OLEStorageostg gostg_WordFile
OLEStreamostm lostm_River
OMObjectomo iomo_Bob
OMStorageomstg somstg_Drive
OMStreamomstm lomstm_Mersey
PBtoCPPObjectpb2cpp lpb2cpp_Quad
Pipelinepl lpl_OilandGas
Powerobjectpo lpo_Source
ProfileCallprc lprc_Face
ProfileClassprcl lprcl_Room
ProfileLineprl iprl_Bob
ProfileRoutineprr lprr_Cat
Profilingpr lpr_Outline
RemoteObjectro iro_Employee
ScriptDefinitionsdef lsdef_Mycode
Servicesrv lsrv_Charge
SimpleTypeDefinitionstd istd_MyType
Structurestr lstr_Data
SystemFunctionssf lsf_Bay
Timingtmg ltmg_Clock
TraceActivityNodetran ltran_Node
TraceBeginEndtrbe ltrbe_Start
TraceErrortre ltre_Error
TraceFiletrf itrf_TraceFile
TraceGarbageCollecttrgc itrgc_Call
TraceLinetrln strln_Rope
TraceObjecttro ltro_Bob
TraceRoutinetrr ltrr_Tiger
TraceSQLtrsql ltrsql_MySQL
TraceTreetrt ltrt_Birch
TraceTreeErrortrte ltrte_Err
TraceTreeGarbageCollecttrtgc ltrtgc_Trash
TraceTreeLinetrtl ltrtl_String
TraceTreeNodetrtn ltrtn_Kilt
TraceTreeObjecttrto ltrto_Trace
TraceTreeRoutinetrtr ltrtr_BobGrimmer
TraceTreeUsertrtu ltrtu_User
TraceUsertru ltru_Blue
Transactionts lts_Trans
TypeDefinitiontypdef ltypdef_Details
UserObjectuo luo_Control
VariableCardinalityDefinitionvcd lvcd_Type
VariableDefinitionvd 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 Objectn_ n_dsEsta nomenclatura se puede ignorar si se mantiene el nombramiento de variables y calificadores de acceso Ej: lds_source para datastore
Custom Class User Objectn_cst_ n_cst_customer
Global Structures_ s_point
Nombramiento de clases: Custom Class User Object
Tipo de Clase Capa de Implementación Prefijo Ejemplo Observaciones
ControllerControllern_cst_controller_n_cst_controller_loginSe recomienda una sola implementación por componente
ServiceControllern_cst_service_n_cst_service_loginSe recomienda una sola implementación por componente
ModelModeln_cst_n_cst_loginPueden 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
Griddwg_ dwg_prueba
Free o para Filtrosdwf_ dwf_prueba
Externaldwe_ 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

Tipo Prefijo Código Aplicación Ejemplo Observaciones
Function Objectof_ of_calcular_saldo
Function Setset_ set_valor
Function Getget_ 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:

  • 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.
ada/tips/sicoferp/general/pbtows/procesos/developmentstandards/nomenclature/pb.txt · Última modificación: 2019/10/22 15:52 por administraidor