Arquitecture Parent Application with children Applications

Certified Associate Developer

I’m working on a large project that has evolved over time and is composed of several independent subprojects, each developed by a different team. While these applications have their own distinct purposes, they are interconnected and together form part of a complete workflow.

For context, an example would be:

Application A manages the creation of a request to build a building.

Application B is responsible for drafting the project with the architects.

Application C handles the necessary permissions for the construction.

Application D manages the hiring of staff to carry out the construction.

In total, there are about ten independent applications that together form a single functional process. The challenge we’re facing now is the creation of a “parent” application that centralizes and visualizes the information from these applications, providing a global view of the project’s status and details of each phase.

My concern is how to approach this “parent” application in a way that doesn’t overly depend on future changes in the “child” applications. For example, if in the parent BPM I query data from Application A to display in a table, but later new fields are added or the structure of the data changes, it could cause issues in the parent application without us realizing it. Additionally, since the development teams are separate, it’s difficult to ensure that every change in a child application is properly coordinated with the parent application, especially as the child applications will be constantly evolving.

My question is: what would be the best approach to structure this parent application to avoid dependency issues with the child applications, particularly when they undergo modifications or evolution? Are there best practices that could help mitigate these risks in a BPM environment like Appian?

  Discussion posts and replies are publicly visible

Parents
  • Certified Senior Developer
    in reply to Raúl Gómez Moya

    Hola Raúl. 

    creo que el reto que planteas es uno grande. 

    • Veo necesario implementar un levantamiento de la documentación para cada una de las sub-aplicaciones. 
    • Identificar claramente las entradas y salidas Obligatorias de cada sub-aplicación para integrarse adecuadamente es fundamental.
    • Muy seguramente vas a requerir hacer pruebas de regresión de cada sub-aplicacion y bastante ingenieria inversa para "entender" que ocurre.
    • Luego pruebas de integración para entender la interacción de las aplicaciones en el "todo" de la solución. 
    • Entiendo que cada una de las sub-aplicaciones es de alguna u otra manera "autonoma".
    • Es muy posible que encuentres redundancias entre las diferentes partes de todo el sistema a nivel del modelo de datos y la implementación de reglas de negocio. Identificalas e incluyelas en un plan de cambios si esto genera ahora mismo algún inconveniente.
    • Te diría que una buena práctica es que cuentes con una aplicación Common donde referencias aquellas reglas, record types o cdts que son comunes a lo largo de toda la aplicación. 
    • Implementar una aplicación toolkit, o consolidado de reglas utilitarias o helpers te puede ahorrar problemas luego. i.e. una regla para validar la consistema de una email address.
    • Implementar sub-procesos reutilizables para tareas básicas, como envío de correos, validación especial de roles, y otros.
    • Identifica los plug-ins que usa la aplicación y si estos aún cuentan con un soporte vigente.
    • Identifica custom connectors, y encuentra si tienes el código fuente de esto. i.e. cada jar debe contar con su projecto.
    • Identifica anti-patrones o soluciones atipicas a escenarios poco convencionales. En su momento puede que no hubiese una solución out of the box a un problema, tal vez hoy ya la hay.

    De momento no te puedo dar una solución a este problema, pero mas bien un poco de lluvia de ideas. 

Reply
  • Certified Senior Developer
    in reply to Raúl Gómez Moya

    Hola Raúl. 

    creo que el reto que planteas es uno grande. 

    • Veo necesario implementar un levantamiento de la documentación para cada una de las sub-aplicaciones. 
    • Identificar claramente las entradas y salidas Obligatorias de cada sub-aplicación para integrarse adecuadamente es fundamental.
    • Muy seguramente vas a requerir hacer pruebas de regresión de cada sub-aplicacion y bastante ingenieria inversa para "entender" que ocurre.
    • Luego pruebas de integración para entender la interacción de las aplicaciones en el "todo" de la solución. 
    • Entiendo que cada una de las sub-aplicaciones es de alguna u otra manera "autonoma".
    • Es muy posible que encuentres redundancias entre las diferentes partes de todo el sistema a nivel del modelo de datos y la implementación de reglas de negocio. Identificalas e incluyelas en un plan de cambios si esto genera ahora mismo algún inconveniente.
    • Te diría que una buena práctica es que cuentes con una aplicación Common donde referencias aquellas reglas, record types o cdts que son comunes a lo largo de toda la aplicación. 
    • Implementar una aplicación toolkit, o consolidado de reglas utilitarias o helpers te puede ahorrar problemas luego. i.e. una regla para validar la consistema de una email address.
    • Implementar sub-procesos reutilizables para tareas básicas, como envío de correos, validación especial de roles, y otros.
    • Identifica los plug-ins que usa la aplicación y si estos aún cuentan con un soporte vigente.
    • Identifica custom connectors, y encuentra si tienes el código fuente de esto. i.e. cada jar debe contar con su projecto.
    • Identifica anti-patrones o soluciones atipicas a escenarios poco convencionales. En su momento puede que no hubiese una solución out of the box a un problema, tal vez hoy ya la hay.

    De momento no te puedo dar una solución a este problema, pero mas bien un poco de lluvia de ideas. 

Children
No Data