AnP

Base

El desarrollo de AnP se basa en estructuras que dependen de cada uno de los lenguajes, cogiendo éstos las partes pertinentes a su lado de desarrollo. En éstos nos encontramos elementos comunes a todos o una gran parte de ellos. Como base común del AnP nos encontramos el siguiente flujo de funcionamiento por cada librería que lo compone:

  • typemermaid
  • characters435
  • lines25
flowchart TD

subgraph "Object AnP"
    subgraph Common
        B["Construir"]
        ST["Iniciar"]
        _B{"¿Está construido?"}
        _ST{"¿Está iniciado?"}
    end
    subgraph Full
        U["Actualizar"]
        SP["Detener"]
        R["Reiniciar"]
        R_ST{"¿Está iniciado?"}
    end
end

_B -->|No| B
_B -->|Si| _ST
_ST -->|No| ST
_ST -.->|Sí| SP
R -.-> R_ST
R_ST -.->|Sí| SP -.->|"al reiniciar"| ST
R_ST -.->|No| ST

Aquí podemos ver que toda librería estaría diseñada para que tenga un iniciador, y opcionalmente, un sistema de detención de la misma, lo que nos permitiría incluso el reinicio de la misma. También nos encontramos un elemento de actualizaciones, es decir, en los casos de librerías de estructura completa como sucedería en Python, éstas tienen la capacidad de poder ser actualizadas en sus datos cogidos de servidor, como por ejemplo las configuraciones, donde podríamos actualizar en caliente la configuración.

ObjectClass
ObjectClass
voidglobalpublicObjectClassRequiredAnPanpRequiredNullishObject<String, Any|null>|Array<Object<String, Any|null>>inputs
NameRequiredNullableTypedDefault Value
anpTrueFalseAnP
inputsTrueTrueObject<String, Any|null>|Array<Object<String, Any|null>>
NameRequiredNullableTypedDefault Value

Esta sería la llamada a la clase que crea el objeto que estamos trabajando.

En el caso de lenguajes como JavaScript nos encontraremos una función que la simule.

Los objetos tienen la peculiaridad de que éstos conocen al origen del objeto AnP donde se anidan, de esta forma pueden llamar a los componentes y elementos que lo conforman internamente. El argumento que acompaña al propio objeto AnP no es más que parámetros de configuración o simples parámetros de funcionamiento.

self
ObjectClass.self
ObjectClassobjectprivateObjectClass.self
NameRequiredNullableTypedDefault Value
NameRequiredNullableTypedDefault Value

Representa a él mismo como objeto, equivalente al this, pero con ambito común a todo el objeto, independientemente del nivel heredado en el que se encuentre. Se usa principalmente para poder simular un this que sea único cara el objeto que se trabaja, independientemente de los elementos que se crean internamente, sino, como pasa con el ámbito de las clases de JavaScript, se pueden perder las referencias y las memorias de lo que se quiere atacar.

Este elemento es básico para trabajar con la filosofía de clases tipo Java sobre un objeto construído a partir de una función pues si sólo se hace uso y referencia de los this, éstos quedarían en uso del nivel donde se trabaje, aquí quedaría totalmente independiente dicho factor.
Este elemento es omitido en lenguajes como PHP, Java, etc. Por el hecho de ya tener el funcionamiento esperado de this.
set_basics
ObjectClass.set_basics
voidobjectpublicObjectClass.set_basics
NameRequiredNullableTypedDefault Value
NameRequiredNullableTypedDefault Value

El método público "set_basics" nos permite unificar el sistema que establece los valores necesarios para el funcionamiento de cada librería dependientes de configuraciones y otros puntos que pueden ser variados a lo largo de la vida de ejecución de la aplicación en cuestión, por ejemplo, si hablamos de un objeto que se genera, durante su construcción, éstos parámetros ya tienen que existir, pero aún no fue iniciado la aplicación AnP pues está en la fase de construcción, y tras la fase de iniciación es cuando se establecerán realmente los valores finales. Además, este método permite una ayuda rápida cara unificar lo que serían valores específicos de configuración que cara un simple reinicio o Update del objeto, éste pueda ser relanzado sin afectar al resto del objeto.

constructor
ObjectClass.constructor
voidobjectprivateObjectClass.constructor
NameRequiredNullableTypedDefault Value
NameRequiredNullableTypedDefault Value

Esta función privada viene siendo un Singleton el cual es llamado al terminar de ejecutar la función del objeto ObjectClass al que hace referencia. Dicha función tendría la creación de todos los elementos asignados en su interior, por ejemplo, en el caso de la clase maestra AnP, tendríamos dentro del propio constructor la creación de los objetos que gestionan las configuraciones, la I18N, los hilos de proceso, etc.

Este elemento puede existir como constructor cuando el lenguaje así lo especifica cara un objeto, como puede ser el caso de Java, Python, C#, etc. Pero en los casos en los que éstos no se usan o por filosofía de desarrollo, este elemento ha de ser simulado, éste es implementado, como pasa con la filosofía que se sigue en JavaScript con las clases simuladas a partir de una función.
start
ObjectClass.start
BooleanobjectpublicObjectClass.startRequiredNullishFunctioncallback
NameRequiredNullableTypedDefault Value
callbackTrueTrueFunction
NameRequiredNullableTypedDefault Value

El método público "start" nos permite iniciar la librería una vez ésta esté construída.

El inicio de una librería y su construcción son distintos, y se diferencian con motivo de que la construcción es sólo crear los objetos que lo constituyen, mientras que el inicio es conseguir los datos necesarios para su trabajo así como el inicio de las acciones, automatizaciones y gestiones para su buen funcionamiento completo. Mientras una librería no esté iniciada, aunque ésta esté construída como objeto, puede tener comportamientos no esperados.

Este método puede funcionar de forma síncrona y asíncrona dependiendo del caso, por ejemplo, si estamos hablando de iniciar un automatismo, ésta sería síncrona pues no requiere de esperar, sólo iniciar; pero si se requiere de conseguir datos de servidor, por ejemplo, como sucede tanto con la librería Settings o I18N, éstas serían asíncronas, ejecutando el Callback a destiempo, normalmente, del retorno dado. Este es el motivo por el cual se aconseja encaricidamente el uso del Callback para gestionar los inicios de los objetos.

Este método retorna de forma síncrona y con tipado Booleano, si ha sido ejecutado correctamente o no; y con el mismo tipado, pero de forma asíncrona, se enviará como parámetro al Callback.

Es importante mencionar que si un objeto que trabaja esta filosofía ya está iniciado, este método retornará o enviará "false" pues está diseñado para controlar que sólo pueda ser usado en el objeto cuando éste no esté iniciado, permitiendo no sólo hacer inicios únicos controlados sino también detención de objetos y reinicios de los mismos de una forma plenamente controlada. Su condición es la variable privada local started, variable que controla dicho flujo de trabajo.