From e649bed8c3793b227df5eeb49f13deb7eb5b14b6 Mon Sep 17 00:00:00 2001 From: Jose Maria Casanova Crespo Date: Mon, 25 Jan 2010 01:36:55 +0100 Subject: [PATCH] ItEr44S02AnaliseItEr43S02: First release of the Guide of Third Party Integration This release of the guide of integration in galician describes the interchange format for current defined workflows in navalplanner where third applications can be involved --- .../costcategories.png | Bin 0 -> 14744 bytes .../guia-integracion-terceiros/criterions.png | Bin 0 -> 9970 bytes .../guia-integracion-terceiros.rst | 1251 +++++++++++++++++ .../guia-integracion-terceiros/labels.png | Bin 0 -> 3639 bytes .../guia-integracion-terceiros/materials.png | Bin 0 -> 7885 bytes .../guia-integracion-terceiros/orders.png | Bin 0 -> 58560 bytes .../guia-integracion-terceiros/resources.png | Bin 0 -> 19962 bytes .../typeofworkhours.png | Bin 0 -> 5978 bytes .../workedhours.png | Bin 0 -> 15252 bytes .../workreports.png | Bin 0 -> 78249 bytes 10 files changed, 1251 insertions(+) create mode 100644 doc/src/technical/guia-integracion-terceiros/costcategories.png create mode 100644 doc/src/technical/guia-integracion-terceiros/criterions.png create mode 100644 doc/src/technical/guia-integracion-terceiros/guia-integracion-terceiros.rst create mode 100644 doc/src/technical/guia-integracion-terceiros/labels.png create mode 100644 doc/src/technical/guia-integracion-terceiros/materials.png create mode 100644 doc/src/technical/guia-integracion-terceiros/orders.png create mode 100644 doc/src/technical/guia-integracion-terceiros/resources.png create mode 100644 doc/src/technical/guia-integracion-terceiros/typeofworkhours.png create mode 100644 doc/src/technical/guia-integracion-terceiros/workedhours.png create mode 100644 doc/src/technical/guia-integracion-terceiros/workreports.png diff --git a/doc/src/technical/guia-integracion-terceiros/costcategories.png b/doc/src/technical/guia-integracion-terceiros/costcategories.png new file mode 100644 index 0000000000000000000000000000000000000000..18e2f0255b85c3cb03d6ba748b66e58506fd91b7 GIT binary patch literal 14744 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 literal 0 HcmV?d00001 diff --git a/doc/src/technical/guia-integracion-terceiros/criterions.png b/doc/src/technical/guia-integracion-terceiros/criterions.png new file mode 100644 index 0000000000000000000000000000000000000000..7297c4646f4f7b1be9fcd57246e9de2d1e10f8c3 GIT binary patch literal 9970 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 literal 0 HcmV?d00001 diff --git a/doc/src/technical/guia-integracion-terceiros/guia-integracion-terceiros.rst b/doc/src/technical/guia-integracion-terceiros/guia-integracion-terceiros.rst new file mode 100644 index 000000000..e73a3d98c --- /dev/null +++ b/doc/src/technical/guia-integracion-terceiros/guia-integracion-terceiros.rst @@ -0,0 +1,1251 @@ +NavalPlan: Guía de integración +============================== + +A guía de integración de NavalPlan detalla as posibilidades existentes para a integración entre aplicacións co software NavalPlan. + +As funcionalidades de integración da ferramenta para a Xestión da Producción permitirán a compartición de datos entre as distintas ferramentas existentes en cada empresa. NavalPlan define unha serie de formatos de intercambio de información empregando a sintaxe XML. A descrición das interfaces e formatos de intercambio son totalmente abertos e está dispoñible a súa implementación para incorporar novas posibilidades de integración se fose necesario. + +Visión Global +============= + +NavalPlan é unha aplicación que ten coma núcleo de funcionalidades a xestión da planificación e control dunha empresa. NavalPlan traballa cun conxunto de datos enfocado a xestión de recursos para a realización de tarefas permitindo a súa planificación e control. Aínda que NavalPlan permite xestionar o proceso de forma autónoma é necesario provelo de mecanismos de intercambio que permitan a incorporación de información recollida por outras aplicacións xa existentes nas empresas usuarias de NavalPlan. + +As empresas que teñen unha certa implantación de sistemas de xestión deberían permitir incorporar a información dos mesmos para facer máis rico e sinxelo o traballo co planificador. As entidades que teñen unha utilidade fóra do planificador son: + + * Os *recursos* que soen ser utilizados nas aplicacións de xestión de persoal e nóminas. + * Os *pedidos* que son empregados nas ferramentas de presupostación e xestión de ventas. + * Os *partes de traballo* que recollen o traballo feito polos traballadores e que son empregados para o control dos mesmos e a elaboración das súas nóminas. + +Estes elementos son empregados directamente no planificador, xa que os pedidos organízanse en tarefas, que son asignadas a recursos e logo a súa execución é controlada a través dos partes de traballo e a súa vez faise un análise de custos. + +NavalPlan permite a integración en dous escenarios: + + * Integración con outras aplicacións: permitindo a incorporación de datos de programas desenvoltos por terceiros. Isto será posible empregando as Interfaces Públicas da Aplicación (API) dispoñibles. A API de NavalPlan permite a interacción coas seguintes entidades propias: recursos, pedidos e partes de traballo, aínda que incorporan outras entidades de interese coma materiais, etiquetas, criterios, categorías de custo e tipos de horas. + * Integración con outras instancias de NavalPlan: permitindo operacións que deixen compartir información entre distintas empresas centrándose no proceso de subcontratación e reporte de avances do subcontratista. + + +Integración con outras aplicacións da propia empresa +---------------------------------------------------- + +NavalPlan permite a integración con outras aplicacións, NavalPlan poderá incorporar información procedente de outras aplicacións empregando un formato de intercambio común que será recibido por un servizo web que permitirá realizar actualizacións de datos ao longo do tempo. + +Esta integración deberá ser configurada mediante a habilitación dun usuario que terá permiso de acceso para cada un dos servizos que é de interese integrar, as aplicacións poderán chamar aos servizos empregando o nome de usuario e contrasinal e NavalPlan procesará a incorporación dos datos enviados. En caso de que ocorran erros na incorporación de datos na resposta da petición incorporarase a información dispoñible sobre o erro. + +A integración dentro da empresa permite unha integración forte con distintas aplicacións que poderán chamar en calquera momento aos servizos web para a actualización de datos. + + +Integración entre aplicacións NavalPlan de distintas empresas +------------------------------------------------------------- + +NavalPlan ten sido concibido coma un software que permita a realación con distintas empresas que empreguen a aplicación. O escenario principal de colaboración entre empresas é a contratación entre as mesmas, dentro do proceso de planificación é normal a situación que varias empresas colaboren nun mesmo proxecto sendo unha a contratista principal e outras subcontratistas desta. + +NavalPlan ten desenvolto un sistema de intercambio de información que permite remitir a información das tarefas a subcontratar a outras empresas e recibir os reportes de avance dos proxectos subcontratados. + +Esta integración a nivel aplicación precisa da existencia de usuarios cruzados entre as empresas subcontratante e subcontratista. Esta configuración permitirá que as aplicacións se poidan comunicar a información en tempo real. + +Nota: esta integración tamén será posible con outras aplicacións sempre e cando estas empreguen o mesmo formato de intercambio e as aplicacións implementen os servizos de intercambio necesarios. + + +Fundamentos técnicos +==================== + +Servizos WEB +------------ + +Un *servizo web* defínese como un mecanismo de comunicación que se establece entre dous programas a través dunha rede utilizando como protocolo de transporte das mensaxes *HTTP*. Na comunicación que se establece os dous programas que se comunican desempeñan ambos papeis: + + * Un dos programas leva a cabo o papel de *cliente*. É cliente o programa que inicia a comunicación e pide que o programa invocado execute unha determinada operación. + * O outro desempeña o papel de *servidor*. É o programa que ofrece unha serie de operacións aos clientes. Espera a recepción de peticións de operacións e cando lle chegan execútaas proporcionándolle ao programa cliente unha resposta sobre a operación. + +As razóns que levaron á elección de servizos web como vehículo de comunicación para levar a cabo a integración son as seguintes: + + * Por unha banda, os servizos web utilizan o protocolo HTTP como transporte, que é o que usa a WWW. Debido a que practicamente en todas as redes de ordenadores está permitido o acceso á WWW, os firewalls das corporacións non filtran o porto no que se serve a web, e de forma transparente a integración de NavalPlan con outra instalación do programa en outra empresa ou con outras aplicacións dentro da compañía funcionaría. + * Permiten a definición de mensaxes estruturados en XML - non son protocolos binarios de comunicación - de forma que é sinxelo entender as mensaxes de intercambio se o XML se define de forma acorde ao *modelo de dominio*. + * É unha tecnoloxía amplamente probada. + * É independente da linguaxe de programación. Isto permite que aínda que NavalPlan está desenvolvido utilizando a plataforma Java póidanse realizar clientes en distintas tecnoloxías como .NET, C, C++ maximizando as capacidades de integración e facilitándoa. + +Dentro dos servizos web existen dous grandes subtipos: Os servizos web baseados en *SOAP* e os servizos web *REST*. + +A grandes trazos os servizos web baseados en *SOAP* utilizan como corpo das mensaxes que se intercambias mensaxes *XML* que seguen o estándar *SOAP*. Ademais de *SOAP* son servizos que usan outra serie de estándares relacionados coñecidos como a pila WS (WS-Security, WS-Notification, WSDL). + +Os servizos web REST (REpresentational State Transfer) usan as operacións do protocolo HTTP (POST, PUT, DELETE e GET) para especificar parte das operacións e non poñen restricións acerca do corpo das mensaxes. Poden ser XML ou non e, se son XML, non teñen que cinguirse ao estándar *SOAP*. + +En NavalPlan os servizos web nos que se baseará a integración serán servizos *REST*. As razóns da elección de servizos REST son as seguintes: + + * Son máis sinxelos de implementar que os servizos *SOAP*. Isto facilita aos usuarios que queiran integrarse con NavalPlan o proceso, xa que o desenvolvemento e a depuración é máis sinxela. + * Unicamente son máis directos de implementar os servizos web *SOAP* se se utilizan ferramentas automáticas (que existen en linguaxes como Java ou .NET) que a partir da descrición dos servizos (WSDL) son capaces de xerar os clientes. Agora ben, esta vantaxe descartouse para a elección do tipo de servizos web a implementar porque se quere que, no caso de que non exista integración automática e os XML de intercambio de datos se xeren a man ou ben a partir dunha base de datos pero sen ter que programarse o cliente *SOAP*, esta integración siga sendo posible. + +Invocar un servizo web REST de NavalPlan será tan sinxelo como cun cliente HTTP (como pode ser simplemente o navegador para algunhas operacións) invocar unha URL. + +Seguridade +---------- + +Os servizos web REST de que constará NavalPlan para a integración contemplan un soporte de seguridade. A seguridade trátase en 3 dimensións: + + * Seguridade da comunicación. + * Autenticación do cliente. + * Autorización do cliente con respecto á operación invocada. + + +Seguridade da comunicación +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A seguridade da comunicación refírese a garantir que as mensaxes que se intercambian entre unha instalación de NavalPlan e os seus clientes (que pode ser outra aplicación ou outra instalación de NavalPlan realizada noutra compañía) sexan confidencias entre os dous extremos da comunicación. Quere dicir isto que, como pode que atravesen redes públicas - integración a través de Internet -, están suxeitas a poder ser examinados por todas as persoas ou axentes que teñan acceso ao medio. Para evitar, por tanto, que ao examinar o medio se obteña información privada das empresas que manteñen a comunicación con NavalPlan este proporciona un mecanismo de seguridade. + +A seguridade consiste na posibilidade de servir cifrados os datos e a elección feita para realizar o cifrado é servir os servizos web por HTTPS (HTTP Secure) en lugar de por HTTP. HTTPS é a combinación de HTTP con SSL. Con SSL conséguese por una parte garantir a identidade do servidor NavalPlan e, por outra banda, cifrar a comunicación entre o servidor e o cliente. + +Servir os servizos web con HTTPS pódese facer tanto dende o contedor de Servlets necesario para servir a aplicación (Apache Tomcat, Jetty) como se se serve detrás dun proxy que realice o cifrado por HTTPS (por exemplo detrás dun servidor web Apache). En calquera caso, será necesario que a empresa posúa un *certificado público* que permita servir por HTTPS os servizos web e/ou a aplicación. + + +Autenticación do cliente +~~~~~~~~~~~~~~~~~~~~~~~~ + +O proceso de autenticación consiste en determinar quen é a persoa ou entidade que quere efectuar unha operación ofrecida por un servizo web. + +A aplicación NavalPlan conta con autenticación a través da súa interface web. Está desenvolvido un módulo de usuarios que permite a alta, baixa de usuarios e a configuración dos permisos que poden posuír. Existe un conxunto predefinido de roles e estes roles se poden outorgar/denegar aos diferentes usuarios. Un rol permite realizar un determinado conxunto de operacións. + +Para a autenticación nos servizos web proponse reutilizar o sistema de usuarios de forma que para que o servidor vaia a proporcionar unha resposta haberá un paso de autenticar ao peticionario. Por tanto as aplicacións que se desexen integrar con NavalPlan terán que ter creadas na aplicación un usuario coas credencias adecuadas para invocar as operacións desexadas. + +Para identificar o peticionario vaise usar a autenticación Basic Access Authentication HTTP. Con este método de autenticación pode pasarse un usuario/contrasinal ao servidor web. Pásase cunha cabeceira na mensaxe HTTP. O formato é o seguinte: + + * Authentication: Basic [usuario:contrasinal codificados en base64] + +A codificación base64 unicamente é para ocultar o usuario:contrasinal da vista do usuario, pero non ten por obxecto evitar a súa lectura, xa que a súa conversión a formato lexible por humano é directa algoritmicamente. Á pregunta de como se garante, polo tanto, que o usuario:contrasinal sexan interceptados por un terceiro na rede de comunicación a resposta é a través da seguridade da comunicación. O protocolo HTTPS establece un medio cifrado entre o servidor e o cliente de forma que as mensaxes HTTP completas van cifradas (incluíndo as cabeceiras). + + +Autorización do cliente respecto á operación invocada +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Unha vez se é capaz de identificar o peticionario da operación do servizo web, é necesario autorizalo ou denegarlle o acceso. Na aplicación web que forma parte de NavalPlan a autorización faise utilizando o framework *Spring Security*. A través deste framework é posible de forma declarativa esixir a posesión de un rol para acceder a unha determinada operación. + +Os servizos web se identifican por URL e método HTTP. Exemplos diso son: + + * */ws/rest/orderelements* Method GET + * */ws/rest/criteriontypes* Method POST + +Con Spring Security é posible esixir que para que un usuario teña acceso a unha URL ou outra estea autenticado e teña o rol requirido. Exemplos: + +:: + + + + + +Desta maneira garántese que o usuario peticionario do servizo ten as credencias adecuadas para a súa invocación. + + +Conceptos xerais e políticas globais +==================================== + +Nesta sección detállase unha serie de asuncións e requisitos que se deberán cumprir para ter unha boa integración con NavalPlan. Nesta sección se tratarán as seguintes temáticas: + + * Codificación das entidades + * Comportamentos das altas e actualizacións + * Control de erros e recuperación + + +Codificación das entidades +-------------------------- + +En todos os fluxos de integración de entidades, cada un dos obxectos que se transmiten dunha aplicación a outra terán unha codificación. Desta forma un obxecto terá un identificador alfanumérico que o identifique tanto na aplicación de NavalPlan coma no resto das aplicacións que se integren. + +As entidades que participan na integración terán un atributo *code*, no que se gardará a codificación. A existencia deste código e o seu mantemento é necesario para a correcta integración. O código debe ser único por entidade. Aínda que as entidades suxeitas a integración con outras aplicacións teñen este atributo *code* único dentro de NavalPlan para todas as entidades utilizarase un identificador subrogado autoxerado polo framework de persistencia. + +NavalPlan á hora de comunicarse con outras aplicacións recibirá os obxectos e cotexará a existencia dentro do sistema de obxectos de NavalPlan. Se se recibe un obxecto cunha codificación existente entendese que é unha actualización do mesmo, se o obxecto que se recibe non existe no sistema NavalPlan darao de alta. + +No caso de que se incorporen entidades con referencias a outras entidades entón na importación comprobarase se existe esta entidade referenciada e se non existe darase un erro. Un exemplo disto sería cando se realice a importación dun traballador e se fai referencia ao calendario que se lle quere asignar. Se non existe, indicarase que non se atopa a instancia. + +A incorporación mediante ficheiro XML supón a introdución dunha secuencia de _ítems_ que se van a ir procesando secuencialmente. Esta secuencia de ítems estará formada polas entidades que se incorporan a aplicación. Para identificar as entidades que se transmiten NavalPlan empregará unha codificación baseada en dous parámetros: + + * A posición da instancia no XML. Chamarase *num_item* + * A codificación baseada no código. Chamarase *code* + * O tipo de entidade da instancia. Chamarase *entity-type* + +No caso de que unha instancia referencie a unha terceira da cal non se dispón do código dado de alta no sistema, NavalPlan reportará un erro de importación indicando o num_item e a codificación da entidade que produciu o erro de importación. + +Resumo da codificación da identificación das instancias: + + * *instance-id*: identificación da instancia, estará formada por: *num_item*, *code* e *entity-type*. + * *num_item*: identifica cun número a posición da entidade dentro do ficheiro XML de importación. Ten a utilidade de permitir localizar a instancia que provocou un erro. + * *code*: será unha codificación alfanumérica con características de unicidade dentro das instancias dunha mesma entidade (*entity-type*). Este código será común as aplicacións que se estean a integrar. + * *entity-type*: será posible identificar que tipo de entidade representa unha instancia mediante o seu *entity-type*. Exemplo: resource, work-report, label. + +Espazo de nomes e codificación na relación con terceiras empresas +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +No caso de integración de servizos dentro da mesma empresa partimos da existencia e control dunha unicidade de código dentro da organización. Iso non se pode presupoñer cando nos referimos á situación de relación entre dúas empresas. Nese caso NavalPlan manterá unha referencia dobre sobre as instancias de entidades que son compartidas entre dúas organizacións. + +NavalPlan respectará a codificación das entidades da empresa subcontratante e será a empresa subcontratista a que manteña ao longo de todas as comunicacións a referencia ás entidades reportadas pola empresa subcontratante. Esta relación manterase no caso das entidades relacionadas cos pedidos como é o caso de Order e OrderElement. Nesas entidades incorporarase un novo atributo *external-code* que fará referencia ao atributo *code* da entidade contratante. + +Internamente a empresa subcontratista traballará coa súa codificación propia no atributo *code* que será empregada na interacción coas outras aplicacións da propia empresa. + +Comportamentos das altas e actualizacións +----------------------------------------- + +A aplicación NavalPlan permitirá realizar unha alta a través de bloques de entidades. A semántica que se adoptará nestas incorporación de conxuntos de entidades será a seguinte. Realmente a operación non é unha alta senón que vai a ser unha alta ou modificación. Isto significa que cando se leva a cabo a incorporación se segue o seguinte algoritmo: + + 1. Compróbase se existe a entidade do bloque a inserir. + #. Se non existe a entidade, entón procédese a levar a cabo a alta. + #. Se existe a entidade, entón procédese a levar a cabo unha modificación da mesma. + +Unha vez que procede a levar a cabo a alta ou modificación, realízase outro proceso, detallado polos seguintes pasos: + + 1. Inténtase construír a entidade a dar de alta ou modificar a través da procura das entidades referenciadas. + #. Se non se pode construír a entidade por problemas en si mesma ou ben nas entidades referenciadas darase un erro indicando cal é o problema. + #. Se se consegue construír a entidade, entón procédese a pasar as validacións - regras de negocio - que os datos das entidades deben verificar. Se se producen un ou varios non cumprimentos repórtanse. + #. Se non se produce ningunha violación lévase a cabo a inserción ou modificación. + +Para estas operacións de alta ou modificación vaise a utilizar un servizo web identificado a través dunha URL e o método de HTTP POST. + +Con respecto a operación de borrado, non se vai a contemplar a súa existencia de maneira xeral. A razón é que o borrado de datos de planificador dunha entidade en xeral ten efectos en cascada sobre múltiples datos das planificacións levadas a cabo nel. Por tanto, a estratexia xeral de nunca borrar fisicamente os datos é a axeitada. Isto non impide que para algunhas entidades teña sentido operacións como a súa desactivación. Isto faría que non se borrara fisicamente a entidade da base de datos senón que deixara de terse en conta a partir dese momento para as novas operacións de planificación nas que estea involucrada. + +Control de erros +---------------- + +Uso dos códigos de estado HTTP nas respostas +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +As mensaxes de resposta HTTP conteñen unha liña que se coñece como liña de estado. O formato da liña de estado é a seguinte: + +:: + + Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF + +Como se pode apreciar existe un campo que é o código de estado, *Status-Code*. O código de estado é un numero de 3 díxitos que se usa para indicar como foi satisfeita a petición por parte do servidor web. Existen un conxunto de estados predefinidos que indican causas comúns que poden acontecer cando se invoca unha URL por parte dun cliente. + +NavalPlan vai a facer o seguinte uso dos códigos de estado das respostas HTTP: + + 1. *200 OK*. Se a petición é servida correctamente. Os erros lóxicos froito dos datos de entrada do servizo tamén se reportarán mediante este código. Xa que o cliente poderá procesalos para analizar as causas dos erros. + #. *404 Not Found*. Este código de estado non se vai a devolver por parte de ningún servizo web de NavalPlan. Será devolto unicamente polo contedor de servlets se o cliente invoca unha URL que non se corresponde con ningún dos servizos publicados. + #. *403 Access is denied*. Este código de estado será devolto por NavalPlan cando a autenticación do usuario é correcta no sistema de usuarios da aplicación pero non ten permiso para executar o servizo que se está solicitando. + #. *401 Bad credentials*. É utilizado na resposta por NavalPlan para indicar que a autenticación é incorrecta. Quere dicir o anterior que non existe un usuario/contrasinal válido. + #. *500 Internal Server Error*. Devólvese este código de estado sempre que se produce algún erro provocado por unha excepción que provoque a finalización do fío de execución (thread) no servidor que atende a petición do servizo. + #. *400 Bad Request*. Darase este erro cando a validación do corpo da petición XML por parte do servizo web de NavalPlan non sexa correcta por non axustarse ao esquema XML que describe o servizo. + + +Erros que provocan a finalización do fío de execución (thread) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Se existe un erro de programación que xorde froito da invocación dun servizo neste caso devólvese, como se dixo no apartado precedente, un código de erro HTTP 500 e no corpo da mensaxe HTTP darase o seguinte: + +:: + + + + + + + +Dentro de ** irá a pila de execución de chamadas do programa ata chegar a función que desencadeou o problema. + +Cando se produce un erro deste tipo a entidade que estea realizando a integración podería crear unha incidencia no sistema de xestión de erros describindo a situación que levou a aparición do erro e incluíndo o stack-trace devolto polo servizo web para facilitar a solución do erro pola comunidade de NavalPlan. + +Erros lóxicos +~~~~~~~~~~~~~ + +Os erros lóxicos son erros que non son debidos a un defecto na aplicación NavalPlan senón que son debidos a dúas posibles causas: + + * Os datos que se teñen na base de datos de NavalPlan non son compatibles cos datos de entrada da petición. + * Os datos de entrada para a operación solicitada no servizo web non son correctos. + +Cando se producen erros lóxicos van a ser catalogados polo equipo de desenvolvemento de NavalPlan en dous posibles tipos: + + 1. Erros recuperables. Os erros recuperables son aqueles para os que os desenvolvedores da integración do cliente poden decidir intentar realizar unha recuperación automática do erro. + #. Erros non recuperables. Os erros non recuperables son aqueles para os que non se pode implementar ningún mecanismo automático de solución do problema e o único camiño e a intervención humana para a solución dos problemas detectados. + +No corpo da resposta HTTP cando se produce un erro ou varios erros lóxicos será a seguinte: + +:: + + + + + + + + + + + + + + +Cada erro recuperable indícase a través da etiqueta ** e cada erro non recuperable informarase coa etiqueta **. + +A descrición dun ** é a seguinte: + + * Atributo *error-code*. No atributo *error-code* irá un código de erro interno definido en NavalPlan. Será un número e existirá unha táboa de códigos de erros recuperables en NavalPlan que permitirán aos integradores implementar unha solución recuperable adecuada a cada código de erro. + * Atributo *message*. Aquí indicarase unha descrición do erro. + * Etiqueta **. Pode haber varias etiquetas deste tipo que son usadas para proporcionar datos que poden ser necesarios con dous atributos cada unha: + + * *name*. Nome da propiedade. + * *value*. Valor da propiedade. + +Pola súa banda cada ** ten un atributo *message* no cal se indicará a causa do erro de validación. + +Validacións contra esquema +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +O framework que se utiliza para a implementación dos servizos web é Apache CXF. Con este framework xerase e pódese consultar o XML Schema para cada servizo. Cando aquí se menciona que se poden consultar significa que son servidos polo servlet utilizado por CXF para implementar os servizos web. Por exemplo, a URL para consultar o esquema XML dun servizo é a seguinte: + +:: + + ?_wadl&_type=xml + + +Os documentos XML Schema son un estándar da W3C que permite especificar a estrutura e formato dos documentos XML. Poden ser utilizados para validar se un determinado XML se axusta a un determinado esquema e así determinar se hai algún erro. + +Xa que para os servizos web de NavalPlan van estar dispoñibles os XML Schema dos mesmos, estes poderán ser utilizados polos integradores de aplicacións con NavalPlan para validar que xeran os XML de intercambio correctos. + +Tamén se implementará a través de CXF unha validación do XML entrante no corpo das mensaxes HTTP de invocación dos servizos web por parte dos clientes. Por tanto, se validará se o XML contra o esquema XML e se non é correcto mandarase unha mensaxe de resposta HTTP con código de estado 400 e corpo baleiro. + +Fluxos de integración +===================== + +Os fluxos de integración detallan a secuencia que ten que facer unha aplicación cliente para integrarse coa aplicación NavalPlan e en que secuencia poderá realizar as chamadas aos servizos web dispoñibles. + +Os servizos web atópanse dispoñibles a partir da URL_BASE da aplicación en /ws/rest/: + + * URL Base de Servizos: URL_BASE_NAVALPLANNER_WEBAPP/ws/rest + * Exemplo: https://naval.igalia.com/navalplanner-webapp/ws/rest + +A partir deste intre denominase a esta URL de servizos coma *BASE_SERVICES_URL*. + + +Fluxos de importación con outras aplicacións +-------------------------------------------- + +Incorporación de Materiais +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Descrición + * A incorporación de materiais permitirá a importación da información das categorías e materíais de interese na aplicación dende outras aplicacións. + * A incorporación de materiais permitirá asociar materiais a necesidades para o inicio de tarefas no planificador. + +Roles + * Cliente: proporciona nova información sobre os materiais ao servidor NavalPlan. + * Servidor: procesa a petición do cliente incorporando a nova información dos materiais. + +Precondicións + * Tódolos materiais pertencerán a unha categoría. + * Mantense un código único por material e por categoría. + +Postcondicións + * Os novos materiais e categorías de materiais serán incorporadas ao sistema. + * As instancias que existían previamente no sistema: + + * os seus campos propios serán actualizados coa nova información. + * se un material cambia de categoría modificarase a categoría a que pertence o material. + +Clases involucradas en NavalPlan + .. image:: materials.png + :width: 300 + :alt: Diagrama de Clases do dominio de Materiais en NavalPlan + +Descrición do fluxo + 1. A aplicación cliente que se integra xerará un ficheiro seguindo o formato detallado. + #. A aplicación cliente realiza a chamada ao servizo web cos datos de autorización. + #. O servizo web procesa a alta de novos materiais e categorías e actualiza os datos dos materiais e categorías existentes. + #. O servizo web devolve nun XML a saída de erros ou a correcta execución do servizo. + #. A aplicación cliente procesa a saída XML do servizo e reporta o éxito ou os erros detectados polo servizo. + +Exemplo de ficheiro de importación + :: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Incorporación de Etiquetas +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Descrición + * A incorporación de etiquetas permitirá a importación da información dos tipos de etiquetas e etiquetas de interese na aplicación dende outras aplicacións. + * As etiquetas permitirán a catalogación e filtrado dos elementos do pedido. + * Exemplos de etiquetas: Zonas do Buque, Prioridades, Centros de Coste, etc... + +Roles + * Cliente: proporciona nova información sobre as etiquetas ao servidor NavalPlan. + * Servidor: procesa a petición do cliente incorporando a nova información das etiquetas. + +Precondicións + * Tódalas etiquetas pertencen a un tipo de etiqueta. + * Mantense un código único por etiquetas e por tipo de etiqueta. + * O nome das etiquetas é unico dentro dun tipo de étiqueta. + * Unha etiqueta previamente existente non pode cambiar de tipo. + +Postcondicións + * As novas etiquetas e tipos de etiqueta serán incorporadas ao sistema. + * As instancias que existían previamente no sistema: + + * os seus campos propios serán actualizados coa nova información. + +Clases involucradas en NavalPlan + .. image:: labels.png + :width: 200 + :alt: Diagrama de Clases do dominio de Etiquetas en NavalPlan + +Descrición do fluxo + 1. A aplicación cliente que se integra xerará un ficheiro seguindo o formato detallado. + #. A aplicación cliente realiza a chamada ao servizo web cos datos de autorización. + #. O servizo web procesa a alta de novas etiquetas e tipos de etiquetas e actualiza os datos das etiquetas e tipos de etiquetas existentes. + #. O servizo web devolve nun XML a saída de erros ou a correcta execución do servizo. + #. A aplicación cliente procesa a saída XML do servizo e reporta o éxito ou os erros detectados polo servizo. + +Exemplo de ficheiro de importación + :: + + + + + + + + + + + + + +Incorporación de Tipos de Criterios e Criterios +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Descrición + * A incorporación de criterios permitirá incorporar nova información de criterios á aplicación co obxectivo de unificar a codificación con aplicacións externas. + * Os criterios incorporaranse en base á relación de criterios que pertencen a un tipo de criterio. + * Os criterios poderán ter unha estrutura xerárquica na súa importación. + * Exemplos de criterios serían: + + * Tipo de Criterio: Gremio + + * Criterio: Soldador + * Criterio: Electricista + * Criterio: Tubeiro + +Roles + * Cliente: proporciona nova información sobre os criterios e tipos de criterio ao servidor NavalPlan. + * Servidor: procesa a petición do cliente incorporando a nova información dos criterios e tipos de criterio. + +Precondicións + * O código de todos os criterios debe de ser único. + * Os criterios que pertencen a un tipo de criterio non xerárquico non poderán ter nodos fillos. + +Postcondicións + * As novas instancias serán incorporadas ao sistema unha vez se comprobe se non existían previamente. + * As instancias que existían previamente no sistema: + + * os seus campos propios serán actualizados coa nova información. + * non se poderá cambiar unha entidade que estivera definida como xerárquica e tiña unha estrutura de criterios a non xerárquica. + * se un criterio non aparece nunha nova importación non se realizará ningún cambio xa que non se realizan borrados. So se realizan actualizacións e marcados coma non activados. + +Clases involucradas en NavalPlan + .. image:: criterions.png + :width: 350 + :alt: Diagrama de Clases do dominio de Criterios en NavalPlan + + +Descrición do fluxo + 1. A aplicación cliente que se integra xerará un ficheiro seguindo o formato detallado. + #. A aplicación cliente realiza a chamada ao servizo web cos datos de autorización. + #. O servizo web procesa a alta de novos criterios e tipos de criterios e actualiza os datos dos criterios existentes. + #. O servizo web devolve nun XML a saída de erros ou a correcta execución do servizo. + #. A aplicación cliente procesa a saída XML do servizo e reporta o éxito ou os erros detectados polo servizo. + +Información de realización da chamada + * *URL Servizo*: BASE_SERVICE_URL/criteriontypes + * *Exemplo URL*: https://naval.igalia.com/navalplanner-webapp/ws/rest/services/criteriontypes + * *Método POST* + +Descrición do formato do ficheiro XML + * Nodo criterion-type-list: raíz da importación de tipos de criterios. Pode conter un ou varios nodos do tipo criterion-type. + + * Nodo criterion-type: representa un tipo de criterio. + + * Atributo code (String): código único compartido entre NavalPlan e outras aplicacións que referencia ao tipo de criterio. + * Atributo name (String): nome que identifica o tipo de criterio. + * Atributo description (String): describe ao criterio. + * Atributo allow-hierarchy (boolean): indica se os criterios deste tipo de criterio teñen unha xerarquía de criterios. + * Atributo allow-simultaneous-criterions-per-resource (boolean): indica que os recursos poden cumprir simultaneamente no tempo máis de un criterio deste tipo. + * Atributo enabled (boolean): indica que este tipo de criterio está activo. Se non estivera activo non serán asignables novos criterios a este tipo de criterio. + * Atributo resource (Enumeration): indica para que tipo de recursos é aplicable este criterio, os posibles valores serán (RESOURCE, MACHINE e WORKER). + * Nodo criterion-list: inclúe a lista de criterios que pertencen ao tipo de criterio. Pode conter un ou varios nodos do tipo criterion. + + * Nodo criterion: representa a unha instancia da entidade criterio. + + * Atributo code (String): código único compartido entre NavalPlan e outras aplicacións que referencia a un criterio. + * Atributo name (String): nome descritivo do criterio. + * Atributo active (boolean): indica se este criterio está activo. Se non estivera activo este criterio non sería aplicable a outras entidades no futuro. + * Nodo children: indica que un criterio ten fillos na xerarquía, polo cal todos os fillos cumpren o criterio do nodo pai. + + * Nodo criterion: mantén a mesma estrutura que o nodo criterion descrito previamente. E permite describir a estrutura dos fillos. + +Exemplo de ficheiro de importación +:: + + + + + + + + + + + + + + + + + + + + + + + +Incorporación de Tipos de Horas de Traballo +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Descrición + * A incorporación de tipos de horas de traballo permitirá a importación da información dos tipos de horas de traballo de interese na aplicación dende outras aplicacións. + * Os tipos de horas terán coma atributos base o código, un nome do tipo de hora, se está habilitada e un precio por hora por defecto a aplicar. + * Exemplos de tipos de hora son: ordinaria, extra, nocturna, extra-noctura, etc... + * Estes tipos de horas empregaranse na incorporación dos partes de traballo. + +Roles + * Cliente: proporciona nova información sobre os tipos de horas ao servidor NavalPlan. + * Servidor: procesa a petición do cliente incorporando a nova información dos tipos de horas. + +Precondicións + * Mantense un código único por tipo de hora. + * O nome do tipo de hora de traballo e único. + +Postcondicións + * Os novos tipos de horas de traballo serán incorporadas ao sistema. + * As instancias que existían previamente no sistema verán actualizada a súa información. + +Clases involucradas en NavalPlan + .. image:: typeofworkhours.png + :width: 150 + :alt: Diagrama de Clases do dominio de Tipos de Horas en NavalPlan + + +Descrición do fluxo + 1. A aplicación cliente que se integra xerará un ficheiro seguindo o formato detallado. + #. A aplicación cliente realiza a chamada ao servizo web cos datos de autorización. + #. O servizo web procesa a alta de novos tipos de horas de traballo e actualiza os datos dos xa existentes. + #. O servizo web devolve nun XML a saída de erros ou a correcta execución do servizo. + #. A aplicación cliente procesa a saída XML do servizo e reporta o éxito ou os erros detectados polo servizo. + +Exemplo de ficheiro de importación + :: + + + + + + + + +Incorporación de Categorías de Custo +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Descrición + * A incorporación de categorías de custo permitirá a importación da información das categorías de custo dende outras aplicacións. + * As categorías de custo incorporan a información dos custos de precio por hora du tipo de recurso segundo o tipo de hora de traballo que realice. + * As categorías de custo teñen un precio por hora distinto ao longo do tempo. + * Exemplo: Categorías de custo: Oficial de primeira. Ten un precio asociado de hora extra de 20€ a hora durante o ano 2010. + +Roles + * Cliente: proporciona nova información sobre as categorías de custo ao servidor NavalPlan. + * Servidor: procesa a petición do cliente incorporando a nova información das categorías de custo. + +Precondicións + * Os códigos das categorías de custo son únicos. + * No existen dúas categorías de custo co mesmo nome. + * Nun periodo de tempo unha categoría de custo so pode ter un custo/hora para un tipo de hora simultaneamente. + * Por categoría de coste só ó último intervalo de tempo pode carecer de data de fin. + +Postcondicións + * As novas categorías de custo serán incorporadas ao sistema. + * As instancias que xa existían previamente no sistema verán actualizada a súa información. + +Clases involucradas en NavalPlan + .. image:: costcategories.png + :width: 150 + :alt: Diagrama de Clases do dominio de Categorías de Coste en NavalPlan + + +Descrición do fluxo + 1. A aplicación cliente que se integra xerará un ficheiro seguindo o formato detallado. + #. A aplicación cliente realiza a chamada ao servizo web cos datos de autorización. + #. O servizo web procesa a alta de novas categorías de custo e actualiza os datos das xa existentes. + #. O servizo web devolve nun XML a saída de erros ou a correcta execución do servizo. + #. A aplicación cliente procesa a saída XML do servizo e reporta o éxito ou os erros detectados polo servizo. + + +Exemplo de ficheiro de importación + :: + + + + + + + + + + + + + + + + + + + + +Incorporación de Recursos +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Descrición + * A incorporación de recursos permitirá a importación da información dos recursos humanos de interese na aplicación dende outras aplicacións. + * Os recursos que se incorporarán serán de tipo máquina ou traballador. + * A importación permitirá incorporar a información referente aos criterios que cumpre o recurso e a información sobre a súa categoría de custo. + * A incorporación dos recursos poderá facer referencia ao calendario laboral existente. + +Roles + * Cliente: proporciona nova información sobre os recursos ao servidor NavalPlan. + * Servidor: procesa a petición do cliente incorporando a nova información dos recursos. + +Precondicións + * É necesario que as referencias aos criterios que cumpren os recursos estean dispoñibles na aplicación. + * Débense cumprir as restricións temporais da aplicación dos criterios nos casos dos criterios que só poden ter un único valor no mesmo instante do tempo. + * É necesario que as categorías de custo ás que pertencen os recursos xa foran importadas previamente en NavalPlan. + * Un recurso só pode pertencer a unha categoría de custo nun momento do tempo. + * Se se incorpora un calendario de traballo para o recurso, este deberá estar dado de alta na aplicación no momento da importación. + +Postcondicións + * As novas instancias serán incorporadas ao sistema coa información dos seus criterios e categorías de custo. Se se indicou un calendario do recurso crearase un calendario de recurso derivado do indicado no XML, noutro caso crearase un calendario derivado do calendario por defecto da empresa. + * As instancias que existían previamente no sistema: + + * os seus campos propios serán actualizados coa nova información. + * as relacións con novos criterios e categorías de custo serán incorporadas. Nunca se borrarán categorías nin criterios se non son incorporados na aplicación xa que poden ter sido dados de alta a través da interface web de NavalPlan. En caso de incoherencia nunca se borrará a información de NavalPlan e reportarase a existencia de inconsistencias para que sexan emendadas. + +Clases involucradas en NavalPlan + .. image:: resources.png + :width: 350 + :alt: Diagrama de Clases do dominio de Recursos en NavalPlan + + +Descrición do fluxo + 1. A aplicación cliente que se integra xerará un ficheiro seguindo o formato detallado. + #. A aplicación cliente realiza a chamada ao servizo web cos datos de autorización. + #. O servizo web procesa a alta de novos recursos e actualiza os datos dos recursos existentes. + #. O servizo web devolve nun XML a saída de erros ou a correcta execución do servizo. + #. A aplicación cliente procesa a saída XML do servizo e reporta o éxito ou os erros detectados polo servizo. + +Información de realización da chamada + * *URL Servizo*: BASE_SERVICE_URL/resources + * *Exemplo URL*: https://naval.igalia.com/navalplanner-webapp/ws/rest/services/resources + * *Método POST* + +Descrición do formato do ficheiro XML + * Nodo resource-list: raíz da importación de recursos. Poder conter un ou varios nodos de tipo machine ou worker. + + * Nodo machine: representa un recurso máquina. + + * Atributo code (String): código único compartido entre NavalPlan e outras aplicacións que referencia a unha máquina. + * Atributo name (String): nome que identifica a máquina. + * Atributo description (String): describe a máquina. + * Nodo criterion-satisfaction-list: inclúe a lista de satisfacción de criterios. Pode conter un ou varios nodos de tipo criterion-satisfaction. + + * Nodo criterion-satisfaction: representa que un recurso cumpre un criterio nun momento do tempo. + + * Atributo code (String): código único compartido entre NavalPlan e outras aplicacións que referencia a un criterio. + * Atributo criterion-type-name (String): nome descritivo do tipo de criterio ao que pertence o criterio en cuestión. + * Atributo criterion-name (String): nome descritivo do criterio que se aplica neste nodo criterion-satisfaction. + * Atributo start-date (String): data de inicio do cumprimento do criterio polo recurso en formato ISO 8601 (YYYY-MM-DD). + * Atributo end-date (String): date de finalización do cumprimento do criterio polo recurso en formato ISO 8601 (YYYY-MM-DD). + + * Nodo resource-cost-category-assignment-list: inclúe a lista de categorías de custo ás que pertence o recurso ao longo do tempo. Pode conter un ou varios nodos de tipo resources-cost-category-assignment. + + * Nodo resources-cost-category-assignment: representa que un recurso pertence a unha categoría de custo nun momento do tempo. + + * Atributo code (String): código único compartido entre NavalPlan e outras aplicacións que referencia a unha categoría de custo. + * Atributo cost-category-name (String): nome descritivo da categoría de custo a que pertence o recurso. + * Atributo start-date (String): data de inicio da pertenza á categoría de custo en formato ISO 8601 (YYYY-MM-DD). + * Atributo end-date (String): data de finalización da pertenza á categoría de custo en formato ISO 8601 (YYYY-MM-DD). + + * Nodo worker: representa un recurso humano. + + * Atributo code (String): código único compartido entre NavalPlan e outras aplicacións que referencia a un traballador. + * Atributo first-name (String): nome do traballador. + * Atributo surname (String): apelidos do traballador. + * Atributo nif (String): nif do traballador. + * Nodo criterion-satisfaction-list: seguindo o formato detallado para as máquinas. + * Nodo resources-cost-category-assignment-list: seguindo o formato detallado para as máquinas. + +Exemplo de ficheiro de importación + :: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Incorporación de Partes de Traballo +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Descrición + * A incorporación de partes de traballo permitirá a importación da información dos partes de traballo dende outras aplicacións. + * Os partes de traballo reflexan que un recurso dedicou nunha data un número de horas dun tipo traballando nun elemento do pedido. + * Os partes de traballo incorporan un código de parte, un código do recurso, o código do traballo, o código do tipo de horas, a data de realización, o número de horas e opcionalmente unha hora de inicio e unha hora de fin. + * Exemplo: O operario Xavier dedicou 3 horas extras o 2 de xaneiro de 2010 na orde de traballo C5232. + +Roles + * Cliente: proporciona nova información sobre os partes de traballo ao servidor NavalPlan. + * Servidor: procesa a petición do cliente incorporando a nova información dos partes de traballo. + +Precondicións + * Os partes de traballo farán referencia a entidades recurso, código do elemento do pedido e código de tipo de horas existentes previamente na aplicación. + * A codificación dos partes de traballo e única. + +Postcondicións + * Os novos partes de traballo serán incorporados ao sistema. + * Os partes xa existentes verán actualizada a súa información. + +Clases involucradas en NavalPlan + .. image:: workreports.png + :width: 400 + :alt: Diagrama de Clases do dominio de Partes de Traballo en NavalPlan + +Descrición do fluxo + 1. A aplicación cliente que se integra xerará un ficheiro seguindo o formato detallado. + #. A aplicación cliente realiza a chamada ao servizo web cos datos de autorización. + #. O servizo web procesa a alta de partes de traballo e actualiza os datos dos xa existentes. + #. O servizo web devolve nun XML a saída de erros ou a correcta execución do servizo. + #. A aplicación cliente procesa a saída XML do servizo e reporta o éxito ou os erros detectados polo servizo. + + + + +Exemplo de ficheiro de importación: + :: + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + + + + +Incorporación de Pedidos +~~~~~~~~~~~~~~~~~~~~~~~~ + +Descrición + * A incorporación de pedidos permitirá a importación da información dos pedidos dende outras aplicacións. + * Os pedidos reflexan unha estructura do traballo que e preciso realizar dunha forma xerarquica. + * Os cada elemento do pedido está codificado, e estes códigos serán os empregados para referenciar aos partes de traballo. + * Os elementos do pedido poderán incorporar información referente a criterios necesarios para a realización dos traballos. + * Os elementos do pedido poderán incorporar etiquetas que poderán ser empregadas para a realización de filtrados. + * Os elementos do pedido poderán incorporar necesidades de materiais que poderán ser empregadas no planificador. + * A estructura de traballo pode incorporar a información do número de horas de traballo presupuestadas para cada elemento. Esta etimación será realizada nos nodos folla. + +Roles + * Cliente: proporciona nova información sobre os pedidos ao servidor NavalPlan. + * Servidor: procesa a petición do cliente incorporando a nova información dos pedidos. + +Precondicións + * Os pedidos e os elementos do pedido terán unha codificación unica dentro da empresa. + * Os materiais, etiquetas e criterios referenciados deberán ter sido previamente importados a NavalPlan. + * Un pedido previamente importado permitirá a incorporación de novos nodos sempre e cando non se modifique a estructura dos nodos existentes previamente. + + +Postcondicións + * Os novos pedidos serán incorporados ao sistema. + * Os pedidos xa existentes verán actualizada a súa información. + + * Non se eliminarán referencias a materiais, etiquetas ou criterios no proceso de actualización, xa que estas poideron ser creadas dentro de NavalPlan. + * Actualizarase a información dos elementos do pedido. + +Clases involucradas en NavalPlan + .. image:: orders.png + :width: 350 + :alt: Diagrama de Clases do dominio de Pedidos en NavalPlan + + +Descrición do fluxo + 1. A aplicación cliente que se integra xerará un ficheiro seguindo o formato detallado. + #. A aplicación cliente realiza a chamada ao servizo web cos datos de autorización. + #. O servizo web procesa a alta de pedidos e actualiza os datos dos xa existentes. + #. O servizo web devolve nun XML a saída de erros ou a correcta execución do servizo. + #. A aplicación cliente procesa a saída XML do servizo e reporta o éxito ou os erros detectados polo servizo. + +Exemplo de ficheiro de importación + :: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ..... + + + +Exportación de Horas Traballadas por Recursos +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Descrición + * A incorporación de partes de traballo ou a introducción dos mesmos a través da aplicación permite obter a dedicación dos recursos. + * O servizo de exportación por horas permitiranos consultar o total de horas de traballo desenvoltos polos recursos nun periodo de tempo. + * O servizo permitirá unha consulta global que mostrará a información de horas traballadas desglosada en tódolos recursos que traballaron no periodo de tempo. + * O servizo permitirá unha consulta particular que mostrará a información do recursos particular nun periodo de tempo. + +Roles + * Cliente: pide a aplicación NavalPlan indicando un periodo de tempo, e opcionalmente o código dun recurso, o dato de horas traballadas. + * Servidor: procesa a petición do cliente xerando un ficheiro XML coa información das horas traballadas por cada un dos recursos da empresa ou dun recurso particular. + +Precondicións + * No caso de consultas particulares o código do recurso consultado existe na aplicación. + +Postcondicións + * Obtense o sumatorio para cada recurso do número de horas traballadas nun periodo de tempo. + * Se a consulta é particular, obtense únicamente o número de horas traballadas por ese recurso. + +Clases involucradas en NavalPlan + .. image:: workedhours.png + :width: 150 + :alt: Diagrama de Clases do dominio de Recursos en NavalPlan + +Descrición do fluxo + 1. A aplicación cliente que se integra fara unha petición ao servizo indicando o periodo de tempo e opcionalmente o código do recurso. + #. A aplicación cliente realiza a chamada ao servizo web cos datos de autorización. + #. O servizo web procesa a petición, e xera un ficheiro XML coa información de hotras traballadas polos recursos no periodo. + #. O servizo web devolve o XML ou a saida de erros se a execución do servizo non foi correcta. + #. A aplicación cliente procesa a saída XML do servizo e incorpora os datos sobre horas traballadas ou procesa os erros detectados polo servizo. + + +Exemplo de ficheiro de importación: + :: + + + + + + + + + +Fluxos con outras instancias de NavalPlan +----------------------------------------- + +Exportación-importación de Pedidos entre empresas Cliente-Proveedor +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Descrición + * A incorporación de pedidos permitirá a importación da información dos pedidos dende a aplicación navalplan dunha empresa subcontratante. + * Os pedidos reflexan unha estructura do traballo que e preciso realizar dunha forma xerarquica. + * Os cada elemento do pedido está codificado, e estes códigos serán os empregados para reportar os avances a empresa subcontratante. + * Os elementos do pedido poderán incorporar etiquetas que poderán ser empregadas para a realización de filtrados. + * Os elementos do pedido poderán incorporar necesidades de materiais que poderán ser empregadas no planificador. + * A estructura de traballo pode incorporar a información do número de horas de traballo presupuestadas para cada elemento. Esta estimación será realizada nos nodos folla. + +Roles + * Cliente: aplicación NavalPlan que remite un novo pedido a outra empresa cunha instalación de NavalPlan. + * Servidor: procesa a petición do cliente incorporando o novo pedido + +Precondicións + * Os pedidos e os elementos do pedido terán unha codificación única dentro da empresa que xera a subcontratación. Non se poden mezclar codificacións dunha mesma empresa. + * Os materiais, etiquetas e criterios referenciados deberán ter un código na incorporación que será referenciado coma código externo. + * Un pedido previamente importado permitirá a incorporación de novos nodos sempre e cando non se modifique a estructura dos nodos existentes previamente. + +Postcondicións + * O novo pedido será incorporados ao sistema. + * Se o pedido xa estaba no sistema actualizaránse os datos. + * Non se eliminarán referencias a materiais ou etiquetas no proceso de actualización, xa que estas poideron ser creadas dentro de NavalPlan. + * Actualizarase a información dos elementos do pedido. + +Descrición do fluxo + 1. A aplicación NavalPlan cliente (a empresa subcontratante) que se integra xerará un ficheiro seguindo o formato detallado. + #. A aplicación cliente realiza a chamada ao servizo web (da empresa subcontratista) cos datos de autorización. + #. O servizo web procesa a alta de pedidos e actualiza os datos dos xa existentes. + #. O servizo web devolve nun XML a saída de erros ou a correcta execución do servizo. + #. A aplicación cliente procesa a saída XML do servizo e reporta o éxito ou os erros detectados polo servizo. + +Exemplo de ficheiro de importación + :: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Exportación-importación de Avances entre empresas Proveedor-Cliente +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Descrición + * A incorporación de avances de pedidos permitirá a comunicación dos avances dos pedidos incorporados mediante o módulo de xestión de subcontratas. + * A incorporación de avances respetará a estructura xerarquica do pedido. Ao estar codificados os elementos do pedido, as medidas de avances estarán asociadas aos nodos do pedido. + * O avance remitido será o que teña a empresa subcontratista de tipo *subcontractor*. Este avance sempre terá tipo porcentual. + +Roles + * Cliente: aplicación NavalPlan que remite as medicións de avances dun pedido comunicado previamente por outra empresa usuaria de NavalPlan. + * Servidor: procesa a petición do cliente incorporando as novas medicións de avance. + +Precondicións + * O pedido fora comunicado mediante o módulo de xestión de subcontratas. + * Os pedidos e os elementos do pedido terán unha codificación única dentro da empresa que xera a subcontratación e están sincronizados nas dúas empresas. + * Non se poden mezclar codificacións dunha mesma empresa. + * A empresa que xera a subcontratación non pode modificar a organización nen codificación dos elementos codificados. + +Postcondicións + * A empresa subcontratante incorpora as medicións de avance proporciondas pola emrpesa subcontratista. + +Descrición do fluxo + 1. A aplicación NavalPlan cliente (a empresa subcontratista) que se integra xerará un ficheiro seguindo o formato detallado. + #. A aplicación cliente realiza a chamada ao servizo web (da empresa subcontratante) cos datos de autorización. + #. O servizo web procesa as medicións de avances e actualiza os datos dos xa existentes. + #. O servizo web devolve nun XML a saída de erros ou a correcta execución do servizo. + #. A aplicación cliente procesa a saída XML do servizo e reporta o éxito ou os erros detectados polo servizo. + +Exemplo de ficheiro de importación de avances. + :: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Desenvolvemento dun cliente +=========================== + +Nesta sección mostrase o código de exemplo de dous scripts shell que permiten unha operación de importación de recursos e outra de exportación de criterios. + +Código de exemplo +----------------- + +O seguinte script permite interactuar co servizo de importación de recursos empregando unha sinxela petición HTTP e enviando o XML mediante POST. + +:: + + #!/bin/sh + + DEVELOPMENT_BASE_SERVICE_URL=http://localhost:8080/navalplanner-webapp/ws/rest + PRODUCTION_BASE_SERVICE_URL=https://naval.igalia.com/navalplanner-webapp/ws/rest + + DEVELOPMENT_CERTIFICATE="" + PRODUCTION_CERTIFICATE=-k + + printf "Login name: " + read loginName + printf "Password: " + read password + + baseServiceURL=$DEVELOPMENT_BASE_SERVICE_URL + certificate=$DEVELOPMENT_CERTIFICATE + + for i in "$@" + do + if [ "$i" = "--prod" ]; then + baseServiceURL=$PRODUCTION_BASE_SERVICE_URL + certificate=$PRODUCTION_CERTIFICATE + else + file=$i + fi + done + + if [ "$file" = "" ]; then + printf "Missing file\n" 1>&2 + exit 1 + fi + + authorization=`./base64.sh $loginName:$password` + + curl -sv -X POST $certificate -d @$file \ + --header "Content-type: application/xml" \ + --header "Authorization: Basic $authorization" \ + $baseServiceURL/resources | tidy -xml -i -q -utf8 + + +O seguinte código de exemplo fai unha petición por GET que nos devolve o listado de tipos de criterios e criterios que están dados de alta na aplicación nun XML que segue o formato definido. + +:: + + #!/bin/sh + + DEVELOPMENT_BASE_SERVICE_URL=http://localhost:8080/navalplanner-webapp/ws/rest + PRODUCTION_BASE_SERVICE_URL=https://naval.igalia.com/navalplanner-webapp/ws/rest + + DEVELOPMENT_CERTIFICATE="" + PRODUCTION_CERTIFICATE=-k + + + printf "Login name: " + read loginName + printf "Password: " + read password + + if [ "$1" = "--prod" ]; then + baseServiceURL=$PRODUCTION_BASE_SERVICE_URL + certificate=$PRODUCTION_CERTIFICATE + else + baseServiceURL=$DEVELOPMENT_BASE_SERVICE_URL + certificate=$DEVELOPMENT_CERTIFICATE + fi + + authorization=`./base64.sh $loginName:$password` + + curl -sv -X GET $certificate --header "Authorization: Basic $authorization" \ + $baseServiceURL/criteriontypes | tidy -xml -i -q -utf8 diff --git a/doc/src/technical/guia-integracion-terceiros/labels.png b/doc/src/technical/guia-integracion-terceiros/labels.png new file mode 100644 index 0000000000000000000000000000000000000000..aa65c23d198690f0667f3a64ab672c8cd298f014 GIT binary patch literal 3639 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 Xb7mALZnMuEq91_JHP#_%-+S~g@{SuD literal 0 HcmV?d00001 diff --git a/doc/src/technical/guia-integracion-terceiros/materials.png b/doc/src/technical/guia-integracion-terceiros/materials.png new file mode 100644 index 0000000000000000000000000000000000000000..7543677d175d4a67ba49fe71c8c475bea36a8856 GIT binary patch literal 7885 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

an+0a>?SJt{3`j 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 literal 0 HcmV?d00001 diff --git a/doc/src/technical/guia-integracion-terceiros/orders.png b/doc/src/technical/guia-integracion-terceiros/orders.png new file mode 100644 index 0000000000000000000000000000000000000000..8c19e7454d6948d8c12941c7727ea95b21f228be GIT binary patch literal 58560 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 UWFv6(r9X_9f1v^?dH%-#Umrrlga7~l literal 0 HcmV?d00001 diff --git a/doc/src/technical/guia-integracion-terceiros/resources.png b/doc/src/technical/guia-integracion-terceiros/resources.png new file mode 100644 index 0000000000000000000000000000000000000000..b5274caf85f32497fab473cd804612a93a8fd2b8 GIT binary patch literal 19962 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 q@#}&k^UyC)#FR9zD+1ZP8##T^!x#aZOr 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 literal 0 HcmV?d00001 diff --git a/doc/src/technical/guia-integracion-terceiros/workreports.png b/doc/src/technical/guia-integracion-terceiros/workreports.png new file mode 100644 index 0000000000000000000000000000000000000000..b504c748cb9cdd1699ce8bb158ea1b700eda7a67 GIT binary patch literal 78249 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 literal 0 HcmV?d00001