La Utilidad de las APIs en Plex

Las APIs, en general, constituyen la cara visible de una de las posibilidades más valiosas en Plex, que es la de poder integrarse, o integrar, a otros sistemas heredados, y de extenderse a ambientes múltiples. Esta característica puede ser vista en dos planos:

En el primer caso, las APIs son porciones de código fuente escritas en el lenguaje en que se está generando la aplicación en que está encajada. Su finalidad será la de extender, afinar, especializar, mejorar, la utilización del código en que se está generando. El código fuente soportado por Plex puede ser C++, VBScript, JScript, SQL y ODBC, RPG/400 y Java. Existen abundantes ejemplos de su uso en los patterns de la librería WINAPI, AS400, ODBC3, y JAVAAPI. Aquí trataremos de ir incluyendo codigo fuente útil para resolver distintos problemas, que pueda complementarse o recuperar los ya hechos por otros colegas.
En el segundo caso, más allá de que estén escritas en el código fuente de la aplicación que se genera, o en la forma de un script a nivel del sistema operativo, lo que importa es el paso de parámetros para interactuar con un "objeto" probablemente heredado, de una aplicación existente, y quizá en una tecnología obsoleta.

Cuál es su punto débil

Si bien las APIs permiten extender y adaptar el modelo construído con Plex, algunas cuestiones deben ser pesadas:

Requiere buen conocimiento de la plataforma de destino
Es conveniente que una persona con buen conocimiento del lenguaje en el que el código se usará, participe en su construcción, ya que puede dar resultados distintos o inesperados si es mal insertado.
Su lógica no está representada en el modelo
La lógica que se despliega es opaca para Plex, y sólo es posible mapear los parámetros de entrada y salida que se le pasen. Cualquier otra cosa es desconocida, no es chequeada por el analizador de sintaxis, y sus inconsistencias sólo serán detectadas por el compilador o en su ejecución
Es poco flexible
Dado que se trata de un código encajado dentro del diagrama de acción, no es pasible de ningún proceso de actualización que los generadores pudieran hacer de versión en versión, tanto por mejoras en la generación de código automático, como por la adecuación en cambios en las versiones de lenguaje o sistema operativo. Así, cualquier esfuerzo y cuidado en la calidad o correlación de versión en el código, corre por cuenta del desarrollador

Las APIs conviene aplicarlas con metaoperaciones

Dado que las APIs están pensadas para actuar sobre una plataforma específica (rigidez), resolviendo un problema propio de ella, o en el modo propio de ella, es conveniente que nuestro diagrama de acción no se vea limitado por el uso de ese código fuente, y que sea posible usarlo en otro contexto, en otra variante.
Para eso, es previsor aplicar el código fuente con metaqueries que pregunten por la variante o lenguaje utilizado. Es decir, al aplicar una porción de código fuente, hay que recordar que operamos sobre una lógica abstracta, en el modelo, que en este sentido aplica polimorfismo, ya que se va a aplicar sobre una u otra plataforma. Por lo tanto, el diagrama de acción opera a un nivel que debe independizarse de la plataforma. Si tenemos esa precaución, el día que aplicamos nuestro modelo sobre otro ambiente, podemos confiar en que el monto de cambios con el que trataremos, será bajo a muy bajo. Qué metaoperaciones están disponibles y deben usarse al insertar código fuente?

+If
{Variant: variant|Language: language|Version: version|Level: level}
[source code]

Por ejemplo: +If Language:Winc
API Call WINAPI/SelectGridRow

Tentativa de repositorio de APIs

Esta sección se irá desplegando en las próximas semanas con referencias a ejemplos existentes en la documentación, en los casos publicados por otros colegas, y en casos explicados aquí.

APIS C o C++

Requieren que la variante de generación de la función que la llama sea WINC. Puede, tal como se ha dicho, usarse una metaoperación para interrogar si el lenguaje de generación es WINC

Crear un Archivo
Uso de _CREAT en C++. Para una referencia completa de la función, ver en MSDN LIbrary, Runtime Library Reference. Otra detallada explicación se encuentra en la referencia alfabética de funciones. En el mismo sitio, encontrará el repositorio completo de funciones nativas disponibles.
Renombrar un Archivo
Uso de RENAME en C
Borrar un Archivo
Uso de REMOVE en C

APIs Windows

Variante WINC. Aquí veremos algunos ejemplos de uso de llamadas a Windows, algunas ya prehechas en Plex.

StartAnExe
Iniciar un Ejecutable desde una aplicación. Una forma simple de extender sus aplicaciones, integrando Word, Exel, y otros.

APIs para trabajar con Activex (VBScript/JSCript)

Mensajería

Uso de MSMapi
Envío de correo con adjuntos con el activex MSMapi y scripts en VBScript
Uso de la clase Message de los Collaboration Data Objects
Con la clase Message de los componentes CDO (Collaboration Data Objects) de Microsoft, es posible manejar todos los aspectos del envío de mensajes.