Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR DYNAMICALLY INTRODUCING PROCESSES AND THE INSTANCES THEREOF
Document Type and Number:
WIPO Patent Application WO/2015/142197
Kind Code:
A1
Abstract:
The invention relates to a method for creating and introducing processes in a computer system, and generating and executing the instances of these processes, all without the system generating any code. Firstly, the flow diagram of a process is used to create an intermediate directed graph which is used to create the particular production system of the process, which is in turn entered into the computer system in order to introduce the process and generate the instances of same, said instances being executed according to an algorithm. In order to create any process, the algorithm can be extended for two reasons: firstly to invoke codes that exist within the computer system; and secondly, to evaluate the expressions that can help to determine the path that the instances of the processes must follow.

Inventors:
VEGA PINEDO AUGUSTO LUIS (PE)
Application Number:
PCT/PE2014/000003
Publication Date:
September 24, 2015
Filing Date:
March 17, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
VEGA PINEDO AUGUSTO LUIS (PE)
International Classes:
G06F9/44
Foreign References:
US20130332449A12013-12-12
US20060037019A12006-02-16
US4953106A1990-08-28
Download PDF:
Claims:
Reivindicaciones

Un procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, caracterizado por realizar todo en forma totalmente dinámica, es decir, realizando todo en tiempo de ejecución, y sin que el sistema informático genere código de ningún tipo, ni para la implantación de los procesos ni para la implantación y ejecución de las instancias de estos procesos, comprendiendo los siguientes pasos:

(a) Utilizar un diagrama de flujo de un proceso para crear un grafo dirigido intermedio, el cual se compone de los mismos elementos del diagrama de flujo más recolectores y valores de entrada y de salida de los recolectores.

(b) Utilizar este grafo dirigido intermedio para crear el sistema de producción del proceso, el cual se compone de un conjunto de elementos en donde cada uno se compone de una afirmación, una descripción, identificadores de componente, valores de entrada, valores de salida, invocaciones de entrada, invocaciones de salida, expresiones de entrada y expresiones de salida.

(c) Almacenar el sistema de producción, con el cual se pueden generar instancias del proceso y ejecutar éstas siguiendo un algoritmo específico.

El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 1 , caracterizado por crear el grafo dirigido intermedio del proceso comprendiendo los siguientes pasos:

(a) colocar un recolector entre cada par adyacente de elementos los cuales pueden ser grupo-de-actividades y decisión, indistintamente;

(b) colocar convenientemente valores en los conectores; en los recolectores se copian todos los valores de entrada; cada conjunto de valores contenido en un recolector debe ser único en todo el grafo;

en donde:

(a) "conector" es una línea dirigida la cual enlaza dos elementos, indica la dirección del flujo y contiene valores; cuando llega a algún elemento se llama "conector de entrada" o simplemente "entrada"; cuando sale de algún elemento se llama "conector de salida" o simplemente "salida"; los valores en una entrada se llaman "valores de entrada"; los valores en una salida se llaman "valores de salida";

(b) "recolector" es un óvalo o círculo el cual recolecta valores de entrada; (c) "grupo-de-actividades" es un recuadro el cual contiene actividades que han de realizarse cuando les toque su turno según el diagrama de flujo del proceso;

(d) "decisión" es un rombo que representa una posición en el cual el flujo bifurca de acuerdo al valor (verdadero o falso) de una condición; posee al menos una entrada y exactamente dos salidas; el flujo sigue por una de las salidas cuando la condición es verdadera, en caso contrario el flujo sigue por la otra.

El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 2, caracterizado por determinar y distribuir, de la siguiente forma, los valores de entrada y de salida de un recolector que tiene una sola entrada y una sola salida:

Un solo valor de entrada y un solo valor de salida; ambos son iguales; se le llama "simple|simple" o abreviadamente "s|s".

El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 2, caracterizado por determinar y distribuir, de la siguiente forma, los valores de entrada y de salida de un recolector que tiene una sola entrada y más de una salida, en donde estas últimas son operandos de una operación lógica "XO" (O exclusivo) de acuerdo a la lógica que hay en este punto en el diagrama de flujo del proceso:

Un solo valor de entrada y un solo valor por cada salida; todos los valores son iguales; se le llama "simple|XO" o abreviadamente "s|X".

El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 2, caracterizado por determinar y distribuir, de la siguiente forma, los valores de entrada y de salida de un recolector que tiene una sola entrada y más de una salida, en donde estos últimos son operandos de una operación lógica "Y" de acuerdo a la lógica que hay en este punto en el diagrama de flujo del proceso:

De entrada tantos valores como salidas haya; los valores de la entrada son diferentes entre sí; cada valor de la entrada va a una salida diferente; se le llama "simple|Y" o abreviadamente "s|Y".

El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 2, caracterizado por determinar y distribuir, de la siguiente forma, los valores de entrada y de salida de un recolector que tiene más de una entrada y una sola salida, en donde las entradas son operandos de una operación lógica "XO" (O exclusivo) de acuerdo a la lógica que hay en este punto en el diagrama de flujo del proceso:

Cada entrada y la salida tienen un solo valor; todos son iguales; se le llama "XO|simple" o abreviadamente "X|s".

El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 2, caracterizado por determinar y distribuir, de la siguiente forma, los valores de entrada y de salida de un recolector que tiene más de una entrada y más de una salida, en donde las entradas al igual que las salidas son operandos de una operación lógica "XO" (O exclusivo) de acuerdo a la lógica que hay en este punto en el diagrama de flujo del proceso:

Cada entrada y cada salida tienen un solo valor; todos son iguales; se le llama "XO|XO" o abreviadamente "X|X".

El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 2, caracterizado por determinar y distribuir, de la siguiente forma, los valores de entrada y de salida de un recolector que tiene más de una entrada y más de una salida, en donde las entradas son operandos de una operación lógica "XO" (O exclusivo) y las salidas son operandos de una operación lógica "Y", ambos de acuerdo a la lógica que hay en este punto en el diagrama de flujo del proceso:

Cada entrada tiene tantos valores como salidas haya; todas las entradas tienen los mismos valores; cada salida tiene un solo valor: un valor de entrada; todos los valores de salida son distintos entre sí; se le llama "XO|Y" o abreviadamente "X|Y".

El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 2, caracterizado por determinar y distribuir, de la siguiente forma, los valores de entrada y de salida de un recolector que tiene más de una entrada y una sola salida, en donde las entradas son operandos de una operación lógica "Y" de acuerdo a la lógica que hay en este punto en el diagrama de flujo del proceso: Cada entrada tiene un solo valor; todos los valores de entrada son distintos entre sí; la salida tiene como valores a la unión de todas las entradas; se le llama "Y|simple" o abreviadamente "Y|s".

10. El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 2, caracterizado por determinar y distribuir, de la siguiente forma, los valores de entrada y de salida de un recolector que tiene más de una entrada y más de una salida, en donde las entradas son operandos de una operación lógica "Y" y las salidas son operandos de una operación lógica "XO" (O exclusivo), ambos de acuerdo a la lógica que hay en este punto en el diagrama de flujo del proceso:

Cada entrada tiene un solo valor; los valores de entrada son distintos entre sí; cada salida tiene como valores a la unión de todos los valores de entrada; todas las salidas tienen los mismos valores; se le llama "Y|XO" o abreviadamente "Y|X". 11. El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 2, caracterizado por determinar y distribuir, de la siguiente forma, los valores de entrada y de salida de un recolector que tiene más de una entrada y más de una salida, en donde las entradas al igual que las salidas son operandos de una operación lógica "Y", ambos de acuerdo a la lógica que hay en este punto en el diagrama de flujo del proceso:

La cantidad de valores que tiene cada entrada es igual a la cantidad de salidas; cada salida contiene un valor de cada entrada; cada valor sólo figura en una entrada y en una salida; se le llama "Y|Y".

12. El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 2, caracterizado por construir el sistema de producción del proceso a partir del grafo dirigido intermedio del proceso, para lo cual se puede generalizar estableciendo algunos valores iniciales de entrada para todos los procesos; los procesos que requieren otros valores de entrada, pueden tener un grupo-de-actividades inicial el cual elimine los valores de entrada generalizados y establezca otros valores iniciales para comenzar el proceso; grupos-deactividades como éste no tienen afirmación ni descripción ni al menos un ¡dentificador de componente, sólo valores de entrada y valores de salida. El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 2, caracterizado por construir el sistema de producción del proceso a partir del grafo dirigido intermedio del proceso, para lo cual, por cada grupo-de-actividades debe haber el siguiente conjunto de elementos al cual se le llama "nodo": afirmación

descripción

identificadores de componente

valores de entrada

valores de salida donde afirmación, descripción e identificadores de componente son opcionales; puede haber uno o más valores de entrada y cero o más valores de salida.

El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 13, caracterizado por construir el sistema de producción del proceso a partir del grafo dirigido intermedio del proceso, para lo cual, por cada "decisión" debe haber los siguientes dos nodos, en donde el símbolo indica que el elemento que sigue debe expresarse como en su contraparte en el otro nodo, pero negada:

(a) afirmación

descripción

identificadores de componente

valores de entrada

valores de salida para cuando la condición sea verdadera

(b) -afirmación

-descripción

identificadores de componente

valores de entrada

valores de salida para cuando la condición sea falsa

El procedimiento para la implantación de procesos en un sistema informático y para la generación y ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 14, caracterizado por determinar y distribuir, de la siguiente forma, los valores de entrada y de salida de un recolector, en donde las entradas o las salidas o cada una de estas dos sean operandos de una operación lógica O (O inclusivo), de acuerdo a la lógica que hay en este punto en el diagrama de flujo del proceso:

(a) Cada afirmación incluida en una operación "O inclusivo" puede plasmarse como una condición, la cual será VERDADERA si ha de aplicarse; en caso contrario será FALSA.

(b) Considerando el punto (a) anterior, cada construcción O inclusivo del diagrama de flujo debe transformarse de tal manera que obligue a que se ejecute al menos uno de sus operandos o la alternativa. El estado final de esta parte del diagrama de flujo debe contener todas las posibilidades de ejecución, sin importar que hayan "decisiones" cuyas salidas vayan hacia un mismo destino, por ser necesario que quede registrado lo que ha sucedido durante la ejecución de la instancia.

El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 13, caracterizado por usar el siguiente algoritmo para la ejecución de las instancias generadas por los procesos, en donde un nodo activo con al menos un identificador de componente es disparado cuando un componente relacionado ha procesado de alguna forma la "afirmación" y, además, por la lógica del algoritmo, hay nodos activos que se disparan sin la intervención del componente relacionado; estos nodos no tienen ni un identificador de componente ni afirmación ni descripción.

El algoritmo:

Procedimiento 1: Permanece mientras sigue encontrando nodos abiertos, activos y sin componente (es decir, que no especifican ni un identificador de componente). A cada uno de estos lo dispara de la siguiente forma:

(a) Elimina de la memoria de trabajo (MT) los valores de entrada del nodo.

(b) Inserta en la MT los valores de salida del nodo.

(c) Cierra el nodo.

(d) Si el nodo no tiene valores de salida, retorna "A": terminó la instancia.

(e) Abre los demás nodos sin componente los cuales estén cerrados y que se activaron por efecto del disparo del nodo actual.

(f) Retorna "B" si se disparó al menos un nodo; en caso contrario, retorna "C". Procedimiento 2: Dispara un nodo con componente (es decir, que sí especifica ai menos un identificador de componente), realizando lo siguiente:

(a) Elimina de la MT sus valores de entrada.

(b) Inserta en la MT sus valores de salida.

(c) Cierra el nodo.

(d) Si el nodo no tiene valores de salida, retornar: terminó la instancia.

(e) Ejecuta el procedimiento 1. Si éste retorna "A", retornar: terminó la instancia.

(f) Abre los demás nodos con componente los cuales estén cerrados y que se activaron por efecto del disparo del nodo actual.

Procedimiento 3: Ejecuta una instancia:

(a) Acciones iniciales:

i. Inserta valores de inicio en la MT.

ii. Ejecuta el procedimiento 1.

(b) Aplica el procedimiento 2 a cada nodo en el momento que su afirmación haya sido procesada por su componente relacionado.

El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 16, caracterizado por extender el algoritmo para ejecutar códigos plasmados en el contenedor por acción de invocaciones explícitas que figuren en los nodos.

El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 17, caracterizado por extender el algoritmo para ejecutar antes de que se dispare un nodo activo, una secuencia de cero (0) o más invocaciones a códigos plasmados en el contenedor; a estas invocaciones se les llama "invocaciones de entrada"; pueden ser de dos tipos: (1) procedimientos que no retornan ningún valor y que sólo figuran como "invocaciones de entrada" por la necesidad de ejecutar algún código antes que el nodo se dispare, y (2) funciones que retornan un valor booleano (verdadero o falso) o equivalente, que en el caso de ser falso provocan que el nodo no sea disparado.

El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 17, caracterizado por extender el algoritmo para que, como parte de las acciones que han de realizarse para disparar un nodo, ejecutar una secuencia de cero (0) o más invocaciones a códigos plasmados en el contenedor; a estas invocaciones se les llama "invocaciones de salida".

20. El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 17, caracterizado por establecer estática o dinámicamente en el contenedor los códigos que han de ser invocados desde los nodos.

21. El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 17, caracterizado por establecer en forma dinámica las ligaduras entre los nodos y los códigos que han de ser invocados desde éstos; es decir, por establecer las ligaduras a partir del momento en que se implanta el proceso.

22. El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a las reivindicaciones 18 y 19, caracterizado por no poner límite a las acciones que puede realizar cada código invocado desde un nodo, ya sean estos de entrada o de salida.

23. El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 18, caracterizado por extender los elementos de un nodo para dar cabida a las invocaciones de entrada: afirmación

descripción

identificadores de componente

invocaciones de entrada

valores de entrada

valores de salida

24. El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 19, caracterizado por extender los elementos de un nodo para dar cabida a las invocaciones de salida: afirmación

descripción identificadores de componente

valores de entrada

valores de salida

invocaciones de salida 25. El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 17, caracterizado por indicar explícitamente en las invocaciones mismas que son tales elementos de nodo, como por ejemplo encerrando entre corchetes a las invocaciones.

26. El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 16, caracterizado por extender el algoritmo con el propósito de evaluar expresiones.

27. El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 26, caracterizado por evaluar expresiones cuya sintaxis puede ser la de cualquier lenguaje, existente o propio; cualquiera que sea la sintaxis escogida, cada expresión puede tener como operandos a cero (0) o más de los siguientes: identificadores que junto a sus valores se encuentren en la memoria de trabajo o en cualquier otra parte, valores de entrada o de salida de nodo, otras expresiones, etc.

28. El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 26, caracterizado por contar también con operadores que eliminen e inserten valores en la memoria de trabajo, con el fin de alterar el rumbo que se ha de continuar según el diagrama de flujo del proceso.

29. El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 26, caracterizado por evaluar cero (0) o más expresiones antes de que se dispare un nodo activo; a estas expresiones se les llama "expresiones de entrada"; asimismo, caracterizado por extender el algoritmo para que como parte de las acciones que han de realizarse para disparar el nodo, se evalúen cero (0) o más expresiones; a estas expresiones se les llama "expresiones de salida". El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 29, caracterizado por extender el algoritmo con el propósito de evaluar expresiones de entrada chequeando el valor resultante de cada una, con lo cual, en el caso de encontrar alguna cuyo tipo sea booleano o equivalente a éste, puede no disparar el nodo si es que su valor fuera falso; en los demás casos el algoritmo puede ignorar el valor de cada expresión de entrada.

El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 27, caracterizado por la utilización de "ámbitos", los cuales indican el alcance de los pares identificador-valor; es decir, el lugar o los lugares dónde se les puede utilizar: (1) ámbito de instancia: pueden ser utilizados sólo dentro de una instancia; (2) ámbito de proceso: pueden ser utilizados en todas las instancias de un mismo proceso; (3) ámbito de todos los procesos: pueden ser utilizados en todas las instancias de todos los procesos; (4) ámbito de contenedor: pueden ser utilizados por todas las instancias de todos los procesos y en el contenedor de éstos; se puede establecer al ámbito de instancia como el predeterminado.

El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 31, caracterizado por contar con operadores y operandos especiales para manejar pares identificador-valor en ámbitos determinados.

El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 31, caracterizado por optar por uno de los tres modos siguientes cuando se pretenda utilizar un mismo identificador en un cierto ámbito y en otro que éste contiene; es decir, en uno envolvente y en otro envuelto por éste:

(a) El declarado en el ámbito envolvente no es visible en el ámbito envuelto; aunque sí puede ser visible mediante alguna sintaxis especial; por ejemplo super. identificador.

(b) El declarado en el ámbito envolvente anula al que está declarado en el ámbito envuelto.

(c) No se permite que exista el mismo identificador en ámbitos envueltos y envolventes. El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a la reivindicación 26, caracterizado por indicar explícitamente en las expresiones mismas, que son tales elementos de nodo, como por ejemplo encerrando entre paréntesis a las expresiones.

El procedimiento para la implantación de procesos en un sistema informático y para la generación y la ejecución de las instancias de estos procesos, de acuerdo a las reivindicaciones 23, 24 y 29, caracterizado por evaluar a las expresiones de entrada antes de las invocaciones de entrada, intermezcladas con éstas o después de las mismas; asimismo, caracterizado por evaluar a las expresiones de salida antes de las invocaciones de salida, intermezcladas con éstas o después de las mismas; la posición que tiene cada expresión en un nodo indica el momento exacto de su evaluación.

Description:
Procedimiento para la Implantación Dinámica de Procesos y sus Instancias

Campo de la Invención

La invención puede ser aplicada por cualquier entidad, la cual tenga objetivos que puedan ser cumplidos a través de la realización de procesos, cuyo campo de 5 actividades abarca desde el sector comercial, de servicios, industrial, agropecuario, energético, minero, pesquero, de telecomunicaciones, de salud, hasta el académico, el militar, el doméstico, etc.

Antecedentes

Como es natural, en los inicios de los sistemas de información, los procesos eran 10 totalmente programados e implantados estáticamente como parte de una aplicación 1 más grande, dejándolos sin la posibilidad de que en el futuro se les pueda aplicar una reingeniería prescindiendo de tener que reimplantar sus nuevos códigos y volverlos a compilar. En el transcurso del tiempo ha habido avances al respecto llegando a establecerse estándares, con lo cual los procesos pueden ser, entre otras 15 características, creados e implantados en forma dinámica; es decir, realizando todo sin 1 tener que reiniciar el programa que los alberga.

Dado que desde cierto punto de vista, un proceso puede ser desde sólo una lógica representada mediante un diagrama de flujo, hasta la realización de actividades resultantes de inferir o inducir sobre una base de conocimientos, un proceso puede ser 0 implantado mediante una de las dos formas siguientes:

; (1) Generando directa o indirectamente código estructurado procedural. el cual se construye con sentencias simples y haciendo uso extensivo de proposiciones de tipo IF...ELSE. En los casos en que la herramienta o lenguaje de programación utilizado lo permita, dinámicamente este código generado puede ser compilado e 15 insertado en el espacio de memoria de la aplicación para su inmediato uso. Siendo ; así, no debería haber motivos para que la aplicación deba reiniciarse.

(2) Utilizando un sistema experto.

Al utilizar un sistema experto se puede manejar en forma muy efectiva una gran cantidad de información, teniendo la facilidad de obtener hasta múltiples resultados a 50 cualquier requerimiento, y con la posibilidad de que en el transcurso se realicen todas las actividades que sean necesarias y que hayan sido determinadas por efecto de la deducción o la inducción. En cambio, al utilizar la forma que genera código estructurado procedural. sería demasiado tedioso, o a veces hasta imposible, la inclusión de tanta información para obtener resultados similares; es más, generalmente se lograría sólo un resultado por requerimiento. Los sistemas expertos son tan poderosos que son empleados hasta para inferir o inducir sobre conocimiento humano experto almacenado en el sistema informático. Pero la forma que genera código estructurado procedural tiene una gran ventaja la cual hace que sea la candidata preferida para ser utilizada en ciertos sistemas: la simplicidad. Para elegir una u otra forma, hay que considerar no sólo el campo de la aplicación, sino también al personal con quien contamos para crear y utilizar los procesos. Considerando este último punto, el desarrollo y uso de un sistema experto generalmente tiene la desventaja de que requiere de gente especializada en esta materia.

La presente invención trata básicamente de un procedimiento el cual es una nueva forma de crear e implantar dinámicamente procesos muy eficaces y generar y ejecutar las instancias de éstos. Este procedimiento no requiere que el sistema informático genere directa o indirectamente código de algún tipo, tampoco hace que el sistema informático sea un sistema experto, lo cual hace que no se requiera que los usuarios encargados de crear los procesos y las instancias necesiten ser especializados. Con mayor razón, los usuarios que intervienen en la ejecución de las instancias tampoco necesitan ser especializados. Este procedimiento consiste en la obtención de un sistema de producción especial, el cual es parecido a los usados tradicionalmente por los sistemas expertos basados en reglas y de encadenamiento progresivo. El método para obtener este sistema de producción especial parte de un diagrama de flujo de un proceso, el cual se emplea para de allí obtener el sistema de producción especial usando como intermediario a un grafo dirigido. Las instancias de los procesos creados así se ejecutan en base a un algoritmo determinado.

El mecanismo normal del presente procedimiento permite mezclar procesos industríales y gerenciales, mejorando en gran medida la operatividad y liberando así de llevar personalmente los controles administrativos a los encargados de la ejecución de los procesos industriales, y a la inversa: agilizando las labores administrativas monitoreadas por procesos gerenciales los cuales tienen que ver con procesos industriales. Descripción General de la Invención

Ejemplo de Uso:

Mediante un caso ficticio, cronológicamente se muestra a continuación un ejemplo del uso de la presente invención:

• Una empresa comercial (una ENTIDAD comercial) dedicada a la venta de ciertos productos, realiza sus PROCESOS sin el uso de un CONTENEDOR (un sistema informático que puede albergar procesos) ni de un sistema computarizado cualquiera.

• Uno de sus PROCESOS es el que va desde que ingresa una cotización respectiva al pedido de un cliente, hasta que éste haya pagado totalmente los productos incluidos en la cotización o hasta que haya desistido de la compra. En la empresa, a este PROCESO le llaman C-PoD (Cotización-Pagado o Desistido), lo cual puede leerse como "cipod".

• C-PoD obliga a que las cotizaciones constantemente vayan de un área a otra de la empresa; es decir, constantemente de un COMPONENTE a otro. Para tal efecto se llevan libros de control en donde se registra el recorrido que hasta el momento se ha realizado con cada cotización. En estos libros también se registran las novedades que hayan surgido durante el recorrido de las cotizaciones.

• La empresa tiene plasmado un DIAGRAMA DE FLUJO el cual representa a C-PoD (Figura 1). En este diagrama, la convergencia "X" significa que sólo debe pasar uno de los que le preceden. Se observa que el flujo va por varias áreas (COMPONENTES) de la empresa y que tiene partes con varios hilos que deben proceder en paralelo. Se observa también que en algunos puntos hav más de un área responsable (indicadores 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011 y 1012).

• Los gerentes de esta empresa han determinado que todos los PROCESOS sean automatizados mediante un CONTENEDOR, con lo cual se quiere ganar todas las ventajas que ello conlleva. Con este propósito, han adquirido un sistema informático el cual es capaz de establecer PROCESOS dinámicamente y generar y ejecutar INSTANCIAS de los mismos, así como administrar tanto sus PROCESOS como sus INSTANCIAS.

• Mediante este CONTENEDOR, cada PROCESO se implanta en forma similar a como se implanta C-PoD: t

4

(1) A partir del DIAGRAMA DE FLUJO de C-PoD (Figura 1), se obtiene el grafo dirigido intermedio de este PROCESO (Figura 2).

(2) A partir de este grafo dirigido intermedio, se obtiene el SISTEMA DE PRODUCCIÓN ESPECIAL DEL PROCESO (Figuras 3.a, 3.b, 3.cy 3.d).

(3) El SISTEMA DE PRODUCCIÓN ESPECIAL DEL PROCESO se escribe en un archivo de texto, el cual se sube al CONTENEDOR. El CONTENEDOR lo lee y lo almacena en alguna forma conveniente. A partir de este punto, el PROCESO C-PoD queda implantado y, por lo tanto, se pueden crear INSTANCIAS de éste cada vez que entra una nueva cotización.

El sistema permite que una vez que un empleado de la empresa establezca sesión con el CONTENEDOR, éste le muestre los vínculos a todas las INSTANCIAS inconclusas de los PROCESOS las cuales involucran al área donde labora el empleado. En esta forma el empleado puede revisar el recorrido de cada INSTANCIA de PROCESO que incluye a su área de trabajo: cuando el empleado sigue alguno de estos vínculos, este sistema le muestra una tabla (por ejemplo, Figuras 4.a y 4.b) en donde se indica todo lo que ha ocurrido con la INSTANCIA y todo lo que falta por hacer.

Los vínculos a las INSTANCIAS que justo se encuentran en un estado que demandan que el área del mencionado empleado realice alguna labor, se encuentran marcadas. En estos casos, la tabla mostrada por el sistema contiene uno o más botones (por ejemplo, Figura 4.a); uno de ellos es diferente de los demás y es el que el empleado debe presionar cuando ya se haya realizado la labor indicada según el PROCESO. Después de que se haya presionado el botón, el turno puede cambiar hacia las áreas involucradas con los siguientes pasos inmediatos según el PROCESO.

En algún momento posterior, el Gerente General decide que sólo él revisaría las cotizaciones después de que el área "SAC" haya confirmado los tiempos de entrega y precios (ver Figura 1 , indicadores: 1001 , 1002 y 1003). Para que se considere este cambio en las nuevas cotizaciones, se plasma una nueva versión del DIAGRAMA DE FLUJO del PROCESO C-PoD, al cual se le llama C-PoD-v2 (versión 2 del PROCESO C-PoD). Se utiliza este diagrama para implantar esta nueva versión del PROCESO. Desde el momento en que este nuevo PROCESO se implanta en el CONTENEDOR, las nuevas cotizaciones proceden sobre INSTANCIAS relativas a esta segunda versión; las anteriores INSTANCIAS siguen con la versión inicial hasta que en algún momento terminen.

• Resulta ahora que el Gerente Administrativo desea implantar un PROCESO de marketing, al cual lo llama PM. Las INSTANCIAS de este proceso permitirán buscar oportunidades, segmentar el mercado y seleccionar un mercado resultante, analizar dicho mercado, formular estrategias de marketing, diseñar planes de acción, implementar las estrategias y controlar y evaluar los resultados. Entonces, el mismo Gerente Administrativo diseña el PROCESO plasmándolo en un DIAGRAMA DE FLUJO, procede a implantarlo como con las dos versiones anteriores de C-PoD y comienza a crear INSTANCIAS del PROCESO. En este momento existen tres PROCESOS en el sistema. C-PoD, C-PoD-v2 y PM.

El procedimiento:

Este procedimiento resuelve el problema de implantar dinámicamente PROCESOS y crear y ejecutar instancias de éstos, sin la necesidad de que el CONTENEDOR cree código alguno para el control y monitoreo, y con la ventaja de que puede ser realizado por cualquier persona capaz de diseñar diagramas de flujo. Además, para una aplicación más amplia del presente procedimiento, se incluye lo siguiente como parte de la ejecución de las INSTANCIAS: Lo primero es invocar, convenientemente, a códigos específicos incluidos en el CONTENEDOR; lo segundo es evaluar expresiones cuyos resultados contribuyen al éxito de la ejecución de las INSTANCIAS.

Los pasos son los siguientes:

(1) A partir del DIAGRAMA DE FLUJO del PROCESO se obtiene el "grafo dirigido intermedio" del PROCESO.

(2) A partir del grafo dirigido intermedio del PROCESO se obtiene el SISTEMA DE PRODUCCIÓN ESPECIAL del PROCESO.

(3) El SISTEMA DE PRODUCCIÓN ESPECIAL del PROCESO se almacena en el CONTENEDOR para la generación de las INSTANCIAS del PROCESO y para la ejecución de las mismas a través de un algoritmo específico.

(4) El algoritmo puede ser extendido para que desde las INSTANCIAS se pueda invocar a códigos ubicados dentro del CONTENEDOR, así como también para evaluar expresiones para: modificar los datos almacenados en la memoria de trabajo, alterar el rumbo tomado según el DIAGRAMA DE FLUJO, etc.

El grafo dirigido intermedio es armado con los siguientes elementos: (1) CONECTOR: línea dirigida la cual enlaza dos elementos, indica la dirección del flujo y contiene valores. Cuando un conectar llega a algún elemento se llama "conectar de entrada" o simplemente "entrada"; cuando sale de algún elemento se llama "conectar de salida" o simplemente "salida". Los valores en una entrada se llaman "valores de entrada"; los valores en una salida se llaman "valores de salida". Un mismo conectar en algún momento puede ser de entrada y en otro momento puede ser de salida, dependiendo si llega al elemento o sale de éste, respectivamente.

(2) RECOLECTOR: óvalo o círculo el cual recolecta valores de entrada.

(3) GRUPO DE ACTIVIDADES: recuadro el cual reúne actividades que han de realizarse en el momento que les toque el turno según el DIAGRAMA DE FLUJO. (4) DECISIÓN: rombo que representa una posición en la cual el flujo bifurca de acuerdo al valor (verdadero o falso) de una condición.

El grata dirigido intermedio del PROCESO se obtiene mediante los dos pasos siguientes:

(1) Considerando únicamente los elementos GRUPO DE ACTIVIDADES y DECISIÓN, se coloca un RECOLECTOR entre cada par adyacente de estos elementos.

(2) Convenientemente se colocan valores en los CONECTORES; en los RECOLECTORES se copian todos los valores de entrada; cada conjunto de valores contenido en un RECOLECTOR debe ser único en todo el grata.

Los valores de entrada y de salida de los RECOLECTORES son determinados según las siguientes construcciones:

(1) RECOLECTOR con una sola entrada y con una sola salida, el cual tiene un solo valor de entrada y un solo valor de salida; ambos son iguales. Se le conoce como "s|s".

(2) RECOLECTOR con una sola entrada y más de una salida, en donde estas últimas son operandos de una operación lógica "O exclusivo":

Un solo valor de entrada y un solo valor por cada salida; todos los valores son iguales. Se le conoce como "s|X".

(3) RECOLECTOR con una sola entrada y más de una salida, en donde estos últimos son operandos de una operación lógica "Y":

De entrada tantos valores como salidas haya; los valores de entrada son diferentes entre sí; cada valor de entrada va a una salida diferente. Se le conoce como "s|Y". (4) RECOLECTOR con más de una entrada y una sola salida, en donde las entradas son operandos de una operación lógica "O exclusivo":

Cada entrada y la salida tienen un solo valor; todos son iguales. Se le conoce como

"X[s",

(5) RECOLECTOR con más de una entrada y más de una salida, en donde las entradas al igual que las salidas son operandos de una operación lógica "O exclusivo":

Cada entrada y cada salida tienen un solo valor; todos éstos son iguales. Se le conoce como "X|X".

(6) RECOLECTOR con más de una entrada y más de una salida, en donde las entradas son operandos de una operación lógica ''Q exclusivo" y las salidas son operandos de una operación lógica "Y":

Cada entrada tiene tantos valores como salidas baya; todas las entradas tiene los mismos valores; cada salida tiene u solo, valor: u valor de entrada; todos los valores de salida son distintos entre sí. Se le conoce como "X|Y"

(7} RECOLECTOR con más de una entrada y una sola salida, en donde las entradas son operandos de una operación lógica T:

Cad entrada tiene un solo valor; todos los valores de entrada son distintos entre sí; la salida tiene como valores a la unión de todas las entradas. Se. le conoce como "Y|s".

(8) RECOLECTOR con más de una entrada y más de una salida, en donde las entradas son operandos de una operación lógica T y las salidas son operandos de una operación lógica "O exclusivo":

Cada entrada tiene un solo valor; los valores de entrada son distintos entre sí; cada salida tiene como valores a la unión de todos tos valores de entrada; todas las salidas tiene los mismos valores. Se le conoce como Ύ|Χ".

(9) RECOLECTOR con más de una entrada y más de una salida, en donde las entradas al igual que las salidas son operandos de una operación lógica "Y":

La cantidad de valores que tiene cada entrada es igual a la cantida de salidas; cada salida contiene un valor de cada entrada; cada valor sólo figura en una entrada y en una salida. Se le conoce como "Y|Y".

El SISTEMA DE PRODUCCIÓN del PROCESO se obtiene mediante los siguientes pasos: (1) Por cada GRUPO DE ACTIVIDADES en el grafo dirigido intermedio se obtiene un conjunto de elementos al cual se le llama NODO. Sus elementos son los siguientes: afirmación, descripción, identificadores de COMPONENTE, valores de entrada y valores de salida; los tres primeros son opcionales. Puede haber uno (1) o más valores de entrada y cero (0) o más valores de salida.

(2) Por cada DECISIÓN en el grafo dirigido intermedio se obtienen dos (2) NODOS, en donde los elementos del primero son: afirmación, descripción, identificadores de COMPONENTE, valores de entrada y valores de salida para cuando la condición de la DECISIÓN sea verdadera; los elementos del segundo NODO son los que siguen: --afirmación, -descripción, identificadores de COMPONENTE, valores de entrada, valores de salida para cuando la condición de la DECISIÓN sea falsa, en donde el símbolo '~' indica que el elemento que sigue debe expresarse en forma negativa.

Cuando los valores de entrada o de salida de los RECOLECTORES representen operandos de una operación lógica "O inclusivo", se debe considerar que todos los GRUPOS-DE-ACTIVIDADES y DECISIONES deben ser chequeados para determinar si han de activarse o no. Asimismo, debe haber una alternativa para cuando no se active ninguno de los GRUPOS-DE-ACTIVIDADES y DECISIONES involucrados. Una solución para el tratamiento del "O inclusivo" se da más adelante en la descripción detallada.

El algoritmo: se presenta mediante tres (3) procedimientos, en los cuales se utilizan los siguientes términos: memoria de trabajo, estados, NODO activo, NODO disparado, NODO cerrado, NODO abierto.

(1) Procedimiento 1: Permanece mientras sigue encontrando NODOS abiertos, activos y que no especifican ni un identificador de COMPONENTE. Por cada uno de éstos, realiza lo siguiente:

(a) Elimina de la memoria de trabajo los valores de entrada del NODO.

(b) Inserta en la memoria de trabajo los valores de salida del NODO.

(c) Cierra el NODO.

(d) Si el NODO no tiene valores de salida, retorna "A": terminó la INSTANCIA

(e) Abre los demás NODOS sin COMPONENTE los cuales estén cerrados y que se activaron por efecto del disparo del NODO actual.

Retorna "B" si se disparó al menos un NODO; en caso contrario, retorna "C".

(2) Procedimiento 2: Dispara un NODO que sí especifica al menos un identificador de COMPONENTE, realizando lo siguiente: (a) Elimina de la memoria de trabajo sus valores de entrada.

(b) Inserta en la memoria de trabajo sus valores de salida.

(c) Cierra el NODO.

(d) Si el NODO no tiene valores de salida, retornar: terminó la INSTANCIA.

(e) Ejecuta el procedimiento 1. Si éste retorna "A", retornar: terminó la INSTANCIA.

(f) Abre los demás NODOS con al menos un identificador de COMPONENTE, los cuales estén cerrados y que se activaron por efecto del disparo del NODO actual.

(3) Procedimiento 3: Ejecuta una INSTANCIA:

(a) Acciones iniciales:

i. Inserta valores iniciales en la memoria de trabajo.

ii. Ejecuta el procedimiento 1.

(b) Aplica el procedimiento 2 a cada NODO en el momento que su afirmación haya sido procesada por alguno de sus COMPONENTES relacionados.

Extensiones del algoritmo:

(1) El algoritmo se puede extender para que cuando ha de dispararse un NODO activo, se ejecute primero una secuencia de cero (0) o más invocaciones a códigos plasmados en el CONTENEDOR. Asimismo, se puede extender, también, para que se ejecuten cero o más códigos plasmados en el CONTENEDOR, como parte de las acciones que han de realizarse al disparar un NODO. Las primeras se llaman "invocaciones de entrada"; las segundas, "invocaciones de salida". Para tal efecto, los NODOS tendrán que incluir convenientemente a las invocaciones como parte de sus elementos.

El valor de retorno de las invocaciones de entrada puede ser relevante, pudiendo originar que el NODO no llegue a dispararse cuando sea falso un valor booleano retornado.

No hay límite para lo que pueden hacer los códigos del CONTENEDOR los cuales se pueden invocar desde los NODOS. Los códigos pueden establecerse estática o dinámicamente; las ligaduras entre códigos y NODOS ocurren dinámicamente: en el momento en que se implanta el PROCESO y en una forma dependiente del CONTENEDOR.

(2) Similarmente al caso anterior de las invocaciones, el algoritmo se puede extender para ejecutar "expresiones de entrada" y "expresiones de salida", empleando cualquier sintaxis predeterminada y encajando convenientemente las expresiones como elementos adicionales de los NODOS. Los operandos de las expresiones pueden ser pares identificador-valor los cuales se encuentren en la memoria de trabajo o en otros lugares; también pueden ser valores de entrada o de salida de NODO, así como otras expresiones, etc.

Dado que en muchos casos puede ser necesario limitar o extender el alcance o la visibilidad de los pares identificador-valor que se hayan almacenado en la memoria de trabajo, es necesario la utilización de ámbitos: de INSTANCIA, de PROCESO, de TODOS LOS PROCESOS y de CONTENEDOR. Un identificador con ámbito de INSTANCIA es visible sólo en la INSTANCIA en donde de alguna manera se ha determinado; uno con ámbito de PROCESO es visible como el de INSTANCIA y en todas las demás INSTANCIAS del PROCESO al que pertenece; uno con ámbito de TODOS LOS PROCESOS es visible como el de PROCESO y en todas las INSTANCIAS de todos los PROCESOS; uno con ámbito de CONTENEDOR es visible como el de TODOS LOS PROCESOS y en el CONTENEDOR mismo.

Siendo así, cada identificador debe pertenecer a un ámbito, pudiendo ser el de INSTANCIA el predeterminado.

Debe haber operadores y operandos especiales para manejar los pares identificador-valor en ámbitos determinados.

Para tratar los casos en donde se pretenda utilizar el mismo identificador en un ámbito cualquiera y en otro que éste envuelva, por ejemplo en el ámbito de un PROCESO (ámbito envolvente) y en el de una de sus INSTANCIAS (ámbito envuelto), se debe optar por uno de los tres modos siguientes:

(a) El declarado en el ámbito envolvente no es visible en el ámbito envuelto; aunque podría ser visible mediante alguna sintaxis especial, por ejemplo super. identificador.

(b) El declarado en el ámbito envolvente anula al que está declarado en el ámbito envuelto.

(c) No se permite que exista el mismo identificador en ámbitos envueltos y envolventes.

Para el control del flujo de los PROCESOS, deben existir operadores que eliminen de la memoria de trabajo valores que hayan sido introducidos ahí por efecto del algoritmo, o que hayan sido introducidos en forma explícita mediante el uso de otros operadores con el fin de alterar el rumbo que se ha de continuar según el DIAGRAMA DE FLUJO DEL PROCESO. En los NODOS, las expresiones de entrada pueden ubicarse antes de las invocaciones de entrada, intermezcladas con éstas o después de éstas. Las expresiones de salida pueden ubicarse en forma análoga con respecto a las invocaciones de salida. El lugar donde se coloca cada expresión en un NODO es importante por lo que indica el momento exacto de su evaluación; sólo es necesario indicar de alguna forma en el elemento mismo si es una expresión o una invocación, como por ejemplo encerrando entre corchetes a las invocaciones y entre paréntesis a las expresiones.

Lista de Figuras

Figura 1 : Diagrama de flujo del proceso de ejemplo "Cotización-Pagado o

Desistido" (C-PoD).

Figura 2: Grafo dirigido intermedio del proceso de ejemplo "Cotización-Pagado o

Desistido" (C-PoD).

Figura 3.a: Sistema de producción especial del proceso de ejemplo "Cotización- Pagado o Desistido" (C-PoD): nodos del 01 al 12.

Figura 3.b: Sistema de producción especial del proceso de ejemplo "Cotización- Pagado o Desistido" (C-PoD): nodos del 13 al 26.

Figura 3.c: Sistema de producción especial del proceso de ejemplo "Cotización- Pagado o Desistido" (C-PoD): nodos del 27 al 39.

Figura 3.d: Sistema de producción especial del proceso de ejemplo "Cotización- Pagado o Desistido" (C-PoD): nodos del 40 al 52.

Figura 4.a: Vista de una instancia del proceso de ejemplo "Cotización-Pagado o

Desistido" (C-PoD): filas de la 01 a la 28.

Figura 4.b: Vista de una instancia del proceso de ejemplo "Cotización-Pagado o

Desistido" (C-PoD): filas de la 29 a la 49.

Figura 5: Caso especial en el diseño.

Figura 6: Alternativa al diseño mostrado en la figura 5.

Figura 7.a: Ejemplo de implementación del O inclusivo: estado inicial.

Figura 7.b: Ejemplo de implementación del O inclusivo: estado final.

Figura 8: Límites de ámbitos.

Figura 9: Ejemplo de uso de expresiones.

Figura 10.a: Diagrama de flujo del proceso de ejemplo "Ruleta Electrónica" (RE) (parte

1). Figura 10.b: Diagrama de flujo del proceso de ejemplo "Ruleta Electrónica" (RE) (parte 2).

Figura 11.a: Grafo dirigido intermedio del proceso de ejemplo "Ruleta Electrónica" (RE)

(parte 1).

Figura 1 1.b: Grafo dirigido intermedio del proceso de ejemplo "Ruleta Electrónica" (RE)

(parte 2).

Figura 12: Algunos códigos plasmados en el CONTENEDOR usados por el proceso de ejemplo "Ruleta Electrónica" (RE).

Figura 13-a: Sistema de producción especial del proceso de ejemplo "Ruleta

Electrónica" (RE): nodos del 01 al 10.

Figura 13-b: Sistema de producción especial del proceso de ejemplo "Ruleta

Electrónica" (RE): nodos del 11 al 20.

Figura 13-c: Sistema de producción especial del proceso de ejemplo "Ruleta

Electrónica" (RE): nodos del 21 al 30.

Figura 13-d: Sistema de producción especial del proceso de ejemplo "Ruleta

Electrónica" (RE): nodos del 31 al 40.

Figura 13-e: Sistema de producción especial del proceso de ejemplo "Ruleta

Electrónica" (RE): nodos del 41 al 50.

Figura 13-f: Sistema de producción especial del proceso de ejemplo "Ruleta

Electrónica" (RE): nodos del 51 al 59.

Figura 13-g: Sistema de producción especial del proceso de ejemplo "Ruleta

Electrónica" (RE): nodos del 60 al 65.

Figura 14-a: Diagrama de flujo del proceso de ejemplo "Ruleta Electrónica" (RE), el cual está conectado a procesos gerenciales (parte 1).

Figura 14-b: Diagrama de flujo del proceso de ejemplo "Ruleta Electrónica" (RE), el cual está conectado a procesos gerenciales (parte 2).

Descripción Detallada de la Invención

Definiciones:

• ENTIDAD: Colectividad considerada como unidad. Especialmente cualquier corporación, compañía, institución, etc.

· OBJETIVO DE UNA ENTIDAD (o simplemente "OBJETIVO"): La obtención de un producto o servicio de la ENTIDAD, o simplemente la realización de una de sus actividades.

• COMPONENTE DE UNA ENTIDAD (o simplemente "COMPONENTE"): Parte de una ENTIDAD, el cual es independiente de los demás, pero ligado en cierta forma con éstos para realizar tareas específicas que conllevan al logro de los OBJETIVOS.

• PROCESO: Modelo de acciones encadenadas secuencial y/o paralelamente, el cual representa una guía para el logro de un OBJETIVO. Por ejemplo: el proceso llamado C-PoD de una supuesta ENTIDAD comercial, el cual contiene todas las actividades que han de realizarse desde que entra una nueva cotización hasta que ésta es cobrada totalmente o que se haya desistido de la compra.

• INSTANCIA DE PROCESO (o simplemente "INSTANCIA"): Es un ejemplar de un PROCESO, cuya ejecución conlleva al logro de un OBJETIVO. Ejemplo: en base al pedido de un cliente se crea y se ejecuta la INSTANCIA "1394666307764", la cual es un ejemplar del PROCESO C-PoD. Comúnmente una INSTANCIA es independiente de las demás. De un PROCESO pueden generarse infinitas INSTANCIAS. Por ejemplo: del PROCESO C-PoD puede generarse una INSTANCIA por cada uno de los pedidos de los clientes.

• EJECUTOR DE INSTANCIAS DE PROCESOS (o simplemente "EJECUTOR"): Es el motor que ejecuta todas las INSTANCIAS de todos los PROCESOS. Ejecuta cada INSTANCIA de manera independiente de las demás.

• SISTEMA CONTENEDOR (o simplemente "CONTENEDOR"): Cualquier sistema informático que, como parte de todas sus posibilidades, permite que los PROCESOS y un EJECUTOR le sean implantados. Permite, además, que se generen INSTANCIAS de estos PROCESOS y que sean ejecutadas por el EJECUTOR en estrecha relación con los COMPONENTES.

• DIAGRAMA DE FLUJO: Representación gráfica de un PROCESO. Utiliza símbolos con significados definidos los cuales se refieren a las acciones del PROCESO, los mismos que son conectados con flechas para indicar el flujo de ejecución. Ejemplo: Figura 1. . SISTEMA DE PRODUCCIÓN DEL PROCESO: Representación de un PROCESO el cual en un inicio puede ser sólo un texto escrito. Generalmente un SISTEMA DE PRODUCCIÓN termina almacenado para ser usado por ciertos programas de computadora. En este caso, el EJECUTOR lo requiere para ejecutar las INSTANCIAS del PROCESO.

• DINÁMICO: Que se realiza o resuelve en tiempo de corrida del programa informático. En este caso, mientras el CONTENEDOR se encuentre en ejecución.

• ESTÁTICO: Que se realiza o resuelve en tiempo de compilación del programa informático. El Problema:

Se requiere un procedimiento para crear e implantar dinámicamente PROCESOS en un CONTENEDOR, generar instancias de estos PROCESOS y ejecutarlas en interrelación con los COMPONENTES de la ENTIDAD incluidos en el CONTENEDOR, todo sin la necesidad de que el CONTENEDOR genere código alguno para el control y monitoreo de las INSTANCIAS.

El procedimiento debe permitir su empleo por cualquier persona que como mínimo sea capaz de diseñar PROCESOS, plasmarlos en un DIAGRAMA DE FLUJO y realizar algunas acciones adicionales para obtener un resultado que pueda ser almacenado (implantado) convenientemente en el CONTENEDOR. Después de la implantación, el CONTENEDOR debe permitir generar todas las INSTANCIAS del PROCESO que se requieran, las cuales deberán ser ejecutadas por el EJECUTOR del CONTENEDOR. Los PROCESOS que se implanten como parte del procedimiento y las respectivas INSTANCIAS que se generen, deben ser fácilmente administrados. Esta administración debe incluir, entre otros: (1) la implantación de nuevos PROCESOS, (2) la implantación de nuevas versiones de los PROCESOS, (3) la generación y ejecución de las INSTANCIAS de los PROCESOS, (4) la verificación del estado de cada INSTANCIA, (5) la eliminación de PROCESOS y de INSTANCIAS.

El procedimiento debe permitir la creación de cualquier proceso.

De Diagramas de Flujo a Sistemas de Producción de Procesos:

Un DIAGRAMA DE FLUJO es la representación gráfica de un PROCESO; un SISTEMA DE PRODUCCIÓN ESPECIAL inicialmente es un texto escrito. Este texto escrito es requerido por el CONTENDOR el cual lo lee y lo almacena en alguna forma conveniente y particular. El EJECUTOR hace funcionar las INSTANCIAS del PROCESO utilizando el SISTEMA DE PRODUCCIÓN ESPECIAL almacenado.

Un SISTEMA DE PRODUCCIÓN ESPECIAL es obtenido de un grafo dirigido intermedio el cual a su vez es obtenido del DIAGRAMA DE FLUJO de un PROCESO. En las siguientes secciones se muestra el procedimiento para obtener SISTEMAS DE PRODUCCIÓN ESPECIALES DE PROCESOS a partir de DIAGRAMAS DE FLUJO, así como para ejecutar las INSTANCIAS.

Obtención del Grafo Dirigido Intermedio a Partir del Diagrama de Flujo:

Tabla 1 : Elementos relevantes de un Grafo Dirigido Intermedio.

N° Elemento Nombre Descripción

Enlaza dos elementos e indica la dirección del flujo. Entra o sale de un elemento: cuando entra se le llama "CONECTOR DE ENTRADA" o simplemente "ENTRADA"; cuando sale se le llama "CONECTOR DE SALIDA" o simplemente SALIDA. Un CONECTOR DE SALIDA de un elemento

1 CONECTOR puede ser el CONECTOR DE ENTRADA del siguiente elemento.

Posee valores, preferiblemente numéricos enteros, a los cuales se les llama "VALORES DE ENTRADA" o 'VALORES DE SALIDA", siendo el primer caso cuando pertenecen a una ENTRADA, y el segundo caso cuando pertenecen a una SALIDA.

Recolección de los valores de una o más

2 RECOLECTOR

ENTRADAS para los siguientes elementos.

Actividades que han de realizarse cuando les

GRUPO-DE-

3 actividades toque su turno según el DIAGRAMA DE

ACTIVIDADES FLUJO DEL PROCESO.

Inicialmente, para obtener el grafo dirigido intermedio se considera, indistintamente, sólo los elementos GRUPO-DE-ACTIVIDADES y DECISIÓN: entre cada par adyacente de estos elementos se coloca un RECOLECTOR.

Se colocan valores en los CONECTORES, de acuerdo a la tabla 2. En cada RECOLECTOR se copian todos sus VALORES DE ENTRADA; cada conjunto de valores contenido en un RECOLECTOR debe ser único en todo el grafo.

La tabla 2 muestra las construcciones que se utilizan para determinar y distribuir correctamente los VALORES DE ENTRADA y DE SALIDA de los RECOLECTORES. Por simplicidad, si en esta tabla se muestra más de una ENTRADA para un RECOLECTOR, quiere decir que puede haber dos o más ENTRADAS; similarmente ocurre para las SALIDAS:

Tabla 2: Construcciones (s: simple, X: XO (O exclusivo), Y).

C Z X Y Z ENTRADA y en una SALIDA.

Más adelante se muestra una forma de resolver las construcciones que involucran al O inclusivo en un DIAGRAMA DE FLUJO. Obtención de un Sistema de Producción de Proceso a Partir de un Grafo Dirigido Intermedio:

Por cada GRUPO-DE-ACTIVIDADES debe haber el siguiente conjunto de elementos al cual le llamamos NODO:

afirmación

descripció

identificadores-de-componente

valores de entrada

valores de salida

donde afirmación, descripción e identificadores-de-componente son opcionales. Puede haber uno (1 ) o más valores de entrada y cero (0) o más valores de salida.

Iodo lo que sea opcional en un NODO y se encuentre ausente, debe especificarse dependiendo del algoritmo que se use para leer eí SISTEMA DE PRODUCCIÓN del

PROCESO. Por ejemplo, puede usarse un algoritmo en donde se requiera que cada elemento ausente se especifique por medio de una cadena determinada, tal como por ejemplo: *v*.

Por cada DECISI

deben haber los siguientes dos (2) NODOS, donde el símbolo f ~' indica que el elemento que sigue debe expresarse en forma negativa. Por ejempfo, sí la afirmación fuera "El Gerente General aprueba el contrato.", en forma negativa sería "El Gerente

General NO aprueba el contrato.": afirmación -afirmación

descripción descripción

identificadores-de-componente identificadores-de-componente

valores de entrada valores de entrada

valores de salida V valores de salida F Los valores de ENTRADA iniciales deben establecerse en alguna forma lógica. Por ejemplo, puede generalizarse estableciendo que el valor de ENTRADA inicial sea el cero (0) para todos los PROCESOS. Siendo así y cuando se requiera otros valores de ENTRADA iniciales, puede haber un GRUPO-DE-ACTIVIDADES inicial el cual transforme el único valor de ENTRADA, cero (0), por los otros:

Este subproceso no tiene afirmación ni descripción ni identificadores-de-componente; sólo valores de entrada y valores de salida.

Puede haber casos especiales como el paralelismo que existe en la figura 5, la cual es un fragmento del grafo dirigido intermedio de la figura 2. Ahí, los hilos pueden no unirse en el RECOLECTOR "11 12": Se necesita que ambos, el Gerente General y el Gerente Administrativo, den su visto bueno par que ta cotización pueda proseguir normalmente yendo por la salida "11 12". Pero tal como expresa la figura 5, si es falsa la DECISIÓN cuyo valor de entrada es 9, entonces el otro hilo también debería ir por "1 2 3", tal como lo hace el primero; pero si la DECISIÓN con valor de entrada 10 es verdadera, el segundo hilo de hecho toma otro camino dirigiéndose hacia el RECOLECTOR "1 12". No podría decirse que diseños como el que se muestra en la figura 5 son partes erróneas de los DIAGRAMAS DE FLUJO: por ejemplo, en este caso por algún motivo puede ser muy necesario que las dos DECISIONES involucradas se ejecuten en paralelo. Se ha utilizado este diseño en esta descripción para demostrar que con simples artificios se pueden resolver casos como éstos.

En este caso particular, de alguna forma se debe esperar que se ejecuten completamente los dos hilos para recién decidir cuál rumbo tomar: ir hacia "11 12" o hacia "1 2 3". Vea los grupos del 11 al 18 en las figuras 3.a y 3.L Como más adelante se verá, el algoritmo del EJECUTOR maneja muy bien estos casos.

La figura 6 muestra para este caso ta alternativa que nunca falta: el secuencialismo.

Tratamiento del O inclusivo (OR):

A diferencia del XO (O exclusivo), con el cual debe activarse uno y sólo un GRUPO- DE-ACTIVIDADES o DECISIÓN, el O (O inclusivo) obliga a activarse al menos uno de éstos.

El O inclusivo se implementa considerando que todos los GRUPOS-DE-ACTIVIDADES o DECISIONES serán chequeados para determinar si se han de activar o no. El diseñador del PROCESO debe establecer una alternativa para cuando ninguno de los GRUPOS-DE-ACTIVIDADES o DECISIONES involucrados se active. La siguiente solución para el O inclusivo es dependiente de que haya tal alternativa; de no haberla, sería un caso en que puede activarse cero o más GRUPOS-DE-ACTIVIDADES o DECISIONES, lo cual NO sería válido por lo que podría no activarse ninguno y provocar así que el flujo se detenga.

Solución para la Implementación del O Inclusivo (OR):

Cada afirmación incluida en una operación "O inclusivo" puede plasmarse como una condición. Por ejemplo la afirmación "prepara factura y guía", puesta como condición indica que sería VERDADERA si ha de aplicarse; en caso contrario sería FALSA. No es práctico que las DECISIONES figuren como operandos de expresiones "O inclusivo". La figura 7.a muestra el estado inicial de una disyunción lógica, en donde al menos "a" o "b" debe ejecutarse; de no ser así, debe ejecutarse alguna alternativa la cual todavía no figura en el DIAGRAMA DE FLUJO.

Esta construcción debe transformarse de tal manera que obligue a que se ejecute al menos "a" o "b" o la alternativa. La figura 7.b muestra una simple transformación la cual cumple con este requerimiento, en donde "a" y "b" ahora son condiciones y se ha añadido la alternativa mencionada. El estado final de esta parte del DIAGRAMA DE FLUJO contiene todas las posibilidades de ejecución: "a" y "b", sólo "a", sólo "b", ni "a" ni "b". No importa que hayan DECISIONES cuyas salidas vayan hacia un mismo destino: es necesario porque así queda registrado lo que ha sucedido durante la ejecución de la INSTANCIA, tal como en este ejemplo queda registrado si "b" fue aplicado o no después de que "a" haya sido aplicado.

El Algoritmo General:

Definiciones y Notas Iniciales:

• MERORIA DE TRABAJO (MT): todos los datos que actualmente intervienen en la ejecución de la INSTANCIA.

• ESTADOS: Entradas o salidas de NODO en la MEMORIA DE TRABAJO.

• NODO ACTIVO: Es todo aquel que tiene todas sus entradas en la MEMORIA DE TRABAJO.

• NODO DISPARADO: Es todo aquel que, según el algoritmo, ha sido procesado y por lo tanto sus valores de entrada ya no figuran en la MEMORIA DE TRABAJO.

• NODO CERRADO: Un NODO que se encuentra señalado como DISPARADO. • NODO ABIERTO: Es todo aquel que todavía no ha sido DISPARADO. Por la lógica del algoritmo, los nodos CERRADOS sí pueden volverse a abrir.

Un NODO ACTIVO con COMPONENTE (es decir, con al menos un identificador de componente) es disparado cuando alguno de sus COMPONENTES relacionados ha procesado, de alguna forma determinada, la "afirmación". Por ejemplo, según las figuras 4.a y 4.b, los componentes de este proceso particular son las áreas de la empresa, y sus procesamientos de afirmaciones ocurren cuando se presionan los botones de la columna "estado". En la fila 4 de la figura 4,a se aprecia que el botón "-D-" se destaca de los demás a pesar de tener la misma etiqueta, es decir, es el único activo; según el DIAGRAMA DE FLUJO del proceso C-PoD (Figura , indicador 1004), algún integrante del área "SAC" o del área "Jefe T SAC" ha entrado en el sistema y ha seguido los vínculos hasta llegar a la tabla de las figuras 4.a y 4.b. En el caso de que ya se hubiera realizado la consulta técnica respectiva, el integrante puede presionar el botón, con lo cual la afirmación quedaría procesada y generaría que se dispare el nodo correspondiente. Lo mismo por un lado lo hará un integrante del área "GIP" o del área "Asis de GIP" (Figura 4.a, fila 5) y por otro lado un integrante del área "Dpto de Manto" (figura 4.a, fila 6).

Por la lógica del algoritmo, hay NODOS activos que se disparan sin la intervención de algún componente relacionado. Estos nodos no tienen identificador-de-componente ni afirmación ni descripción (ver en el algoritmo, el procedimiento 1 y el punto 'e * del procedimiento 2).

El Algoritmo:

Procedimiento 1: Permanece mientras encuentra NODOS abiertos, activos y sin COMPONENTE (es decir, que no especifican ni un identificador de componente). A cada uno de éstos Jo dispara de la siguiente forma:

(a) Elimina de la MT los valores de entrada del NODO.

(b) Inserta en la MT Jos valores de salida deJ NODO.

(c) Cierra el NODO.

(d) Si el NODO no tiene valores de salida, retorna "A": terminó la instancia.

(e) Abre los demás NODOS sin COMPONENTE los cuales estén cerrados y que se activaron por efecto del disparo del NODO actual. (Este es el caso de un bucle.) (f) Retorna "B" si se disparó al menos un NODO; en caso contrario, retorna "C".

Procedimiento 2: Dispara un NODO con COMPONENTE (es decir, que sí especifica al menos un identificador de componente): „„

22

(a) Elimina de la MT sus valores de entrada.

(b) Inserta en la MT sus valores de salida.

(c) Cierra el NODO.

(d) Si el NODO no tiene valores de salida, retornar: terminó Ja INSTANCIA.

(e) Ejecuta el procedimiento 1. Si retorna "A", retornar: terminó la INSTANCIA.

(f) Abre los demás NODOS con COMPONENTE los cuales estén cerrados y que se activaron por efecto del disparo del NODO actual. (Este es el caso de un bucle.) Procedimiento 3; Ejecuta una INSTANCIA:

(a) Acciones iniciales:

l Inserta valores iniciales en Ja MT.

ii. Ejecuta el procedimiento 1.

(b) Aplica eJ procedimiento 2 a cada NODO en eJ momento que su afirmación fiaya sido procesada por alguno de sus COMPONENTES relacionados.

Acceso Dinámico al Código del Contenedor:

El algoritmo se puede extender para que cuando na de dispararse un NODO activo, se ejecute primero una secuencia de cero (0) o más invocaciones a códigos plasmados en el CONTENEDOR. A estas invocaciones las JJamamos "invocaciones de entrada". Las invocaciones de entrada pueden ser de dos tipos: (1) procedimientos que no retornan ningún valor y que sóio figuran como invocaciones de entrada por Ja necesidad de ejecutar algún código antes de que el NODO se dispare, y (2) funciones que retornan un valor booleano (es decir, verdadero o falso) o equivalente, que en el caso de ser falso provocan que el NODO no sea disparado.

En forma similar, el algoritmo se puede extender para que como parte de las acciones que han de realizarse para disparar un NODO, se ejecute una secuencia de cero o más invocaciones a códigos plasmados en el CONTENEDOR- A estas invocaciones las llamamos "ínvocaciones-de-salida".

Las invocaciones de salida pueden ser de cualquier tipo por lo que sus valores de retorno no provocan que el NODO deje de dispararse.

Los códigos que han de ser invocados desde los NODOS pueden haberse establecido estática o dinámicamente en el CONTENEDOR. Sea cual sea el caso, las Jigaduras entre los NODOS y los respectivos códigos ocurren en forma dinámica: a partir del momento en que se implanta el PROCESO. La forma en que ocurren Jas ligaduras es dependiente del CONTENEDOR. Cada código invocado por efecto de una invocación de entrada o de salida, puede hacer lo que sea: empleo de servicios Web, interacción con el usuario para la entrada y salida de datos, interacción con aplicaciones de TI, interacción con cualquier fuente de datos, gestión de correos electrónicos, ejecución de aplicaciones complejas de Inteligencia Artificial, acceso a dispositivos electromecánicos a través de los puertos de entrada/salida, etc.

Para soportar invocaciones a código del CONTENEDOR, los NODOS deben ser, por ejemplo, como sigue: afirmación

descripción

identifícadores-de-componente

invocaciones-de-entrada

valores de entrada

valores de salida

invocaciones-de-salida donde invocaciones-de-entrada e invocaciones-de-salida son cada uno una secuencia de cero o más identificadores de código del CONTENEDOR.

Para ejecutar oportunamente estos códigos, al algoritmo sólo se Je tendría que agregar el mecanismo para invocarlos al activarse o al dispararse el NODO, según sea él caso, teniendo en cuenta que es válido que un NODO puede no especificar invocaciones tanto de entrada como de salida. Buenos lugares para realizar las invocaciones son justo al inicio del disparo de un NODO y justo después de cerrarlo; el primero para las invocaciones de entrada, el segundo para las de salida.

Para distinguir a Jas invocaciones de los demás elementos de un NODO, de alguna forma pueden estar indicadas como lo que son, por ejemplo encerrando entre corchetes a cada invocación.

Uso de Expresiones y la Memoria de Trabajo:

El algoritmo se puede extender para que antes de dispararse un NODO activo, se evalúen cero (0) o más expresiones. La sintaxis de las expresiones puede ser la de cualquier lenguaje, tal como por ejemplo Ja del Jenguaje de programación LISP o de un lenguaje propio. Cualquiera que sea la sintaxis escogida, cada expresión puede tener como operandos (es decir, como parámetros) a cero (0) o más de Jos siguientes: identificadores que junto a sus valores se encuentren en la MEMORIA DE TRABAJO o en cualquier otra parte, VALORES DE ENTRADA o VALORES DE SALIDA de NODO, otras expresiones compuestas de la misma forma, etc. A estas expresiones las llamamos "expresiones de entrada".

Si se requiere, el algoritmo puede chequear el valor resultante de la evaluación de cada expresión de entrada, con lo cual, en el caso de encontrar alguno cuyo valor resultante sea de tipo booleano o equivalente, puede no disparar el NODO si es que el valor de éste fuera falso. En los demás casos el algoritmo puede ignorar el valor de cada expresión de entrada.

En forma similar, el algoritmo se puede extender para que como parte de las acciones que han de realizarse para disparar un NODO, se evalúen cero (0) o más expresiones cuya sintaxis sea igual a como se explicó más arriba al inicio de esta misma sección. A estas expresiones las llamamos "expresiones de salida".

Debido a que los pares identificador-valor que se hayan almacenado en la MEMORIA DE TRABAJO pueden ser utilizados como operandos de expresiones de la misma INSTANCIA o incluso de otras INSTANCIAS del mismo PROCESO, o también hasta de otros PROCESOS, es necesario la utilización del término "ámbito"; y así, respectivamente tenemos: ámbito de INSTANCIA, ámbito de PROCESO y ámbito de TODOS LOS PROCESOS. Un dato asignado al ámbito de INSTANCIA existe sólo en la INSTANCIA a la que pertenece; un dato asignado al ámbito de PROCESO existe en todas las INSTANCIAS del PROCESO al que pertenece; un dato asignado al ámbito de TODOS LOS PROCESOS existe en todas las INSTANCIAS de todos los PROCESOS.

El uso de ámbitos obliga a que los pares identificador-valor pertenezcan necesariamente a algún ámbito. Se puede establecer como ámbito predeterminado al de INSTANCIA.

Debe haber operadores y operandos (parámetros) especiales para manejar pares identificador-valor en ámbitos determinados.

Se debe considerar también el ámbito de CONTENEDOR: Todo lo que se coloque en este ámbito, puede ser manejado por el CONTENEDOR y por todas las instancias de todos los procesos.

Al igual que los otros ámbitos, debe haber operadores y operandos (parámetros) especiales para manejar pares identificador-valor del ámbito de CONTENEDOR.

La figura 8 muestra gráficamente los límites de cada ámbito. Para tratar los casos en donde se pretenda utilizar el mismo identificador en un ámbito cualquiera y en otro que éste envuelva, por ejemplo en el ámbito de un PROCESO (ámbito envolvente) y en el de una de sus INSTANCIAS (ámbito envuelto), se debe optar por uno de los tres modos siguientes:

(1) El declarado en el ámbito envolvente no es visible en el ámbito envuelto; aunque sí puede ser visible mediante alguna sintaxis especial, por ejemplo super.identificador.

(2) El declarado en el ámbito envolvente anula al que está declarado en el ámbito envuelto.

(3) No se permite que exista el mismo identificador en ámbitos envueltos y envolventes.

Para el control del flujo de los PROCESOS, deben existir operadores que eliminen de la MEMORIA DE TRABAJO valores que le hayan sido introducidos por efecto del algoritmo (Procedimiento-1.b y Procedimiento-2.b), o que hayan sido introducidos en forma explícita mediante el uso de otros operadores con el fin de alterar el rumbo que se ha de continuar según el DIAGRAMA DE FLUJO del PROCESO.

En los siguientes ejemplos, los corchetes son parte del metalenguaje: indican que lo que contiene es opcional:

(1) valores: lista de valores.

(2) ( elimina [valores] ) : elimina de la MEMORIA DE TRABAJO todos los valores especificados. Elimina todos los valores si no se ha especificado valor alguno.

(3) ( inserta valores) : inserta los valores en la MEMORIA DE TRABAJO.

(4) ( asigna identificador valor) : liga el valor al identificador.

(5) ( = expresión_1 expresión_2) : devuelve VERDADERO si el valor de la primera expresión es exactamente igual al valor de la segunda expresión.

Las expresiones de entrada pueden evaluarse antes de las invocaciones de entrada, incluso intermezcladas con éstas y también después de las mismas; el único requisito es que deben evaluarse antes de que se dispare el NODO. Asimismo, las expresiones de salida pueden evaluarse antes de las invocaciones de salida, intermezcladas con éstas o incluso después de las mismas, todo si y sólo si se evalúan por el efecto del disparo del NODO.

Las expresiones deben ser elementos de los NODOS. El lugar donde se coloca cada expresión es importante por lo que indica el momento exacto de su evaluación. Sólo es necesario indicar, de alguna forma en el elemento mismo, si es una expresión o una invocación. Por ejemplo, las expresiones pueden estar encerradas entre paréntesis, mientras que las invocaciones, entre corchetes. Lo siguiente es un ejemplo del uso de expresiones: Según el diagrama de flujo de C- PoD (Figura 1), pueden haber expresiones para que de una forma sencilla se controle la cantidad de veces que el Gerente General revisa una cotización para darle el "visto bueno" (indicadores 1001, 1002 y 1003). Puede establecerse que si la misma cotización fue rechazada una cierta cantidad de veces (por ejemplo, tres (3) veces), la cotización sea llevada al punto de inicio, tal como se indica en la figura 9 la cual es una parte modificada del grafo de la figura 2, en donde las expresiones " (asigna cont 0 ) " de la parte superior izquierda son expresiones de entrada de los NODOS iniciales de SAC, GIP y ATVS; " (= cont 2 ) " cuyo valor es verdarero si "cont" tiene a dos (2) como valor, también es una expresión de entrada; todas las demás son expresiones de salida.

Ejemplo final de Uso, Aplicado a un Problema Industrial:

En muchos centros de producción, tales como por ejemplo en algunas fábricas, la automatización ha sido y es por hoy muy anhelada. La automatización reemplaza al hombre para realizar tareas repetitivas, de precisión o de riesgo, permitiendo una gran productividad y que el ser humano se dedique al control y monitoreo de todo el sistema automatizado y sus partes mediante la utilización de un sistema computarizado.

Viendo desde un alto nivel, un sistema automatizado de producción consiste de estaciones de trabajo programables y un sistema computarizado que controla y monitorea los procesos; todos unidos y comunicados convenientemente mediante una misma red.

Una estación de trabajo programable puede hacer, por ejemplo, labores tales como: soldadura, visión, torneo, fresado, ensamblaje, prensado, así como el conveniente almacenaje y el transporte de las piezas entre estas estaciones.

Por facilidad, el sistema computarizado tiene acceso a las estaciones de trabajo a través de un dispositivo especial instalado en cada estación: un PLC (Programmable Logic Controller); un PLC tiene la capacidad de almacenar una cierta cantidad de programas del usuario, en otras palabras, puede ser establecido para realizar más de una tarea en donde cada una de ellas consiste en ordenar acciones a los dispositivos que conforman la estación de trabajo; por ejemplo, una tarea de una estación puede ser "soldar una tarjeta electrónica de tipo A", otra tarea de la misma estación puede ser "soldar una tarjeta electrónica de tipo B"; ambas tareas pueden ser invocadas en diferentes momentos de un mismo proceso. 2?

A su vez, cada tarea establecida en un PLC tiene sub-tareas, es decir, por ejemplo, para poder soldar una tarjeta electrónica, ésta tiene que ser cogida por el dispositivo, tiene que ser colocada en un cierto lugar, el brazo robot tiene que colocarse la pinza adecuada, se tiene que realizar la acción de soldar y, por último, la tarjeta tiene que ser colocada en la banda transportadora para que ésta la lleve hacía la siguiente estación de trabajo para continuar con el proceso.

Cada sub-tarea de una tarea de un PLC tiene asociado un bit de lectura/escritura dentro del mismo PLC; estos bits pueden estar ordenados lógicamente de acuerdo a la secuencia de las sub-tareas; es decir, por ejemplo de acuerdo a la secuencia que se ha mostrado justo en el párrafo de arriba, el primer bit es respectivo a la acción de coger la tarjeta, el último bit es respectivo a la acción de colocar la tarjeta en la banda transportadora.

Gracias a los bits mencionados en el párrafo anterior, para que el sistema computarizado pueda controlar y monitorear tiene que tener acceso a estos bits de cada PLC. Hay otros bits de utilidad, los cuales se pueden leer o escribir para controlar y monitorear mejor, tal como aquel que hace el papel de alarma cuando se enciende por alguna anomalía en la estación de trabajo.

Para controlar y monitorear, el sistema computarizado tiene acceso a todo lo que necesita, pero a través de los PLCs; por lo tanto el sistema computarizado sólo tiene conexión lógica con los PLCs; se puede considerar el resto de cada estación de trabajo como una capa aparte la cual puede ser programada directa e independientemente. La presente invención permite implantar dinámicamente procesos que controlan y monitorean la producción automática industrial, así como generar instancias de estos procesos; para ello es importante invocar a código del CONTENEDOR para tener acceso a cada PLC de todo el sistema de producción; es necesario, también, la ejecución de expresiones de entrada y de salida de los nodos.

Las figuras 10.a y 10.b contienen, respectivamente, la primera parte y la segunda del diagrama de flujo de un proceso industrial llamado RE ("Ruleta Electrónica"); contiene ocho (8) estaciones de trabajo:

(1) AL: Almacén (indicador 1013)

(2) FT: Faja transportadora (indicador 1014)

(3) SL: Soldadura (indicador 1015)

(4) VC: Visión - Calidad (indicador 1016)

(5) TC: Torno CNC (indicador 1017)

(6) FC: Fresadora CNC (indicador 1018) (7) EN: Ensamblaje (indicador 1019)

(8) PH: Prensa hidráulica (indicador 1020)

En la figura 10.a se observa la parte de iniciación de cada estación de trabajo (indicadores 1013 a 1020), lo cual es realizado todavía por los seres humanos: en cada estación se tiene que ordenar los materiales (O.M.), las herramientas y las materias primas -el ordenamiento en el almacén (AL) es fundamental (indicador 1013)-; se tiene que iniciar (I.D.) cada dispositivo y luego verificar si el dispositivo se ha iniciado correctamente (I.C.); si se descubre que ha ocurrido alguna falla, el hilo de iniciación regresa al paso inicial (O.M.) de la estación de trabajo, a la vez que se verifica si ha sido la tercera vez que ha ocurrido alguna anomalía, motivo por el cual se aborta la INSTANCIA dirigiéndose a donde manda la etiqueta A (indicador 1021); en el caso de que cada dispositivo haya podido iniciarse correctamente, la ejecución prosigue por donde manda la etiqueta B (indicador 1022).

En la figura 10.b se observa que todo comienza con el almacén (AL) (indicador 1023) el cual retira los materiales y los coloca en la faja transportadora; se trasladan los materiales a través de la faja transportadora (FT) (indicador 1024) hacia tres estaciones de trabajo las cuales proceden en paralelo: soldadura (SL) (indicador 1025), torno CNC (TC) (indicador 1026) y fresadora CNC (FC) (indicador 1027); después de soldar se traslada el subproducto (indicador 1028) (una tarjeta electrónica) para ser sometida a un control de calidad a través de visión artificial: visión-calidad (VC) (indicador 1029); cuando estos tres hilos paralelos terminan, se unen para trasladar (indicador 1030) las tres partes hacia el almacén (AL) (indicador 1031) para que de ahí, todo junto (indicador 1032), vaya hacía la estación de ensamblaje (EN) (indicador 1033); posteriormente se traslada el producto (indicador 1034) a la prensa hidráulica (PH) (indicador 1035) para prensar los pines; se culmina llevando el producto terminado (indicador 1036) a su destino en un lugar especial en el almacén (indicador 1037).

En la figura 10.b se observa la etiqueta A (indicador 1038), la cual tuvo su vínculo en la figura 10.a (indicador 1021); se dirige hacia el procedimiento para abortar la INSTANCIA (indicador 1039), en donde están involucradas todas las estaciones de trabajo.

Las figuras 11.a y 11. b son los grafos dirigidos intermedios respectivos a los diagramas de flujo de las figuras 10.a y 10.b; observe que por cada lazo que se da en la etapa de iniciación se incrementa en uno (1) el valor de una variable, cont?, con lo cual cada bucle puede ejecutarse, a lo más, tres (3) veces en la ejecución de una INSTANCIA. Sólo por motivos de ilustración, se presenta la figura 12 la cual contiene una parte del código del CONTENEDOR que puede ser invocado como entradas o salidas de los nodos del sistema de producción que se hará a partir del grafo dirigido intermedio; observe el procedimiento 'controlStation' (indicador 1040) el cual debe ser invocado para controlar y monitorear una tarea de un dispositivo determinado; observe que no retorna hasta que el dispositivo haya terminado con su trabajo o hasta que haya habido alguna anomalía.

Las figuras 13.a, 13. b, 13.c, 13.d, 13. e, 13.f y 13.g contienen el sistema de producción especial del proceso ER; para un mejor entendimiento se da a continuación la sintaxis general de los nodos de este sistema de producción: el orden de los elementos de cada nodo es el siguiente: afirmación, descripción, identificadores de componente, valores de entrada, valores de salida; el nodo completo está encerrado entre llaves, así como los identificadores de componente, los valores de entrada y los valores de salida; en ausencia de algún elemento opcional se coloca la cadena *v*, en el caso de ausencia de componentes relacionados se puede optar por colocar las llaves vacías, {}; dentro de las llaves que encierran a los valores de entrada también se pueden colocar expresiones de entrada e invocaciones de entrada, intermezcladas; similarmente ocurre para los valores, expresiones e invocaciones de salida; los comentarios pueden colocarse entre los dos pares de caracteres: /* y */ (estilo lenguaje C), y desde un punto y coma (;) hasta el final de la línea que lo contiene.

Esta invención le da más alcance a la automatización: permite unir o mezclar procesos industriales y gerenciales dado que el presente procedimiento es el mismo para ambos; un proceso industrial puede tener una o más ligaduras a procesos gerenciales, conformando así un solo proceso mixto.

Al proceso del presente ejemplo le podemos aumentar la característica operacional de la actualización automática del stock, dado que sólo habría que seguir el procedimiento presentado en la descripción detallada: en vez de que se realice en forma manual con la ayuda de reportes que puede brindar el sistema que controla el proceso, es mejor que este control sea un subproceso gerencial automático el cual en el momento preciso realice todo lo necesario para que el almacén vuelva a contar con el stock requerido, liberando a los empleados de llevar en archivos todos los datos necesarios para que ellos mecánicamente o por criterio realicen directamente los pedidos para la actualización de stock; de esta forma no habría errores humanos y la marcha del proceso sería siempre precisa y confiable. 3Q

Por simplicidad para la explicación, la figura 14.a muestra sólo una estación de trabajo de las mostradas en la figura 10.a; en ésta, el indicador "1041" se refiere a una condición que obliga al empleado asignado a verificar si el stock es suficiente para completar todo el proceso. Supongamos que no es suficiente por lo que en la corrida de las últimas instancias se han estado malogrando y reemplazando las tarjetas que han de ser soldadas, y en el momento ya no hay ni un repuesto disponible; siendo así, el proceso ya no va por la opción de ordenar el material (O.M.), sino por la señalada por el conector C que va hasta la figura 14. b (indicador 1043), en donde se realiza todo un subproceso gerencial para dotar del stock faltante.

También es necesaria la automatización para la realización de los mantenimientos preventivos y de los predictivos; se hace mediante una forma similar a la actualización automática del stock que se acaba de describir. Asumiendo que los mantenimientos preventivos de las estaciones de trabajo se realizan por la cantidad de productos en donde han intervenido, esta automatización se consigue anexando subprocesos gerenciales para determinar y gerenciar los respectivos mantenimientos, evitando así que un empleado vaya llevando en archivos todos los cálculos y que tome decisiones de acuerdo a los resultados. Por otro lado, el mantenimiento predictivo es necesario bajo ciertas condiciones las cuales tienen que ser interpretadas por los empleados, lo cual los responsabiliza para su detección, lo que conlleva a que la generación de errores humanos sea una posibilidad. Igualmente, con la automatización no habrá errores humanos y la marcha del proceso será más precisa y confiable.

Por simplicidad para la explicación, la figura 14.b muestra solamente el final del proceso mostrado en la figura 10.b, más lo adicional para los mantenimientos; en la figura 14.b (indicador 1044) se ve que después de almacenar un producto terminado se actualiza el stock (se incrementa en uno (1)); se ve también (indicadores 1045, 1046 y 1047) que cada estación de trabajo se encuentra involucrada en el chequeo de las condiciones para iniciar un mantenimiento preventivo a través de un subproceso gerencial, no sin antes de inhabilitar las estaciones que han de ser mantenidas por prevención; lo mismo ocurre para el caso del mantenimiento predictivo (indicadores 1048, 1049 y 1050).

Observe que los datos para la medición del stock pertenecen al ámbito de PROCESO; asimismo, los datos para la determinación de cualquier mantenimiento pertenecen al ámbito de TODOS LOS PROCESOS, considerando que más de un PROCESO usa al menos una de estas estaciones de trabajo. Por más complejos que sean los procesos industriales y los gerenciales, y por más compleja que parezca la mezcla de todos estos, no será necesario recurrir a un sistema experto. Como se ha mencionado en la descripción detallada, el presente procedimiento permite la creación e implantación de procesos como el de este ejemplo; la única diferencia que habría entre un proceso pequeño y uno inmenso es nada más que el tamaño: el mecanismo para la creación de ambos es el mismo y por lo tanto para obtener uno u otro sólo será cuestión de tiempo dependiendo del tamaño de cada proceso.