ES2497573T3 - Salidas de sustitución en un sistema de programación y ejecución orientado por grafos de productor - Google Patents

Salidas de sustitución en un sistema de programación y ejecución orientado por grafos de productor Download PDF

Info

Publication number
ES2497573T3
ES2497573T3 ES11167918.9T ES11167918T ES2497573T3 ES 2497573 T3 ES2497573 T3 ES 2497573T3 ES 11167918 T ES11167918 T ES 11167918T ES 2497573 T3 ES2497573 T3 ES 2497573T3
Authority
ES
Spain
Prior art keywords
producer
producers
dependency
instance
class
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES11167918.9T
Other languages
English (en)
Inventor
Fady Chamieh
Elias Edde
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Murex SAS
Original Assignee
Murex SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Murex SAS filed Critical Murex SAS
Application granted granted Critical
Publication of ES2497573T3 publication Critical patent/ES2497573T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)
  • Image Generation (AREA)

Abstract

Un sistema para la sustitución de salidas, comprendiendo el sistema: un procesador; un medio de almacenamiento de máquina, acoplado al procesador, que tiene almacenado en el mismo un código orientado a objetos que incluye código de cliente que tiene comandos a ejecutar mediante el procesador, incluyendo dicho código de cliente, un comando de instanciación de productor que tiene una clave de productor para un productor de interés y que causa un entorno de ejecución de código orientado a objetos para automáticamente, en base a las declaraciones de dependencia del productor, descubrir, construir, y, opcionalmente, resolver un grafo de productores a partir del productor de interés, donde cada uno de los productores en el grafo de productores es una construcción instanciada de entorno de ejecución, donde cada productor se instancia a partir de la respectiva combinación de una instancia particular de una clase y un método particular de esa clase e identifica dicha instancia particular y dicho método particular, donde el método identificado por cada productor tiene asociada con el mismo una declaración de dependencias del productor que identifica el entorno de ejecución de un conjunto de cero o más productores, donde el entorno de ejecución instancia automáticamente alguno de los productores del grafo de productores que aún no se ha instanciado, donde las claves de productores se utilizan para distinguir los productores, donde las claves de método se utilizan para distinguir los métodos, donde las claves de instancias se utilizan para distinguir las instancias, y donde la clave de productor para cada uno de los productores se basa en al menos la clave de instancia y la clave del método de la instancia y del método identificado por ese productor; ejecutar comandos, haciendo cada uno que el entorno de ejecución para el código orientado a objetos ejecute el grafo de productores y guarde en caché una salida actual para cada uno de los productores ejecutados en el grafo de productores; y ejecutar comandos de sustitución de salidas del productor, que cada uno tiene una clave de productor y un valor de sustitución y cada uno hace que el entorno de ejecución para el código orientado a objetos sustituya la salida del productor designada por la clave de productor con el valor de sustitución.

Description

Salidas de sustitución en un sistema de programación y ejecución orientado por grafos de productor Antecedentes
Realizaciones de la invención se refieren al campo de los ordenadores, y más espec1ficamente, al campo de la programación y la ejecución de código con un entomo de ejecución.
Antecedentes
Programación orientada a objetos
15 La programación orientada a objetos es un paradigma de programación de ordenadores. La idea detrás de la programación orientada a objetos es que un programa de ordenador pueda ser visto como que comprende una colección de unidades individuales (llamados objetos o instancias) que actúan entre sí, en oposición a un punto de vista tradicional en el cual un programa puede ser visto como una colección de funciones, o simplemente como una lista de instrucciones al ordenador. Un objeto es un mecanismo de lenguaje para el enlace de datos con los métodos
20 que operan sobre esos datos. Cada objeto es capaz de ser llamado a través de métodos, datos de procesamiento, y proporcionar resultados con otros objetos. Cada objeto puede ser visto como una máquina independiente o un actor con un papel o responsabilidad distinta.
Un lenguaje reflexivo orientado a objetos es un lenguaje de programación que tiene un conjunto particular de
25 características (por ejemplo, clases, objetos/instancias, herencia, reflexión, etc.), mientras que un lenguaje reflexivo basado en objetos a veces se utiliza para etiquetar un lenguaje de programación que tiene algún subconjunto de esas caracteristicas (por ejemplo, objetos). Para los propósitos de este documento, las frases "CÓdigo fuente orientado a objetos~ y Hcódigo orientado a objetos~ se utilizan para referirse al código escrito en un lenguaje que tiene estas características (por ejemplo, código escrito en un lenguaje reflexivo orientado a objetos, código escrito en
30 un lenguaje reflexivo basado en objetos). Si bien los lenguajes del método, lenguajes no reflexivos orientados a objetos, y lenguajes no reflexivos basados en objetos son lenguajes de programación que nonnalmente no soportan estas características, se pueden utilizar técnicas de transformación para proporcionar estas características (por ejemplo, a través de la emulación) para codificar escritas correctamente en los dos lenguajes, y por lo tanto, estas técnicas transforman estos lenguajes en un lenguaje reflexivo basado en objetos o en un lenguaje reflexivo orientado
35 a objetos. (Estas técnicas no necesitan emular todas las caracteristicas de los lenguajes orientados a o basados en objetos, sino que sólo pueden emular las caracteristicas que sean de interés para el resto de este documento). Para los propósitos de este documento, las frases "código fuente orientado a objetos" y "código orientado a objetos" también se utilizan para referirse a este método transfonnado, de código de lenguaje no reflexivo orientado a objetos, y no reflexivo basado en objetos. A modo de ejemplo, y no de limitación, este documento describe
40 principalmente un código fuente orientado a objetos escrito en un lenguaje reflexivo orientado a objetos. Además, los términos objeto y ejemplo se utilizan indistintamente en este documento.
Utilizado principalmente en programación orientada a objetos, el término método se refiere a un trozo de código que está exclusivamente asociado, ya sea con una clase (llamados métodos de clase, métodos estáticos o métodos de
45 fábrica) o con un objeto (llamado métodos de instancia). Al igual que un método en lenguajes de programación de método, un método usualmente consiste en una secuencia de instrucciones para realizar una acción, un conjunto de parámetros de entrada para parametrizar las acciones, y, posiblemente, un valor de salida de algún tipo que se devuelve.
50 Cuando los programadores escriben un programa utilizando un lenguaje orientado a objetos, el código resultante puede ser visto conceptualmente como que incluye cuatro tipos básicos de cód igo. El primer tipo incluye comandos que operan en instancia(s) de entrada para proporcionar instancia(s) de salida (referidos aquí como código de "transfonnación"); tipicamente escrito como métodos (referidos aquí como métodos de "transformación"). El segundo tipo incluye comandos de instanciación de instancias que hacen que el entorno de ejecución cree instancias de
55 clases (indicados aquí como código de ~instanciación de instancias~). El tercer tipo incluye comandos de manipulación de la propiedad (indicados aquí como código de "preparación de datos") para invocar métodos de acceso de propiedad, mutaciones, etc.) de las instancias anteriores. El cuarto tipo incluye secuencias de comandos que causan que la secuenciación de invocación del método usando las instancias correspondientes (cuando las instancias apropiadas incluyen las instancias para utilizar como argumentos, las instancias son utilizadas por los
60 métodos de instancia y las instancias de ciases meta utilizadas por los métodos de clase) para especificar qué métodos de transformación de qué instancias que invocan, en qué orden, y con qué parámetros de qué instancias responden a los cambios introducidos por el código de preparación de datos (indicados aquí como código "de secuenciación de invocación manual~). El código de secuenciación de invocación manual se escribe a veces como métodos separados de los métodos de transformación, y por lo tanto, la invocación manual del código de
65 secuenciación incluye secuencias de comandos de invocación de métodos de transformación. Un programa típicamente itera entre el código de preparación de datos y código de secuenciación de invocación manual (que también puede sumergirse en el código de instanciación de instancias), que a su vez invoca el código de transformación (que también puede sumergirse en el código de instanciación de instancias y los tipos de código de preparación de datos). Cabe señalar que esta es una representación conceptual de un programa, y por lo tanto, no
5 debe ser tomada como una absoluta respecto a cómo ver un programa.
Entorno de ejecución
El entorno de ejecución término se utiliza aqui para referirse a un programa o una libreria de código básico que se
10 ejecuta otro código escrito en el mismo y/o un lenguaje diferente. Por lo tanto, un entomo de ejecución es una colección de funciones de utilidad que apoyan un programa mientras se está ejecutando, incluyendo el trabajo con el sistema operativo para proporcionar servicios tales como funciones matemáticas, de entrada y de salida. Esto hace que sea innecesario para los programadores que reescribir continuamente las capacidades básicas especificadas en un lenguaje de programación o proporcionada por un sistema operativo. Puesto que la demarcación entre un
15 entorno de ejecución y un sistema operativo puede ser borrosa, el entorno de ejecución término se utiliza aqui para referirse a código separado del sistema operativo y/o código que forma parte del sistema operativo.
Los tiempos de ejecución iniciales, como el de FORTRAN, ofrecen caracteristicas tales como operaciones matemáticas. Otros lenguajes añaden caracteristicas más sofisticadas, por ejemplo, recogida de restos de memoria, 20 a menudo en asociación con soporte para objetos. Lenguajes más recientes tienden a tener tiempos de ejecución considerablemente más grandes con más funcionalidades. Muchos lenguajes orientados a objetos también incluyen un sistema conocido como "despachador" y "cargador de clases". La Máquina Virtual de Java (JVM) es un ejemplo de este entorno de ejecución: también interpreta o compila los programas de Java portátiles binarios (byte-código) en el entorno de ejecución. El marco de entorno de ejecución de lenguaje común (CLR) es otro ejemplo de un
25 entorno de ejecución.
Marco de programación y ejecución
Un marco en el que las aplicaciones se proporcionan a los usuarios finales incluye tres divisiones básicas. La
30 primera división incluye la creación del sistema operativo y el entorno de ejecución. Esta primera división se lleva a cabo por los programadores con conocimientos de programación muy avanzados. Cuando se trabaja en esta división, los programadores son llamados, respectivamente, programadores del sistema operativo y programadores del entorno de ejecución. Cuando se crea un entomo de ejecución para un lenguaje orientado a objetos, los programadores de entorno de ejecución incluyen el soporte para la ejecución de los distintos tipos de comandos que
35 se utilizan en el código de transformación, el código de instanciación de instancias, el código de preparación de datos, y el código de secuencia manual de invocación (por ejemplo, comandos de instanciación de instancias, comandos de preparación de datos y comandos de invocación del método).
La segunda división incluye la creación de código de fuente de aplicación orientado a objetos que se ejecutará por el
40 entorno de ejecución. La segunda división se realiza de nuevo por los programadores con conocimientos de programación más avanzados, as1 como la comprensión de los objetivos de negocio de la aplicación. Cuando se trabaja en esta división, a los programadores se les conoce como programadores de aplicaciones. Al crear una aplicación en un lenguaje de programación orientado a objetos, los programadores de aplicaciones escriben el código de transformación especifico, el código de instanciación de instancias, el código de preparación de datos, y el
45 código de secuencia de invocación manual para la aplicación especifica que se creó. Como parte de esto, si la aplicación requiere una interfaz gráfica de usuario, los programadores de aplicaciones también diseñan y codifican la interfaz gráfica de usuario para la aplicación especifica, y por lo tanto, también se les conoce como los diseñadores de aplicaciones.
50 La tercera división incluye el uso de programas de aplicaciones que son ejecutan por el entomo de ejecución. La tercera división se lleva a cabo por los usuarios finales que no necesitan tener conocimientos de programación.
Código de secuenciación de invocación manual
55 Los mayores costes asociados tipicamente con la creación de una aplicación implican la depuración y/o la optimización del código de secuenciación de invocación manual. Para cada oportunidad para que los datos cambien, el programador de la aplicación debe tener en cuenta su efecto y escribir el código de secuenciación de invocación manual para hacer que los métodos de transformación adecuados de las instancias apropiadas sean invocados en el orden apropiado, con las entradas correspondientes. Errores de ejemplo realizados por los programadores de
60 aplicaciones incluyen: 1) invocar los métodos de transformaCión adecuados de las instancias correspondientes en el orden incorrecto, 2) olvidarse de inclu ir comandos para hacer que uno o más métodos de transformación necesarios de las instancias que deben invocarse respondan a algunos datos que se cambiaron, 3) incluir los comandos para hacer que los métodos de transformación de innecesarias deban invocarse en respuesta a algunos datos que están siendo modificados (por ejemplo, incluyendo comandos para invocar métodos de transformaCión de instancias que
65 no están afectadas por el cambio en datos), etc.
A modo de ejemplo, una técnica de generación de código de secuenciación de invocación manual es el uso del patrón observador (a veces conocido como "subscribir publicación") para observar el estado de una instancia en un programa. En el patrón de observador, una o más instancias (llamadas observadores u oyentes) se registran (o se registra a sí mismas) para observar un evento que puede ser suscitado por el objeto observado (el sujeto). la
5 instancia observada, que puede provocar un evento, generalmente mantiene una colección de observadores registrados. Cuando se provoca el evento, cada observador recibe una devolución de llamada desde la instancia observada (la instancia observada invoca un método de "notificación" en los observadores registrados). La función de notificación puede pasar algunos parámetros (generalmente información sobre el evento que se está produciendo) que pueden ser utilizados por los observadores. Cada observador implementa la función de notificación, y como consecuencia, define su propio comportamiento cuando se produce la notificación.
la instancia observada típicamente tiene un método de registro para agregar un nuevo observador y un método no registrado para la eliminación de un observador de la lista de instancias a notificar cuando se provoca el evento. Además, la instancia observada también puede tener métodos para inhabilitar temporalmente y luego volver a
15 habilitar llamadas para prevenir el derramamiento ineficiente de un número de cambios relacionados. Específicamente, las devoluciones de llamada en respuesta a un cambio del valor de la propiedad con frecuencia también cambian los valores de algunas otras propiedades, provocando devoluciones de llamada adicionales, y así sucesivamente.
Cuando se utiliza la técnica de patrón de observador, los programadores de aplicaciones que escriben manualmente el código de secuenciado de invocación manual especifican qué métodos de qué instancias se llaman, en qué orden, y con qué entradas mediante registro, anulación del registro, desactivación y vuelta a la rehabilitación de observadores a las diferentes instancias observadas, así como la escritura de los métodos de notificación y devolución de llamadas para cada uno. Más especificamente, la relación entre el observador y los casos observados
25 se administra localmente (por ejemplo la instancia observada solamente, sin sincronización con otras instancias observadas) dentro del patrón del observador, y por lo tanto, el código de secuenciación de invocación manual necesario para sincronizar los eventos a partir de múltiples instancias observadas es típicamente parte de los métodos de devoluCión de llamadas especifiCOS de cada observador.
Pila de llamadas volátil de sobreescritura
los tiempos de ejecución típicos utilizan una pila de llamadas volátil de sobreescritura para realizar un seguimiento de las llamadas actualmente invocadas no completadas. Una pila de llamadas volátil de sobreescritura sobrescribe porque despacha y descarta entradas cuando se ha completado cada llamada, y es volátil porque se descarta y se
35 reconstruye en cada ejecución. los tiempos de ejecución típicos utilizan pilas de llamadas volátiles de sobreescritura debido a que los tiempos de ejecuCión típicos combinan la construcción la pila de llamadas volátil de sobreescritura, con la invocación real de métodos de transformaCión apropiados de las instancias apropiadas con las entradas adecuadas que responden a la ejecuCión del cód igo de secuencia manual de invocación. En suma, que responda a la ejecución del código de secuenciación de invocación manual, un entorno de ejecución típico determina el método de transformaciónlllamada de secuenciación de instancia por llamada (cuando se realiza cada llamada) y mantiene la pila de llamadas volátil de sobreescritura para realizar un seguimiento de sólo de las llamadas invocadas no completadas.
Asignado Objeto-RelaCional
45 la asignación objeto-relacional es una técnica de programación que enlaza bases de datos relacionales con conceptos de lenguaje orientados a objetos, creando (en efecto) una "base de datos de objetos virtuales". Algunos mapeadores objeto-relacional mantíenen automátícamente las instancias cargadas en la memoria en sincronízación constante con la base de datos. En concreto, después de la construcción de una consu lta de asignado objeto a Sal, los primeros datos devueltos se copian en los campos de las instancias en cuestión, como cualquier paquete de asignado objeto-SOL. Una vez allí, la instancia tiene que mirar para ver si estos valores cambian, y luego, invertir con cuidado el proceso de escritura de los datos de nuevo a la base de datos.
Hibemate 3.0 es una solución de asignado objeto-relacional para Java y ClR (JBoss® Inc., de Atlanta, Georgia). Por
55 lo tanto, Hibemate ofrece un marco para la asignación de un modelo de dominio orientado a objetos en una base de datos relacional tradicional. Su objetivo es aliviar el desarrollador de algunas tareas comunes de programación de datos relacionados con la persistencia. Hibernate se encarga de la asignación de las clases a las tablas de bases de datos (y a partir de los tipos de datos orientados a objetos a tipos de datos Sal), así como los que ofrecen consultas de datos e instalaciones de recuperación. Hibernate está centrado en las instancias y crea grafos que representan relaciones entre instanCias.
Inversión de control y el principio de inversión de dependencia
la inversión de control, también conocida como IOC, es un principio de programación orientado a objetos que se 65 puede utilízar para reducir el acoplamiento (el grado en que cada módulo de programa se basa en cada módulo de otro tipo) inherente a los programas de ordenador. la loe también se conoce como el principio de inversión de la
dependencia. En la IOC, una clase X depende de la clase Y si se aplica alguno de los siguientes casos: 1) X tiene una y y la llama; 2) X es una Y, o 3) X depende de alguna clase Z que depende de Y (transitividad). Cabe señalar que X dependa de Y no implica que Y dependa de X; si ambos resultan ser ciertos , se llama una dependencia ciclica: X no puede ser utilizada sin Y, y viceversa.
En la práctica, si un objeto x (de la clase X) llama a los métodos de uno objeto y (de la clase Y), entonces la clase X depende de Y. La dependencia se invierte mediante la introducción de una tercera clase , es decir, una clase de interfaz I que debe contener todos los métodos que x podría llamar en y. Además, Y se debe cambiar de tal manera que implementa la interfaz 1. X e Y ahora son ambas dependientes de la interfaz I y la clase X ya no depende de la clase Y (suponiendo que x no es una instancia de Y). Esta eliminación de la dependencia de la clase X en Y mediante la introducción de una interfaz l se dice que es una inversión de control (o una inversión de la dependencia). Cabe señalar que Y podria depender de otras clases. Antes de que la transformación se haya aplicado, X depende de Y, y asi X dependia indirectamente de todas las clases de las que Y depende. Mediante la aplicación de la inversión de control, todas estas dependencias indirectas se han roto también. La interfaz l recién
15 introducida no depende de nada.
El marco de muelle es un marco de aplicaciones de código abierto para la plataforma Java que utiliza IOC e inversión de la dependencia. En concreto, lo central en el marco de muelle es su inversión del contenedor de control que proporciona un medio para configurar y administrar los objetos de Java. Este contenedor se conoce también como factoría de vainas, contexto de aplicaciones o contenedor de núcleo. Ejemplos de las operaciones de este contenedor son: creación de objetos, configuración de los objetos, métodos de inicialización de llamadas y paso de objetos a los objetos de devolución de llamadas registrados. Los objetos que se crean por el contenedor también se denomínan objetos administrados o vainas. Normalmente, el contenedor está configurado por la carga de archivos XML que contienen definiciones de vainas. Estas proporcionan toda la información que se requiere para crear
25 objetos. Una vez que los objetos son creados y configurados sin elevar las condiciones de error, están disponibles para su uso. Los objetos pueden ser obtenidos por medio de búsqueda de dependencia o inyección de dependencia. La búsqueda de la dependencia es un patrón en el que una persona que llama le pide al objeto contenedor un objeto con un nombre especifico o de un tipo específiCO. La inyección de dependenCia es un patrón donde el contenedor pasa objetos por su nombre a otros objetos, ya sea a través de constructores, propiedades o métodos de fábrica. Por lo tanto, el marco de muelles está centrado en la memoria y construye grafos que representan las relaciones entre las instancias.
Herramientas de representación gráfica
35 Javadoc™ es una herramienta que ana liza las declaraciones y comentarios de documentación en un conjunto de archivos de código fuente Java y genera un conjunto de páginas HTML que describen (por defecto) las clases públicas y protegidas, clases anidadas (pero no clases internas anónimas), interfaces, constructores, métodos y campos (Su n Microsystems®, Inc., de Santa Clara, CA). Javadoc se puede utilizar para generar la documentación API (Interfaz de Programación de AplicaCiones) o la documentación de implementación de un conjunto de archivos de código fuente. Javadoc está centrado en la clase y el método y crea grafos que representan las relaciones entre la combinación de clases y sus métodos.
Otro sistema para el diseño de aplicaciones de software incluye grafos de los objetos analizados por un intérprete para representar y reproducir una aplicación informática. Este sistema utiliza clases de programación escritas 45 previamente almacenadas en las librerías de código, que pueden ser escritas para seguir los patrones de diseño descritos en "Design Pallems" de Gamma et al, Addison Wesley 1995, "Pallems in Java" de Grand, Wiley Computer Publishing, 1998, y/o herramientas de Ingeniería de software asistido (CASE) de alto nivel. Más específicamente, algunas clases se basan en el patrón de comportamiento del observador. Las librerías de código escritas previamente representan nodos de aplicación del estado, la lógica de procesamiento, y el flujo de datos del sistema entre los diversas estados de aplicaciones (es decir, los elementos de datos escritos previamente de la aplicación), por lo que un usuario no tiene que escribir, editar, o compilar el código, cuando se crea una aplicación de software. En cambio, un usuario edita manualmente una aplicaCión de software en una interfaz gráfica de usuario mediante la edición de objetos visuales asociados con un nodo del estado actual de la aplicaCión, tal como datos en el nodo de estado de la aplicación o los procesos realizados en el nodo de estado de la aplicación. Luego, basándose en los
55 cambios introducidos por el usuario para el nodo del estado actual de la aplicación, el intérprete muestra el estado de la aplicación actualizada para el usuario para el estado de la aplicación que acaba de ser editada. Entonces, el sistema puede hacer la transiCión a lo largo de un borde definido por el usuario de transición a otro estado de la aplicación donde el usuario puede, opcionalmente, editar el estado de la aplicación siguiente o el borde de transición. Se pueden hacer cambios en un grafo a las instancias del grafo que son implementadas por el intérprete, mientras que la aplicación de software se está ejecutando.
Este sistema para el diseño de aplicaciones de software puede incluir representaciones visuales de una aplicación de software en funcionamiento que se puede hacer "utilizable" con un controlador de aplicación. Cuando un usuario cambia los objetos visuales, que representa la aplicación de software que se ejecuta, el controlador utiliza la entrada 65 para inducir al intérprete para hacer el cambio al grafo. El controlador entonces espera más cambios. Además, las representaciones visuales de las aplicaCiones de software no pueden ser importadas o exportadas como
documentos XML que describen la representación visual de la aplicación, y por lo tanto, la aplicación de software.
Con el fin de modificar ylo crear una aplicación de software, en forma de una representación visual de nodos, bordes dirigidos, y estados de aplicación, una interfaz de programa de aplicación y un editor de aplicación adicional pueden 5 incluirse en el sistema. Las palabras clave y las definiciones asociadas de las librerias de código escritas previamente penniten a los desarrolladores de aplicaciones definir manualmente una aplicación de software, etapas de tratamiento, asi como la representación visual de una aplicación de software, proporcionando representaciones gráficas, en un editor, de un grafo aplicación que se correlaciona estrechamente con la estructura de la aplicación real. Un usuario define una nueva aplicación a través de un "asistente de definición de aplicaciones", después de que ciertas cuestiones preliminares se hayan cumplido, muestra la nueva aplicación como un componente grafo en el espacio de trabajo del editor. Un usuario también interactúa con una aplicación haciendo selecciones de las listas que se muestran de los componentes creados previamente de posibles aplicaciones y arrastrando y soltando componentes en el espacio de trabajo a través del ratón de un PC y el clavedo. Un usuario puede seleccionar los componentes y "arrastrarlos" sobre los componentes existentes. Cuando un nuevo componente se "cae" sobre un
15 componente existente, el nuevo componente se convierte en un menor del componente existente en un grafo de la aplicación. Las relaciones de los componentes dentro de la aplicación de fonna se definen manualmente mediante las selecciones del usuario en el editor. Asi, se genera una estructura de árbol que representa una aplicación por parte del usuario. A medida que la aplicación es creada, el usuario puede seleccionar un visor de navegador de la aplicación para mostrar una vista de árbol de la solicitud de construcción, de manera que es posible seleccionar y editar cualquier componente de la aplicación. La interiaz del editor procesa las entradas del usuario y las selecciones, incluyendo la creación o la eliminación de los elementos de la aplicación, la actualización de los atributos de los componentes, y la actualización de las propiedades de la pantalla de una aplicación.
El sistema descrito anterionnente, mientras utiliza las representaciones visuales de las aplicaciones de software,
25 también puede utilizarse como una herramienta de programación visual para definir y actualizar las bases de datos relacionales. El sistema utiliza las descripciones XML de la representación visual de las aplicaciones de software. Una herramienta analiza e interpreta las descripciones XML para producir esquemas relacionales equivalentes en el listado de bases de datos, asi como sus cambios. Cuando los datos se cambian dentro de una representación visual de una aplicación de software, una descripción del cambio se almacena junto con otros cambios en un archivo de diario y luego se procesan como un grupo. Un programa intennedio (una aplicación Java que opera en su propio hilo) realiza las transacciones entre la representación visual de la aplicación de software y la base de datos relacional. La aplicación de Java (por ejemplo, comprobaciones) revisa el diario de los cambios en los nodos de la representación visual (es decir, los datos de la base de datos), y si hay cambios, hace los cambios en la base de datos. Asi, mediante la alteración de los datos dentro de la representación visual, el sistema actualiza una base de
35 datos. Una aplicación similar se encuentra entre la representación visual de la aplicación de software y la base de datos maneja las peticiones de los datos de la base de datos.
Otro sistema para el análisis de software se llama un Analizador de árbol de código (CTA). Un CTA analiza el código fuente estático escrito en un lenguaje de programación orientado a objetos. El CTA genera una tabla de simbolos y un árbol de llamadas desde el código fuente estático. Utilizando la tabla de simbolos, el CTA genera un diagrama de clases. Asimismo, utilizando el árbol de llamadas, el CTA genera un diagrama de secuencias. El diagrama de clases ilustra la relación entre una clase seleccionada por el usuario y las ciases relacionadas con la ciase seleccionada por el usuario. El diagrama de secuencias ilustra la secuencia en la que diferentes métodos son llamados. Utilizando el diagrama de clases y el diagrama de secuencias, el CTA genera un representante de los artefactos de diseño del
45 código fuente estático. Cuando el usuario modifica el artefacto de diseño, el CTA identifica las partes afectadas del código fuente mediante el diagrama de secuencia. El artefacto de diseño se utiliza para el mantenimiento del código ylo ingenieria inversa del código fuente estático.
El Capitulo 8 "Modelo de Vinculación" del libro "Inside the Java Virtual Machine" de 8ill Venners describe el modelo de enlace dinámico de la máquina virtual de Java.
El documento US2002l072890 describe un método de anulación de un valor en una red en una matriz durante la ejecución de una prueba de rutina.
55 Breve sumario
Varios aspectos y realizaciones de la invención se indican en las reivindicaciones adjuntas.
Breve descripción de los dibujos
La invención puede entenderse mejor haciendo referencia a la siguiente descripción y a los dibujos adjuntos que se utilizan para ilustrar las realizaciones de la invención. En los dibujos:
La figura 1A es un diagrama de bloques que ilustra la relación de una declaración de dependencia del productor de 65 un método de una clase en un código fuente orientado a objetos de un productor que incluye la clase, un ejemplo dado de esa clase, y un método de esa clase, de acuerdo con una realización de la invención;
La figura 1B ilustra las relaciones de ejemplo entre el productor 110A y el productor padre 1l4A.1 de acuerdo con una realización de la invención;
5 La figura le ilustra las relaciones de ejemplo entre el productor 110A y el productor descendiente 112A.1 de acuerdo con una realización de la invención;
La figura 1D ilustra algunas combinaciones adicionales de ejemplo de las relaciones de los productores padre 114 y los productores descendientes 112 al productor 110A de acuerdo con una realización de la invención;
La figura 1 E ilustra esas instancias diferentes de la misma clase que pueden tener los productores basadas en los mismos y/o diferentes métodos de acuerdo con una realización de la invención;
La figura 2 es un diagrama de bloques que ilustra la capacidad de reutilización de un entomo de ejecución con un 15 grafo de productor de soporte de programación orientado de acuerdo con una realización de la invención;
La figura 3A es un diagrama de bloques que ilustra un entorno de ejecución con el soporte de programación orientada al grafo del productor de acuerdo con una realización de la invención;
La figura 3B es un diagrama de bloques que ilustra un entorno de ejecución con el soporte de programación orientada al grafo del productor que también soporta la ejecución incremental y las salidas reemplazadas de los productores de acuerdo con una realización de la invención;
La figura 4A es un diagrama de bloques que ilustra el descubrimiento y la construcción de un grafo del productor de 25 ejemplo de acuerdo con una realización de la invención;
La figura 4B es un diagrama de bloques que ilustra la ejecución inicial del grafo del productor de la figura 4A según una realización de la invención;
La figura 4e es un diagrama de bloques que ilustra la ejecución incremental del grafo del productor de la figura 4B de acuerdo con una realización de la invención:
La figura 40 es un diagrama de bloques que ilustra la ejecución incremental del grafo del productor de la figura 48 después de que el productor dependiente 2 haya sido anulado de acuerdo con una realización de la invención;
35 La figura 4E es un diagrama de bloques que ilustra la ejecución incremental del grafo del productor de la figura 4B después de que el productor dependiente 2 se haya anulado y el productor fuente independiente 3 se haya modificado de acuerdo oon una realización de la invención;
La figura 5A es un diagrama de bloques que ilustra el descubrimiento y la construcción de un grafo del productor de ejemplo que incluye una dependencia no resuelta de acuerdo oon una realización de la invención;
La figura 5B es un diagrama de bloques que ilustra la ejecución inicial del grafo del productor de la figu ra 5A y la resolución de la dependencia no resuelta de acuerdo con una realización de la invención;
45 La figura 5e es un diagrama de bloques que ilustra la ejecución inicial del grafo del productor de la figura 5A y/o la ejecución adicional del grafo del productor de la figura 5B de acuerdo con una realización de la invención;
La figura 50 es un diagrama de bloques que ilustra la ejecución inicial del grafo del productor de la figura 5A y/o la ejecución adicional del grafo del productor de las figuras 58 y 5e de acuerdo con una realización de la invención;
La figura 6 es un diagrama de flujo que ilustra un flujo de ejecución lógica de un cliente de ejecución y su relación con un entorno de ejecución con el soporte de programación orientado al grafo del productor según una realización de la invención;
55 La figura 7A ilustra un pseudo código de una declaración de dependencia del productor de un método que utiliza dependencias de acceso directo declaradas de acuerdo con una realización de la invención;
La figura 7B es un diagrama de bloques de productores de ejemplo de acuerdo con una realización de la invención;
La figura 7e ilustra un pseudo código de una dedaración de dependencia del productor de un método que utiliza un acceso directo de dependencia no declarada, e ilustra un diagrama de bloques de productores de ejemplo de acuerdo con una realización de la invención;
65 La figura 70 ilustra un pseudo código de una declaración de dependencia del productor de un método que utiliza un acceso directo de dependencia no declarada de acuerdo con una realización de la invención; La figura 7E es un diagrama de bloques de productores de ejemplo de acuerdo con una realización de la invención;
La figura 7F es un diagrama de bloques de unas dependencias de ejemplo mediante el uso de una dependencia 5 ascendente con un productor de determinación de dependencia de acuerdo con una realización de la invención;
La figura 7G es un diagrama de bloques de posibles dependencias de ejemplo mediante el uso de una dependencia débilmente restringida con un productor de determinación de dependencia de acuerdo con una realizadón de la invención;
La figura 7H ilustra grafos de productores de ejemplo de productores estándar de acuerdo con una realización de la invención;
La figura 71 ilustra un ejemplo de las dependencias de productores y los productores de determinación de 15 dependencia para descubrir, para resolver, y construir la gráfica del productor de la figura 7H.
La figura 8A es un diagrama de bloques que ilustra un primer marco de ejemplo en el que las aplicaciones se proporcionan a los usuarios finales de acuerdo con una realización de la invención;
20 La figu ra 88 es un diagrama de bloques que ilustra un segundo ejemplo de marco en el que las aplicaciones se proporcionan a los usuarios finales de acuerdo con una realización de la invención;
La figura 8e ilustra una pantalla y de ejemplo y el uso de selección de celdas libres con el módulo de interfaz de usuario grafo de diseño de la salida del productor interactivo configurable 840 de acuerdo con una realización de la 25 invención;
La figura 8D ilustra otra pantalla de ejemplo y el uso de selección de celdas libres con el módulo de interfaz de usuario grafo de diseno de la salida del productor interactivo configurable 840 de acuerdo con una realización de la invención;
La figura 8E muestra un ejemplo de pantalla y del uso de creación de la tabla con el módulo de interfaz de usuario grafo de diseño de la salida del productor interactivo configurable 840 de acuerdo con una realización de la invención;
35 La figura 8F ilustra otra pantalla de ejemplo y el uso de creación de la tabla con el módulo de interfaz de usuario grafo de diseño de la salida del productor interactivo configurable 840 de acuerdo con una realización de la invención;
La figura 9A es un diagrama de bloques que ilustra un primer esquema de la distribución de un entorno de ejecución 40 con el soporte de programación orientada al grafo del productor de acuerdo con una realización de la invención;
La figura 98 es un diagrama de bloques que ilustra un segundo esquema para la distribución de un entorno de ejecución con el soporte de programación orientada al grafo del productor de acuerdo con una realización de la invención;
La figura 9C es un diagrama de bloques que ilustra un tercer esquema de la distribución de un entorno de ejecución con el soporte de programación orientada al grafo del productor de acuerdo con una realización de la invención;
La figura 10 es un diagrama de bloques de una ejecución de ejemplo de acuerdo con una realización de la 50 invención;
La figura 11A es un diagrama de bloques de un ejemplo de la estructura de seguimiento de clase 1092 de la figura 10 de acuerdo con una realización de la invención;
55 La figura 118 es un diagrama de bloques de un ejemplo de la estructura de seguimiento de ejemplo 1065 de la figura 10 de acuerdo con una realización de la invención;
La figura 11C es un diagrama de bloques de un ejemplo del grafo(s) productor de la estructura 1060 de la figura 10 de acuerdo con una realización de la invención;
La figura 110 es un diagrama de bloques de un ejemplo del método de seguimiento de la estructura 1058 de la figura 10 de acuerdo con una realización de la invención;
La figura 12 es un diagrama de bloques que ilustra detalles adicionales de la figura 10 para apoyar las dependencias 65 de tipo contingente y suscripción dinámicas de productores de acuerdo con una realización de la invención;
La figu ra 13A ilustra un pseudo código de declaraciones de dependencia de productores de los métodos que uti lizan un dependencia no declarada, no dinámica, sin acceso directo (no contingente, sin suscripción) de acuerdo con una realización de la invendón;
5 La figura 138 es un diagrama de bloques productores que ilustran un ejemplo de dependencia de productor sin acceso directo no declarada, no dinámica (no contingente, sin suscripción) de acuerdo con una realizadón de la invención;
La figura 13C ilustra un pseudo código de declaraciones de dependencia de productores de los métodos que utilizan una dependencia de productor sin acceso directo no declarada, contingente, sin suscripción de acuerdo con una realización de la invención;
La figura 130 es un diagrama de bloques de productores que ilustran un ejemplo de dependencia del productor sin acceso directo declarada, contingente, sin suscripción de acuerdo con una realización de la invención;
La figura 13E muestra un pseudo-cód igo de las declaraciones de dependencia de productores de los métodos que utilizan tanto una dependencia del productor sin acceso directo no declarada, contingente, sin suscripción y una dependencia del productor con acceso directo declarada, contingente, sin suscripción de acuerdo con una realización de la invención;
La figura 13F es un diagrama de bloques de productores que ilustran una dependencia de productor sin acceso directo no declarada, contingente, sin suscripción y una dependencia de productor de acceso directo declarado, contingente, sin suscripción de acuerdo con una realización de la invención;
25 La figura 13G ilustra un pseudo código de declaraciones de dependencia de productores de los métodos que utilizan una dependencia del productor de acceso directo declarado, contingente, sin suscripción y una dependencia del productor de acceso directo, no contingente, sin suscripción de acuerdo con una realización de la invención;
La figura 13H es un diagrama de bloques de productores que ilustran un ejemplo de dependencia del productor con acceso directo declarado, contingente, sin suscripción y una dependencia del productor con acceso directo declarado, no contingente, sin suscripción de acuerdo con una realización de la invención;
La figura 131 ilustra un pseudo código de declaraciones de dependencia de productores de los métodos que utilizan una dependencia del productor con acceso directo declarado, no dinámico (no contingente, sin suscripción) de 35 acuerdo con una realización de la invención;
La figura 13J es un diagrama de bloques de productores que ilustran un ejemplo de dependencia del productor con acceso directo declarado, no dinámico de acuerdo con una realización de la invención; La figura 14A es un diagrama de bloques de un ejemplo del registro de suscripción 1250 de la figura 12 de acuerdo con una realización de la invención;
La figura 148 es un diagrama de bloques de productores de ejemplo que ilustran una dependencia del productor de suscripción no contingente, absorbente de acuerdo con una realización de la invención;
45 La figura 14C es un diagrama de bloques de productores de ejemplo que ilustran una dependencia del productor de suscripción no contingente, adherente de acuerdo con una realización de la invención;
La figura 140 ilustra la elección de un productor padre basada en un productor de determinación de dependencia padre creado por una suscripción adherente de acuerdo con una realización de la invención;
La figura 14E ilustra la elección de un productor padre basada en un productor determinación de dependencia padre creada por un productor de determinación de dependencia descendiente, cuyo productor de determinación de dependencia descendiente está vinculado por una dependencia de secuenciación, de acuerdo con una realización de la invención;
La figu ra 15 es un diagrama de flujo para la instanciación de nuevas instancias de acuerdo con una realización de la invención;
La figura 16 es un diagrama de flujo de instanciación de nuevos productores y productores sin anulación de acuerdo con una realización de la invención;
La figura 17 es un diagrama de flujo para el bloque 1650 de la figura 16 de acuerdo con una realización de la invención;
65 La figura 18 es un diagrama de flujo para el bloque 1745 de la figura 17 de acuerdo con una realización de la invención;
La figura 19 es un diagrama de flujo para el bloque 1630 de la figura 16 de acuerdo con una realización de la invención;
5 La figu ra 20 es un diagrama de flujo para los bloques 1635 y 1670 de la figura 16 de acuerdo con una realización de la invención;
La figura 21 es un diagrama de flujo para reemplazar los productores de acuerdo con una realización de la invención;
La figura 22A es una parte de un diagrama de flujo para la ejecución de los grafo(s) productores de corriente de acuerdo con una realización de la invención;
La figura 228 es otra parte de un diagrama de flujo para la ejecución de los grafo(s) productores de corriente de 15 acuerdo con una realización de la invención;
La figura 23 es un diagrama de flujo para el bloque 2205 de la figura 22 de acuerdo con una realización de la invención;
La figura 24 es un diagrama de flujo para el bloque 2225 de la figura 22 de acuerdo con una realización de la invención; y
La figura 25 es un diagrama de flujo para el bloque 2260 de la figura 22 de acuerdo con una realización de la invención.
Descripción detallada
En la siguiente descripción, numerosos detalles espeCifiCas, tales como implementaciones lógicas, CÓdigos de operación, medios para especificar los operandos, implementaciones de reparto/compartición/duplicación de recursos, los tipos e interrelaciones de los componentes del sistema y opciones de particiónlintegración lógica que se establecen con el fin de proporcionar una mayor comprensión completa de la invención. Se apreciará, sin embargo, por parte de un experto en la materia, que la invención puede ser practicada sin estos detalles especificos. En otros casos, las estructuras de control, las estructuras de datos completos y las secuencias de instrucciones de software no se han mostrado en detalle para no oscurecer la invención. Los expertos en la materia, con las
35 descripciones incluidas, serán capaces de aplicar la funcionalidad adecuada, sin experimentación indebida.
A menos que se especifique lo contrario, las lineas de trazos en las figuras (con la excepción de las lineas de trazos divisorias) se utilizan para representar elementos opcionales en las figuras. Sin embargo, no se debe suponer que todos los elementos opcionales se muestran mediante lineas de trazos, sino que los que se muestran en lineas de trazos fueron elegidos para una variedad de razones (por ejemplo, se podrían mostrar fácilmente, para proporcionar mayor claridad, etc.)
Las referencias en la memoria a ~una realización~, ~un ejemplo de realización", etc., indican que la realización descrita puede incluir una característica, o estructura particular, pero no necesariamente todas las realizaciones
45 pueden incluir la característica, o estructura particular. Además, estas frases no necesariamente hacen referencia a la misma realización. Además, cuando una caracteristica o estructura particular que se describe en conexión con una realización, se afinna que está dentro del conocimiento de un experto en la técnica para afectar a esta característica o estructura en relación con otras realizaciones si está o no descrita explícitamente.
En la siguiente descripción y en las reivindicaciones, los lénninos "acoplado~ y ~conectado", junto con sus derivados, pueden ser uti lizados. Debe entenderse que estos términos no están pensados como sinónimos entre si. Por el contrario, en realizaciones particulares, ~conectado" puede ser utilizado para indicar que dos o más elementos están en contacto directo entre si. "Acoplado" puede significar que dos o más elementos están en contacto directo. Sin embargo, "acoplado" también puede significar que dos o más elementos no están en contacto directo entre si, pero
55 aún así cooperar o interactuar entre si.
En algunos casos, las operaciones de diagramas de flujo se describen con referencia a las realizaciones de ejemplo de los otros diagramas de bloques. Sin embargo, debe entenderse que las operaciones de los diagramas de flujo pueden realizarse por realizaciones de la invención distintas de las descritas con referencia a estos otros diagramas de bloques, y que las realizaCiones de la invención descritas con referencia a estos otros diagramas de bloques pueden realizar operaciones diferentes a las descritas con referencia a los diagramas de flujo.
Las técnicas que se muestran en las figuras se pueden implementar util izando códigos y datos almacenados y ejecutados en uno o más ordenadores. Estos ordenadores almacenan y comunican (internamente y con otros 65 equipos a través de una red) códigos y datos utilizando medios legibles por máquina, tal como medios de almacenamiento de máquina (por ejemplo, discos magnéticos, discos ópticos; memoria de acceso aleatorio,
memoria de sólo lectura, dispositivos de memoria flash) y medios de comunicación de la máquina (por ejemplo, eléctricos, ópticos, acusticos u otras formas de señales reproducidas, tal como ondas portadoras, señales infrarrojas, señales digitales, etc.). Además, estos ordenadores incluyen tipicamente un conjunto de uno O más procesadores acoplados a uno o más de otros componentes, tales como un dispositivo de almacenamiento, una serie de
5 dispositivos de entrada/salida de usuario (por ejemplo, un clavedo y una pantalla), y una conexión de red. El acoplamiento del conjunto de procesadores y otros componentes es normalmente a través de uno o más buses y puentes (también denominados como controladores de bus). El dispositivo de almacenamiento y el tráfico de la red representan, respectivamente, uno o más medios de almacenamiento de la máquina y los medios de comunicación de la máquina. Asi, el dispositivo de almacenamiento de un sistema informático dado tipicamente almacena códigos y los datos para su ejecución en el conjunto de uno o más procesadores de dicho equipo. Por supuesto, una o más partes de una realización de la invención pueden ser implementadas utilizando distintas combinaciones de software, firmware y/o hardware.
Información general
De acuerdo con un aspecto de la invención, un productor es al menos un ejemplo especifico (u objeto) y un método espeCifico, de tal manera que si el productor se ejecuta durante el entomo de ejecución, el método especifico se ejecuta en la instancia especifica. Por lo tanto, un productor determinado se instancia a partir de una instancia dada y un método dado asociado a esa instancia. Al igual que las clases, instancias y métodos, los productores son elementos básicos o construcciones manipuladas por el entomo de ejecución. Por lo tanto, la instanciación de un productor es interpretada y seguida por el entorno de ejecución, y por lo tanto, el entorno de ejecución sigue la combinación de instancias y métodos representados por los productores. En otras palabras, un productor es una construcción que se puede instanciar del entorno de ejecución que se sigue por el entorno de ejecución, que es ejecutado por el entorno de ejecución, y que incluye al menos una instancia y un método asociado a esa instancia,
25 tal que la ejecución de los tiempos de ejecución del productor resulta en el método del productor que se ejecuta en la instancia del productor. Además, el método de un productor tiene asociado con el mismo una declaración de la dependencia del productor que identifica, con un conjunto de cero o más dependencias de productores, un conjunto de cero o más productores para un productor determinado. En concreto, las dependenCias de los productores se declaran para los métodos que utilizan las declaraciones de dependencia de los productores, la declaración de la dependencia del productor de un determinado método puede incluir cero o más dependencias de productores, y cada dependencia del productor identifica un conjunto de cero o más productores. Por lo tanto, las declaraciones de dependencia de los productores y las dependencias de los productores que se definen se interpretan y son seguidos por el entorno de ejecución, y por lo tanto, el entorno de ejecución realiza un seguimiento de las relaciones entre los productores indicados por las declaraciones de dependencia de los productores.
35 Cuando un productor dado depende de un conjunto de uno o más de otros productores, el entorno de ejecución asegurará la ejecución del conjunto de los otros productores antes de que el productor dado. Por lo tanto, las declaraciones de dependencia de los productores representan las relaciones de ejecución entre los productores, mientras que los productores representan las operaciones a realizar (métodos) e instancias. Aunque en algunas realizaciones de la invención se permiten las dependencias de los productores padre sobre los productores descendientes para ser declaradas en la declaración de dependencia del productor asociado con el método del productor padre (la declaración de la dependencia del productor del productor padre se identifica con cualquiera de los productores descendientes -indicado aqui como declarado descendente), otras rea lizaciones de la invención también permiten dependencias para ser declaradas en la declaración de dependencia del productor asociado al
45 método(s) del productor(es) descendiente(s) (la declaración de dependencia del productor del productor descendiente se identifica uno o más productores padre -indicado aqui como declarado ascendente).
En diferentes realizaciones de la invención, un productor identifica cosas adicionales. Por ejemplo, mientras que en algunas realizaciones de la invención, un productor es al menos una instancia y un método asociado con esa instancia, en otras realizaciones de la invención, un productor es una clase, una instancia de esa clase, y un método asociado con esa instancia (por ejemplo, un productor directamente puede incluir una clase, instancia, y un método; un productor directamente puede incluir una instancia y un método, mientras que indirectamente la identificación de una clase de esa instancia a través de una referencia (por ejemplo, una referencia en la instancia». Aunque la invención se puede utilizar en el contexto del código escrito en diferentes lenguajes de programación (por ejemplo, 55 código orientado a objetos escrito en un lenguaje reflexivo orientado a objetos; código orientado a objetos escrito en un lenguaje reflexivo basado en objetos, el código escrito en un lenguaje de método no reflexivo orientado a objetos no reflexivos y transformado en código de lenguaje reflexivo orientado a objetos), las realizaciones de la invención se describirán, a modo de ejemplo y no de limitación, con referencia a lenguajes de programación reflexivos orientados a objetos y con referencia a los productores que directamente incluyen clases, instancias y métodos. Además, aunque en una realización de la invención el método de un productor es un método de instancia (un método que puede utilizar campos de instancia además de cualquier entrada recibida como argumentos), realizaciones alternativas de la invención también pueden o alternativamente, soportar el método de un productor que es un método de clase (métodos que reciben todas las entradas como argumentos y/o utiliza las variables de instancia independientes) (donde el método de un productor es un método de instancia, la instancia del productor es
65 una instancia de una clase, mientras que en el método de un productor es un método de clase, la instancia de ese productor es una instancia de meta-clase que representa la clase).
La figura 1A es un diagrama de bloques que ilustra la relación de una declaración de dependencia del productor para un método de una clase en un código fuente orientado a objetos de un productor que incluye la clase, una instancia dada de esa clase, y un método de esa clase, de acuerdo con una realización de la invención. En la figura
5 1A, se muestra un código fuente orientado a objetos 100 que incluye una clase 102, que a su vez incluye un método 104 y una declaración de dependencia del productor 106 para el método 104. Por supuesto, la clase 102 normalmente incluye uno o más campos (no mostrados) y métodos adicionales (no mostrados). Además, el código fuente o rientado a objetos 100 tipicamente incluye clases adicionales.
Durante el entorno de ejecución, una instancia 108 de la clase 102 se instancia. La instancia 108 incluye los datos de los campos de la clase 102. Además, un productor 110 se instancia, cuando el productor 110 identifica la clase 102, la instancia 108 de la clase 102 (que tiene asociado con la misma el método 104 de la clase 102), y el método 104 de la clase 102. La declaración de dependencia del productor 106 identifica al entomo de ejecución de un conjunto de cero o más productores 112 (en adelante, los productores descendientes del productor 110) que debe
15 ser ejecutado antes de la ejecución del productor 110. En otras palabras, el productor 110 depende del conjunto de cero o más productores 112. Además o en lugar de las salidas de consumo del conjunto del productor 112, el productor 110 puede consumir datos de la instancia 108. Además, el productor 110 proporciona al menos una salida, cuya salida puede ser intema a la instancia 108 (y por lo tanto, modificar los datos del ejemplo 108) y/o puede ser extema, de cualquier manera, la salida del productor 110 puede ser consumida por un conjunto o cero o más de otros productores 114 (referidos como productores padre del productor 110)). Tal como se ha indicado anteriormente, y como se describe con más detalle más adelante en este documento, la declaración de dependencia del productor 106, en algunas realizaciones de la invención, también puede identificar el entamo de ejecución cero o más de los productores 114.
25 Se debe entender que las entradas y las salidas de los productores se basan en las entradas y las salidas de los métodos en los que se basan los productores. Como tal, estas entradas y salidas pueden representar varios parámetros que tienen una variedad de estructuras de datos.
La declaración de dependencia del productor para un determinado método identifica en el entomo de ejecución del conjunto de cero o más productores para instanciarse y ejecutarse. A modo de ejemplo, cuando una declaración dependencia del productor (por ejemplo, la declaración de dependencia del productor 106) para un método dado (por ejemplo, el método 104) identifica una dependencia del productor en un productor determinado (cuyo productor dado identifica una primera clase, una primera instancia de esa clase, y un primer método de esa primera clase) (por ejemplo, uno del conjunto de los productores 112), a continuación, la declaración de dependencia del productor del
35 método dado identifica el entorno de ejecución que la primera instancia debe instanciarse (si no está ya) y que el primer método utiliza para crear una instancia del productor dado para la primera instancia (en estos ejemplos, primero no significa ubicación u orden).
En funcionamiento, cuando, durante el entorno de ejecución, un conjunto de uno o más productores son designados como de interés y tienen las dependencias de los productores declaradas por los mismos, el entorno de ejecución: 1) genera de forma automática (descubre, desarrolla, y, opcionalmente, resuelve) un conjunto de uno o más grafos, que pueden ser de múltiples niveles y pueden ser de una variedad de formas (por ejemplo. cadena. árbol). desde el conjunto dado de productores designados como de interés hacia abajo a los productores de origen basados en las declaraciones de dependencia de los productores, y 2) la ejecución de las secuencias de los productores de la serie
45 de grafos para generar la(s) salida(s) del conjunto dado de productores designados como de interés. Por lo tanto, el entorno de ejecución utiliza las declaraciones de dependencia de los productores para determinar qué métodos con qué argumentos se ejecutan en qué instancias, y cuándo para fines de sincronización.
Por lo tanto, las dependencias de los productores representan la secuencia de ejecución de los productores en el entorno de ejecución. Sin embargo, además de indicar la secuencia de ejecución, las dependencias de los productores pueden representar diferentes relaciones de entrada y de salida en diferentes realizaciones de la invención. Por ejemplo. diferentes realizaciones de la invención pueden soportar una o más de las dependencias del productor de argumentos, dependencias del productor de campo y dependencias del productor sólo de secuenciación (dependencias de los productores solamente de secuenciación a las que se refiere el presente
55 documento con la abreviatura dependencias de productores de secuenciaciÓn). Aunque cada una de las dependencias del productor de argumentos, las dependencias del productor de campo y dependencias del productor de secuenciación representan las relaciones de secuenciación de ejecución entre los productores, el argumento y las dependencias del productor de campo, además, representan los datos de los cuales el entorno de ejecución es consciente. En concreto, una dependencia del productor de argumento hace que el entorno de ejecución para asignar la salida de un productor descendiente como parámetro de entrada a un productor padre, mientras que una dependencia del productor de campo indica el uso de un campo de una instancia. Independientemente de la entrada en relación con la salida representada por una dependencia del productor, asegurando el uso apropiado de las dependencias del productor que los productores que acceden a la información que se secuencia después de que los productores que impactan la información.
Las dependencias de secuenciación pueden ser usadas para una variedad de propósitos, incluyendo asegurar el
orden de ejecución entre los productores que modifican los datos en una manera en la que el entorno de ejecución no es consciente y productores que consumen los datos (un productor descendiente puede escribir sus salidas de una manera que requiera el método del productor padre para incluir código para acceder a la salida (por ejemplo, un método que impacta en el ambiente al afectar a una salida que no es la salida del productor regular y, como tal, que
5 no es detectado por el entorno de ejecución -tal como un método que establece una variable global, que define un campo en una instancia que no es la salida del productor, que afecta a un origen de datos eld:erno, etc.)). Asi, una dependencia de secuenciación refleja una dependencia de un productor padre en un productor descendiente, pero requiere salidas que necesitan ser proporcionadas, si las hubiere, entre si que se producen a través de la escritura del código (por ejemplo, código en el método del productor descendiente para escribir una salida a un mecanismo dado (tal como establecer una variable global, el impacto de una fuente de datos extema, establecer un campo de un ejemplo que no es la salida del productor, etc.) y un código en el método del productor padre para leer la salida del mecanismo dado). De esta manera, las dependencias de secuenciación permiten que el entomo de ejecución sincronice la ejecución de los productores padre que se basan en una salida que el entorno de ejecución no puede detectar.
En una realización de la invención, la declaración de dependencia del productor de un determinado método identifica solamente las dependencias directas en los productores (por ejemplo, descendientes directos (hijos), en contraste con los descendientes indirectos (nietos, bisnietos, etc.)). En esta realización, cada declaración de dependencia del productor proporciona sólo un único nivelo capa de productores cuyas salidas pueden ser utilizadas directamente por un productor instanciado a partir del método dado, dejando el descubrimiento/construcción/resolución de capas adicionales del grafo(s) del productor para procesamiento del entorno de ejecución de otras declaraciones de dependencia de los productores.
Claves de ejemplo
25 Un productor puede ser visto como un conjunto de identificadores múltiples, un identificador para cada nivel adicional de granularidad especificado (clase, instancia, método, etc.). Ademas, algunas realizaciones de la invención aplican cada identificador como una clave separada, mientras que otras realizaciones tienen determinados identificadores que comparten una clave. A modo de ejemplo, algunas realizaciones de la invención implementan un productor como un triplete de clase, instancia, y método e implementan las claves, de tal manera que cada parte del triplete se identifica por una clave separada (una clave de clase, una clave de instancia, y una clave de método) y el productor se identifica por la combinación de la clave de clase, la clave de instancia, y la clave de método (la clave del productor).
35 Las realizaciones de la invención que usan claves pueden variar en la unicidad de las claves utilizadas. Por ejemplo, en una realización de la invención, cada clave de clase es única, cada clave de instancia es única en todos los casos de todas las clases , y cada clave de método es única en todos los métodos de todas las clases. Como otro ejemplo, en otras realizaciones de la invención, cada clase tiene una clave única, cada instancia de una clase determinada tiene una clave única (a través de las instancias de la clase), y cada método de una clase tiene una única clave (a través de los métodos de la clase), pero instancias de clases diferentes pueden tener la misma clave de instancia, y métodos de clases diferentes pueden tener la misma clave de método; este enfoque mas adelante se utilizará en el resto del documento a modo de ejemplo y no de limitación. Por ejemplo, supongamos que una de primera clase incluye métodos y tiene una clave para cada uno de estos métodos que es único dentro de la primera clase, a continuación, las instancias de esta clase (que cada una tiene una clave única entre si) tiene las mismas claves de
45 método asociadas con las mismas. Como otro ejemplo, supongamos que una segunda clase diferente incluye métodos (alguno, todos, o ninguno del mismo que los métodos de la primera clase) que tienen las mismas claves del método que las utilizadas para la primera clase, como tal, un ejemplo de esta clase diferente se puede asociar con las mismas claves del método que se asocian con una instanaa de la primera clase.
El uso de las claves permite una gran variedad de caracteristicas, incluyendo: 1) el seguimiento de cada entidad identificada por los identificadores de un productor (por ejemplo, el seguimiento de cada clase, instancia, y método), 2) varios productores padre (sin darse cuenta de su existencia mutua) para conectar con el productor de un mismo descendiente en base a sus declaraciones de dependencia de los productores (que especifican las dependencias de los productores con las claves de productores), etc. En una realización de la invención, la clave de instancia es una
55 instancia de una clase (Clave de Instancia) que soporta dos elementos: una naturaleza de clave de instancia que indica si el identificador de la clave es una referencia a la instancia o de otro objeto (como una cadena), y un identificador de clave que puede ser una referencia a la instancia, o a otro objeto (como una cadena). El almacenamiento de una referencia a la instancia en la clave de la instancia ahorra al programador inventar un nombre para identificar estos casos.
Relaciones de ejemplo
En el contexto de la discusión anterior en relación con un productor que se está viendo como un conjunto de múltiples identificadores (con un identificador para cada nivel adicional de granularidad especificada), en una 65 realización de la invención, las diversas relaciones entre el soporte de un productor y sus hijos Y los padres son aquellos en los que al menos un identificador es diferente entre un productor y su conjunto de cero o más
productores padre y un identificador es diferente entre un productor y cada uno de su conjunto de cero o más productores descendientes. A modo de proporcionar algunas relaciones de ejemplo, supongamos que un primer productor se instancia, donde el primer productor es una primera instancia de una de primera clase y un primer método de esa primera clase, y se supone que la declaración de dependencia del productor para ese primer método
5 identifica el entomo de ejecución de un segundo productor como descendiente, entonces el segundo productor puede ser: 1) la primera instancia de la primera clase y un segundo método de esa primera clase, 2) una segunda instancia de la primera clase y un segundo método de esa primera clase, 3) una segunda instancia de la primera clase y el primer método de la primera clase, o 4) una instancia de una segunda clase y un método de esa segunda clase. En tal caso, el primer productor depende del segundo productor -por lo tanto, representa una entrada en la relación de salida del primer productor al segundo productor. Diversas relaciones y combinaciones de estas relaciones se describen a continuación para una realización de la invención que utiliza un lenguaje orientado a objetos y en el que un productor identifica al menos una clase, instancia, y método.
Las figuras 1A-1D ilustran relaciones de ejemplo entre un productor dado, su conjunto de productores padre, y su
15 conjunto de productores descendientes de acuerdo con una realización de la invención. Las figuras 18-1 D muestran cada una lo siguiente: 1) una definición de clase 102A, incluyendo los métodos 104A-C y las declaraciones de los productores de dependencia 106A-C para cada uno de estos métodos, respectivamente, 2) una definición de clase 1028 incluyendo los métodos 104D-E y las declaraciones de dependencia del productor 106D-E para cada uno de esos métodos, respectivamente, y 3) una definición de clase 102C, incluyendo el método 104F y la declaración de dependencia del productor 106F para ese método; 4) una instancia 108A de la clase 102A, 5) un productor 110A que identifica la clase102A, la instancia 108A, y el método 104A, y 6) un productor 112A.1 y un productor 114A.1 que representan respectivamente uno del conjunto de productores 112 y 114. Las lineas de trazos con letras en caja en las mismas se utilizan en las figuras 18-10 para ilustrar las relaciones de ejemplo. De este modo, la colección de las lineas de trazos con una caja A en las mismas representa una relación. Las relaciones en la figura 18 se pueden
25 combinar con las relaciones en la figura 1C, como tal, estas combinaciones representan las combinaciones de las relaciones entre los productores padre 114A y los productores descendiente 112A al productor 110A. Además, la figura 1 D ilustra algunas combinaciones adicionales de ejemplo de las relaciones entre los productores padre 114A y los productores descendientes 112A y el productor 110A.
La figura 18 ilustra las relaciones de ejemplo entre el productor 110A y el productor padre 114A.1 de acuerdo con una realización de la invención. la figura 18 incluye adicionalmente una instancia 1088. El conjunto de productores 114 se identifica por otras declaraciones de dependencia de los productores del método(s) diferente(s) de la misma clase, diferentes instandas de la misma clase, yfo método(s) de una clase diferente, y por lo tanto, cada uno de la serie de productores 114 puede ser: 1) de la misma instancia que el productor 110A (instancia 108A de la clase 35 102A) Y un método diferente asociado con ese ejemplo (ilustrado por la caja A en las lineas de trazos de la instancia 108A para el productor 114A.1 y desde el método 1048 al productor 114A1), 2) de una instancia diferente de la clase 102A Y un método diferente asociado con ese ejemplo (ilustrado por la caja 8 en las lineas de trazos de la clase 102A a la instancia 1088, desde la instancia 1088 al productor 114A.1, y desde el método 1048 al productor 114A1), 3) de una instancia de una clase diferente y un método asociado con esa instancia (ilustrado por la caja C en las lineas de trazos a partir de la clase 1028 a la instancia 1088, desde la instancia 1088 al productor 114A.1, Y desde el método 1040 al productor 114A.1), o 4) de una instancia diferente de la clase 102A (instancia 108A) y el mismo método (método 104A) de esa instancia (por ejemplo, con una dependencia contingente -descrita más adelante en este documento) (ilustrada por la caja D en las lineas de trazos de la clase 102A a la instancia 1088, desde la instancia 1088 para el productor 114A.1, y desde el método 104A para el productor 114A1); además,
45 cuando hay múltiples productores en el conjunto de los productores 114, los productores 114 pueden formar parte de la misma instancia de la clase 102A, diferentes instancias de la clase 102A, una instancia de una clase diferente, y/o una mezcla de los anteriores.
La figura 1C ilustra las relaciones de ejemplo entre el productor 110A y el productor descendiente 112A.1 de acuerdo con una realización de la invendón. La figura 1C incluye adicionalmente una instancia 108C. Cada uno del conjunto de productores 112A puede ser: 1) de la misma instancia que el productor 11 DA (instancia 1 OBA de la clase 102A) y un método diferente asociado con esa instancia (ilustrado por la caja E en las lineas de trazos de la instancia 108A al productor 112A.1 y desde el método 1 Q4C para el productor 112A.1), 2) de una instancia diferente de la clase 102A y un método diferente asociado con esa instancia (ilustrada por la caja F en las lineas de trazos de 55 la clase 102A en la instancia 108C, desde la instancia 108C al productor 112A.1 , y desde el método 104C al productor 112A.1), 3) de una instancia de una clase diferente y un método asociado con esa instancia (ilustrada por la caja G en las lineas de trazos de la clase 102C a la instancia 108C, desde la instancia 108C al productor 112A.1, y desde el método 104F al productor 112A.1), o 4) de una instancia diferente de la clase 102A (instancia 108) y el mismo método (método 104A) de esa instancia (por ejemplo, con una dependencia contingente que se describe más adelante en este documento) (ilustrada por la caja H en las lineas de trazos de la clase 102A a la instancia 108C, desde la instancia 108C al productor 112A.1, Y desde el método 104A al productor 112A.1 ). Asi, cada uno de los conjunto de productores 112A puede ser de la misma instancia que el productor 110A, de una instancia diferente de la clase 102A, o un ejemplo de una clase diferente; además, donde hay múltiples productores en el conjunto de los productores 112A, los productores 112A pueden fonnar parte de la misma instancia de la clase 102A, instancias
65 diferentes de la clase 1Q2A, la misma instancia de una clase diferente, diferentes instancias de una clase diferente, y/o una mezcla de los anteriores.
La figura 1 D ilustra algunas combinaciones adicionales de ejemplo de las relaciones de los productores padre 114 y los productores descendientes 112 al productor 110A de acuerdo con una realización de la invención. La figura 10, además, incluye la instancia 1088 y la instancia 108C. Las combinaciones de la figura 10 se muestran en la Tabla 1 a continuación:
La figura 1 E ilustra que diferentes instancias de la misma clase pueden tener productores basado en los mismos métodos y/o diferentes de acuerdo con una realización de la invención. La figura 1E muestra: 1) la definición de clase 102A, que incluye los métodos 104A-C y la declaración de dependencia de los productores 106A-C para cada uno de estos métodos, respectivamente, 2) la instancia 108A y la instancia 1088, pertenecientes a la clase 102A, 3) un productor 110A es el método 104A de la instancia 108A de la clase 102A, 4) un productor 110B es el método 1048 de la instancia 108A de la clase 102A, 5) un productor 11 OC es el método 104A de la instancia 1088 de la clase 102A; Y 6 ) un productor 11 OD es el método 1 04C de la instancia 1088 de la clase 1 02A. Además, la figura 1 D muestra que: 1) la declaración de dependencia del productor 106A para el método 104A identifica un entomo de ejecución de los productores descendientes del productor 110A y del productor 110C, 2) la declaración de dependencia del productor 1068 para el método 104B identifica el entorno de ejecución del productor descendiente del productor 1108, y 3) la declaración de dependencia del productor 106C del método 104C identifica el entorno de ejecución del productor descendente del productor 1100.
Tiempos de ejecución de ejemplo
La figura 2 es un diagrama de bloques que ilustra la capacidad de reuti lización de un entomo de ejecución con el soporte de programación orientada al grafo del productor de acuerdo con una realización de la invención. En la figura 2, varios programas de aplicaciones orientados a objetos (código de aplicación orientado a objetos con las declaraciones de dependencia de los productores 210A-I) son ejecutados mediante el mismo entorno de ejecución con la ayuda del soporte de programación orientado a grafos productor 220.
La figura 3A es un diagrama de bloques que ilustra un entorno de ejecución con el soporte de programación orientado al grafo del productor de acuerdo con una realización de la invención. En la figura 3A, un entorno de ejecución con soporte de programación orientado al grafo del productor 335 incluye un módulo de generación de grafos del productor automatizado 340 y un módulo de ejecución del grafo del productor 345. Además, el entomo de ejecución 335 es para ejecutar el código fuente orientado a objetos, y por lo tanto, incluye módulos adicionales que no se muestran.
Además, la figura 3A muestra declaraciones de dependencia de los productores para métodos de código fuente orientado a objetos 320, un conjunto actual de uno o más productores cuyas salidas son de interés 325 (también
5 denominados aqui como los productores seleccionados actualmente de interés), y las salidas de los productores de origen 330 (descritos más adelante en este documento). El módulo de generación de grafos del productor automatizado 340 recibe las declaraciones de dependencia de los productores 320 y el conjunto actual de los productores de interés 325.
El módulo de generación de grafos del productor automatizado 340 intenta descubrir, a partir de las declaraciones de dependencia de los productores, los productores descendientes con salidas que contribuyen directa e indirectamente a la entrada de los productores de interés seleccionados (yen algunas realizaciones de la invención que soportan dependencias declaradas ascendentes, productores padre), y construye un conjunto de uno o más grafos actuales de productores que representan la dependencia de estos productores entre si de los productores
15 seleccionados actualmente de interés, a través de cualquier productor descubierto que son productores sin origen, a los que los productores descubiertos son productores de origen. El grafo(s) de los productores actuales se almacena(n) en la estructura del grafo(s) del productor 380. Si bien las realizaciones de la invención pueden almacenar y manipular el grafo(s) del productor como una colección de grafos, otras realizaciones de la invención almacenan y manipulan el grafo(s) del productor como una colección de productores que están vinculados entre si para formar grafo(s) (en oposición a una colección de grafos) para facilitar la fusión y la escisión de los grafos del productor. A modo de ejemplo y no de limitación, se describen aqui las realizaciones de la invención que almacenan y manipulan el grafo(s) del productor como una colección de productores.
El módulo de ejecución del grafo del productor 345 recibe el grafo(s) del productor actual desde el módulo de
25 generación del grafo del productor automatizado 340 y las salidas de los productores de origen 330, y ejecuta los productores del grafo(s) del productor actual para determinar la salida actual de los productores actualmente seleccionados de interés. El módulo de ejecución del grafo del productor 345 almacena en caché las salidas actuales de los productores en la estructura de del grafo(s) del productor 380 tal como se ilustra mediante el almacenamiento en caché de la salida del productor 384.
El almacenamiento en caché de las salidas de los productores del grafo del productor durante la ejecución permite la sincronización. Por ejemplo, el tiempo apropiado para ejecutar un productor padre que depende de los múltiples productores descendientes es después que todos los productores descendientes múltiples hayan sido ejecutados, en otras palabras, seria un desperdicio (y, en algunos casos, no posible) ejecutar el productor padre cada vez que 35 uno de sus productores descendientes haya finalizado su ejecución. El almacenamiento en caché de las salidas de los productores permite la ejecución del productor padre no sólo para ser aplazado hasta que todos sus productores descendientes se hayan ejecutado, sino que también permite una determinación del tiempo apropiado para la ejecución del productor padre -cuando todos los productores descendientes han sido ejecutados y sus resultados se han almacenado. Así, el entorno de ejecución hace que esta decisión de sincronización para el programador comprobando el estado de ejecución de sus productores descendientes, en otras palabras, dicha sincronización está automatizada (el programador no necesita incluir el código fuente independiente que determina el tiempo apropiado para identificar una instancia y ejecuta una método dado asociado con esa instancia en esa instancia). A modo de otro ejemplo, donde varios productores padre dependen del mismo productor descendiente, asi como de otros productores distintos de los descendientes, el momento adecuado para ejecutar cada uno de los varios productores
45 padre suele ser diferente, el entorno de ejecución determina automáticamente el momento adecuado para ejecutar cada uno de los varios productores padre dependiendo de la disponibilidad de las salidas de su conjunto de productores secundarios.
Tal como se describirá en detalle más adelante en este documento, ya que algunas partes de un grafo del productor pueden no ser detectables en la actualidad debido a las dependencias de productores dinámicos, el módulo de generación del grafo del productor automatizado 340 "intenta" descubrir y construir el grafo del productor entero, pero no puede inicialmente ser capaz de completar todo el grafo del productor hasta que algunos productores se ejecutan. Como tal, el módulo de ejecución del grafo del productor 345 puede invocar el módulo de generación del grafo del productor automatizado 340 con las salidas de los productores necesarias durante la ejecución del grafo
55 del productor actual para completar cualquier resto no resuelto del grafo del productor actual (esto se ilustra en la figura 3A mediante una linea con flecha discontinua del módulo de ejecución de grafos del productor 345 al módulo de generación de grafos del productor automatizado 340, y se utiliza una linea discontinua con flecha porque este soporte es opcional).
La figura 4A es un diagrama de bloques que ilustra el descubrimiento y la construcción de un grafo del productor de ejemplo de acuerdo con una realización de la invención. La figura 4A muestra que el conjunto actual de los productores de interés consiste en el productor 1. Sobre la base del productor 1 y su declaración de dependencia del productor, se descubren el productor 2 y el productor 3. En otras palabras, la declaración de dependencia del productor para el productor 1 identifica que la entrada al productor 1 requiere la ejecución del productor 2 y el 65 productor 3. Como tal, el productor 1 es un productor dependiente (un productor que tiene una o más dependencias de productores). La figura 4A también muestra que mientras que el productor 3 es un productor independiente (un
productor que no tiene ninguna dependencia de productores, y por lo tanto, es un productor de origen), el productor 2 no lo es. Como resultado, en base a la declaración de dependencia del productor 2, se descubren el productor 4 y el productor 5. En la figura 2A, el productor 4 y el productor 5 son los productores independientes (y por lo tanto, los productores de origen).
La figura 48 es un diagrama de bloques que ilustra la ejecución inicial del grafo del productor de la figura 4A según una realización de la invención. En la figura 48, las líneas curvadas con flecha ilustran la ejecución de uno de los productores para generar una salida que se proporciona como la entrada a otro productor. Tal como se muestra en la figura 3A, la salida de los productores de origen 330 se proporcionan al módulo ejecución del grafo del productor 345; en contraste, las salidas de los productores dependientes 1-2 se determinan mediante la ejecución de dichos productores, tal como se muestra en la figura 48. Por lo tanto, en la figura 48, ocurre lo siguiente: 1) la salida del productor de origen 4 y el productor de origen 5 se proporciona al productor dependiente 2, 2) el productor dependiente 2 se ejecuta, y 3) las salidas del productor dependiente 2 y el productor de origen 3 se proporcionan al productor 1; Y 4) el productor 1 se ejecuta y su salida se proporciona como la salida actual de interés. Debe indicarse
15 que el grafo del productor de la figura 48 son los datos que circulan en el sentido de que los datos fluyen desde un productor a otro productor del grafo.
Así, las declaraciones de dependencia del productor 320 unido los posibles grafos de productores que pueden ser generados, mientras que el conjunto actualmente seleccionado de los productores de interés 325 identifican el nOdo(s) inicial(es) del grafo del productor actual que se genera. De estos dos, el módulo de generación de grafo del productor automatizado 340 descubre y construye el grafo del productor. El descubrimiento y la construcción está automatizada porque el módulo de generación de grafo del productor automatizado 340 no proporciona el grafo del productor (por ejemplo, no necesita ser identificado manualmente por un programador) o incluso una lista de los productores que estará en el grafo del productor. Por el contrario, el módulo de generación del grafo del productor
25 automatizado 340 analiza la(s) declaración(es) de dependencia del productor del conjunto actual de productores seleccionados de interés para descubrir sus productores descendientes (yen algunas realizaciones de la invención que soportar dependencias ascendentes declaradas, productores padre), a continuación, analiza las declaraciones de dependencia de productores de dichos productores descubiertos, y así sucesivamente hacia abajO a los productores de origen (en algunas realizaciones de la invención que se describen más adelante en este documento, esto se puede hacer con la ayuda del módulo de ejecución del grafo del productor 345). En el caso de que el grafo del productor sea un árbol, un productor actualmente seleccionado de interés será el nodo raíz, y las declaraciones de dependencia de productor se analizarán hasta que se descubren los nodos de hoja (los productores de origen).
Productores de anulación y ejecución incremental
35 La figura 38 es un diagrama de bloques que ilustra un entorno de ejecución con el soporte de programación orientada a grafo del productor a que también soporta la ejecución incremental y las salidas de anulación del productor de acuerdo oon una realización de la invención. Se debe entender que la ejecución incremental y salidas de anulación del productor son, cada una, características opcionales independientes, y por lo tanto, diferentes realizaciones de la invención pueden aplicar una o ambas.
En la figura 38, un entorno de ejecución con un soporte de programación orientada al grafo del productor 360 incluye un módulo de generación de grafo del productor automatizado 365, un módulo de ejecución de grafo del productor 370, y un módulo de salida del productor de anulación 390. El entorno de ejecución 360 es la ejecución del
45 código fuente orientado a objetos y, por tanto, asi incluye módulos adicionales que mostrados.
Además, la figura 38 muestra las declaraciones de dependencia de productores para métodos en código fuente orientada a objetos 320, el conjunto actual de uno o más productores cuyas salidas son de interés 325 (también denominados aqui como los productores seleccionados actualmente de interés), y la sa lida de los productores de origen 350. La salida de los productores de origen 350 incluye los resultados de los productores independientes establecidos en el código fuente 352 (por ejemplo, las constantes, los valores por defecto, etc.) y las salidas de los productores actualmente anulados 354 (las salidas de los productores independientes ylo los productores dependientes cuyas salidas se anulan actualmente).
55 En algunas realizaciones de la invención, las salidas de los productores puede ser anuladas explícitamente con un valor proporcionado actualmente (es decir, en lugar de ejecutar un productor para determinar su valor de salida en base a sus entradas actuales, el valor de salida para el productor se proporciona explícitamente). Además de los productores independientes de un grafo del productor, los productores de origen de un grafo del productor son los productores actualmente anulados.
El módulo de salida del productor de anulación 390 recibe las salidas del productor de anulación 354 (que identifica los productores están siendo anulados y cuyos valores de salida están siendo anulados). En una realización de la invención, los productores pueden ser clasificados como productores de propiedad o productores de método. Los productores de propiedad son los que se basan en los métodos de propiedad (por ejemplo, obtener y establecer). 65 Los productores de método son los basados en métodos no de propiedad. El módulo de salida del productor de anulación 390 incluye un módulo de salida de propiedad del productor de anulación 392 para los productores de
propiedad anulados y un módulo de salida del productor de método de anulación 394 para los productores de método anulados. El módulo de salida del productor de propiedad de anulación 392 hace que el valor anulado se almacene en el caché del productor de salida 384 y en los datos de la instancia, mientras que el módulo de salida del método del productor anulado 394 hace que el valor anulado sea almacenado en el caché de salida del
5 productor 384. Dependiendo de la realización de la invención, esta relación causal puede ser directa o ind irecta. La figura 3B ilustra una relación causal indirecta a través del uso de un registro de anulación 396 que recoge la salida del módulo de salida del productor de anulación 390 y que es consumida por el módulo de ejecución del grafo del productor 370. Para propósitos de optimización, el registro de anulación 396 permite el retraso de las anulaciones para recoger las anulaciones múltiples de procesamiento por lotes.
Al igual que en el módulo de generación automática del grafo del productor 340, el módulo de generación automatizada del grafo del productor 365: 1) recibe las declaraciones de dependencia del productor 320 y el conjunto actual de los productores de interés 325, y 2) intenta descubrir, sobre la base de las declaraciones de dependencia de los productores, productores descendientes con salidas que contribuyen directa e indirectamente a
15 la entrada de los productores seleccionados actualmente de interés (yen algunas realizaciones de la invención que soportan las dependencias declaradas ascendentes, productores padre), y construye un conjunto de uno o más grafos actuales de productor que representan la dependencia de entrada de estos productores entre si de los productores seleccionados de interés, a través de cualquier productor descubierto no de origen, a los productores descubiertos que son productores de origen (productores independientes y productores actualmente anulados). El grafo(s) productor se almacena(n) en el grafo(s) productor de la estructura 380.
Similar al módulo de ejecución del grafo del productor 345, el módulo de ejecución del grafo del productor 370 recibe el grafo del productor actual desde el módulo grafo automatizado 365 y las salidas de los productores de origen 350, y ejecuta los productores del grafo del productor actual para detenninar la salida actual del productores
25 seleccionados de interés. El módulo de ejecución del grafo del productor 370 almacena en caché los resultados actuales de los productores de la estructura del gráfica productor 380 tal como se ilustra en el almacenamiento caché de salida del productor 384. Tal como se describió previamente, el caché de las salidas de productores durante la ejeCución permite la sincronización (por ejemplo, el código fuente separada no necesita ser escrito para detenninar cuándo debe ser ejecutado el productor 2 de la figura 48, sino más bien el entorno de ejecución hace que esta decisión de sincronización para el programador comprobando el disponibilidad de las salidas necesarias en el caché de salida del productor 384, en otras palabras, dicha sincronización es automatizada). Además, esta memoria caché de salida del productor 384 se utiliza para la ejecución incremental. Más concretamente, después de que un grafo del productor haya sido generado inicialmente y ejecutado, la anulación de un productor en el grafo del productor actual
35 requiere un cierto nivel de una ejecución adicional. Si bien algunas realizaciones de la invención simplemente vuelven a ejecutar todo el grafo, realizaciones alternativas de la invención soportan la ejecución incremental (volver a ejecutar sólo aquellas partes del grafo del productor que se ven afectadas por la anulación). Algunos ejemplos de realización que soportan la ejecución incremental utilizan la ejecución incremental marcando 382 en la estructura del grafo(s) productor 380 para ayudar a determinar qué productores requieren la ejecución adicional. Por lo tanto, el mantenimiento del grafo(s) del productor se refiere a la modificación de los enlaces del grafo(s) productor según sea necesario a través de ejecuciones múltiples para mantenertos actualizados (al dial, mientras que la ejecución incremental se refiere tanto a mantener el grafo(s) del productor y usar el grafo(s) del productor actuales (al dia) para volver a ejecutar sólo aquellas partes del grafo(s) del productor que se ven afectados por una anulación.
45 Similar a la figura 3A, hay una linea de trazos con flecha desde el módulo de ejecución del grafo del productor 370 al módulo de ejecución automatizada del grafo del productor 365 para representar un soporte opcional para las dependencias dinámicas. Cabe señalar que las dependencias dinámicas pueden cambiar durante la ejecución adicional de un grafo del productor.
La figura 4C es un diagrama de bloques que ilustra la ejecución incremental del grafo del productor de la figura 48 de acuerdo con una realización de la invención. En la figura 4C, la salida del productor 5 ha sido modificada de forma explicita, pero las salidas del productor 3 y del productor 4 no. Basándose en el seguimiento de las dependencias de la salida a la entrada en el grafo del productor y que sólo la salida del productor 5 ha sido modificada de forma explicita, se detennina que sólo el productor 2 y el productor 1 se ven afectados por esta
55 modificación. Como resultado, la determinación de una salida actualizada del productor 1 requiere solamente la ejecución adicional del productor 2 y del productor 1 con la nueva salida del productor 5 y las salidas anteriores del productor 4 y del productor 3. Esta ejecución adicional parcial del grafo del productor se ilustra en la figura 4C mediante líneas curvas con flecha desde el productor 5 al productor 2 y del productor 2 al productor 1, pero no desde el productor 4 al productor 2 o del productor 3 al productor 1. La falta de lineas curvas con flechas del productor 4 al productor 2 y del productor 3 al productor 1 no son para indicar que las salidas del productor 3 al productor 4 no son necesarias, sino que en su lugar, el productor 3 y el productor 4 no se necesitan volver a ejecutar si su salida se encuentra antes disponible. (Por ejemplo, almacenada en caché desde la ejecución previa del grafo del productor).
65 El ejemplo relativamente simple de la figura 4C ilustra que no puede haber un ahorro en los recursos de procesamiento como resultado de la ejecución incremental. Estos ahorros dependerán de una serie de factores (por ejemplo, del número de productores que no necesitan volverse a ejecutar, de la cantidad de procesamiento de dichos productores habrian requerido, etc.). Aunque una realización de la invención se ilustra que realiza la ejecución incremental, realizaciones altemativas puede implementarse de forma diferente (por ejemplo, una realización altemativa puede volver a ejecutar para que todos los productores respondan a una modificación).
La figura 40 es un diagrama de bloques que ilustra la ejecución incremental del grafo del productor de la figura 4B después de que el productor dependiente 2 haya sido anulado de acuerdo con una realización de la invención. En la figura 40, la salida del productor 2 ha sido modificada de forma explicita, pero la salida del productor 3 no. Basado en el grafo del productor y que sólo la salida del productor 2 ha sido modificada de forma explícita, se determina que sólo el productor 1 se ve afectado por esta modificación. Como resultado, la determinación de una salida actualizada del productor 1 requiere solamente la ejecución adicional del productor 1 que se anula con la salida del productor 2 y la salida modificada del productor 3. Esta ejecución adicional parcial del grafo del productor se ilustra en la figura 40 mediante una linea curva con fledla desde el productor 2 al productor 1, pero no desde el productor 4 al productor 5
o del productor 3 al productor 1.
La figura 4E es un diagrama de bloques que ilustra la ejecución incremental del grafo del productor de la figura 4B después de que el productor dependiente 2 se haya anulado y el productor fuente independiente 3 se haya modificado de acuerdo con una realización de la invención. Basado en el grafo del productor y en que sólo las salidas del productor 2 y del productor 3 se han modificado, se determina que sólo el productor 1 se ve afectado por esta modificación. Como resultado, la determinación de una salida actualizada del productor 1 requiere solamente la ejecución adicional del productor 1 que se reemplaza con la salida del productor 2 y la salida modificada del productor 3. Esta ejecución adicional parcial del grafo del productor se ilustra en la figura 4E mediante una línea curvada con flecha desde los productores 2 y 3 al productor 1, pero no desde los productores 4 y 5 al productor 2.
25 Aunque una realización de la invención que soporta las salidas del productor de anulación también soporta las salidas del productor de anulación, realizaciones altemativas de la invención no lo hacen. Aunque una realización de la invención que soporta los productores de anulación deja un productor de anulación anulado hasta que esté especificamente anulado, realizaciones alternativas de la invención pueden implementarse de forma diferente (por ejemplo, anulando un productor anulado cuando uno de su progenie se anula).
Construcción v ejecución del grafo del productor
Diferentes realizaciones de la invención pueden ser implementadas para descubrir y construir un grafo del productor en diferentes grados (por ejemplo, construir el grafo del productor hasta que todos los caminos desde el extremo del
35 nodo de raíz en los productores independientes (en cuyo caso, los nodos de extremo de un grafo del productor son productores independientes, con la posibilidad de que cualesquiera productores anulados sean nodos intermedios); construir el grafo del productor hasta que cada camino desde el nodo de raiz termine en un productor anulado o un productor independiente, el que se alcance primero (en cuyo caso, cada nodo de extremo de un grafo del productor sea un productor independiente o un productor anulado)).
~Productores de ejecución de in icio~ se refiere a los productores de un grafo del productor a partir de los cuales comienza una ejecución dada del grafo del productor. Para una ejecución inicial de un grafo del productor, diferentes realizaciones pueden comenzar a partir de diferentes productores (por ejemplo, en las realizaciones de la invención que construyen el grafo del productor hasta que todos los caminos desde el extremo del nodo de raiz en productores 45 independientes, la ejecución puede comenzar a partir de los nodos de extremo (que serian los productores independientes), a partir de los productores de origen (que incluirian los nodos de productores independientes y los nodos de productores anulados), a partir de un subconjunto de productores de origen que consisten en la combinación de cualesquiera productores independientes con al menos un camino entre los mismos y el productor raiz que no incluye un productor anulado y cualesquiera productores anulados, o a partir de un subconjunto de productores de origen que consiste en la combinación de cualesquiera productores anulados sin ningun tipo de descendientes que se anulan y cualesquiera productores independientes con al menos un camino entre los mismos y el productor ra iz que no incluye un productor anulado; en realizaciones de la invención donde el grafo del productor bajo productores anulados no se construye si y hasta que a un productor se le retira la anulación, la ejecución puede comenzar desde los nodos de extremo (que pueden ser productores independientes y/o
55 productores anulados), etc.).
Para ejecuciones posteriores de un grafo del productor, diferentes realizaciones puede comenzar a partir de diferentes productores (por ejemplo, a partir de los productores independientes del grafo del productor (por ejemplo, en las realizaciones de la invención que no soportan la ejecución incremental), a partir de los productores de origen del grafo de productores (por ejemplO, en las realizaciones de la invención que no soportan la ejeCuCiÓn incremental); a partir de un subconjunto de los productores de origen que consiste en los productores de origen que se han anulado y/o agregado desde la última ejecución (por ejemplo, en las realizaciones de la invención que se hacen compatible con la ejecución incremental), a partir de los productores de origen que se han anulado y/o agregado desde la última ejecución, a partir de la combinación de los productores anulados sin descendientes que 65 se anulen y cualesquiera productores añadidos, con al menos un camino entre los mismos y el productor raíz que no incluye un productor anulado (por ejemplo, en las realizaciones de la invención que soportan la ejecución
incremental); etc.). A modo de ejemplo y no de limitación, las realizaciones de la invención que realizan lo siguiente se describen a continuación: 1) no construir el grafo del productor bajo productores anulados si y hasta que este productor no que ha retirado la anulación; 2) para una ejecución inicial de un grafo del productor, iniciar la ejecución de los nodos de extremo (que pueden ser productores independientes ylo productores anulados), 3) implementar la
5 ejecución gradual, y 4) para las ejecuciones posteriores de un grafo del productor, iniciar la ejecución de un subconjunto de los productores de origen que consiste en esos productores de origen que se han anulado ylo agregado desde la última ejecución.
Respecto al concepto anterior de los productores de inicio de la ejecución, el flujo de procesamiento de la ejecución del grafo del productor también difiere entre las diferentes realizaciones. Por ejemplo, en una realización de la invención, la ascendencia de los productores de ejecución de inicio se determina y se coloca en una colección, los productores de inicio de ejecución se ejecutan, y la colección se analiza de manera iterativa en busca de productores para los cuales todas las dependencias han sido ejecutadas -eventualmente, los nodos de ra iz son alcanzados. Como otro ejemplo, en una realización de la invención, los productores de inicio de la ejecución se
15 ejecutan, los padres de los productores de ejecución de inicio se identifican, los padres se ejecutan, y sus padres se identifican y se ejecutan, y asi sucesivamente. Esta última realización de la invención se utiliza a continuación a modo de ejemplo, y no de limitación.
Tipos de de ejemplo de las dependencias
Dependencias dinámicas de productores de ejemplo
Una dependencia del productor dinámica es una dependencia del productor que puede cambiar durante la ejecución. Se debe entender que los criterios para resolver la dependencia del productor están presentes en el 25 código fuente , y por lo tanto, los productores a los que la dependencia del productor puede ser resuelta son limitados. Con referencia a la figura 3A, la linea discontinua con flecha desde el módulo de ejecución del grafo del productor 345 al módulo de generación automatizada del grafo del productor 340 representa un soporte para la ejeCuCión de uno o más productores en el grafo del productor actual que son necesarios para descubrir y construir toda el grafo del productor actual. En otras palabras, una realización de la invención que soporta las dependencias dinámicas de productores puede iterar entre el módulo de generación automatizada del grafo del productor 340 y el módulo de ejecución del grafo del productor 345 hasta que el todo grafo del productor se descubre, se construye, y se ejecuta, es decir, iterar entre: 1) la invocación del módulo de generación automatizada del grafo del productor para descubrir y construir las partes del grafo del productor actual que se pueden resolver en ese momento, y 2) la invocación del módulo de ejecución del grafo del productor para ejecutar los productores del grafo del productor
35 actual). En este sentido, descubrir se refiere al acceso de las declaraciones de dependencia de los productores y la determinación de los productores que se identifican; la creación se refiere a instancias de los productores y su adiCión al grafo del productor, y la resolución se refiere a la determinación de las dependencias dinámicas de los productores actualmente no resueltas.
La figura 5A es un diagrama de bloques que ilustra el descubrimiento y la construcción de un grafo del productor de ejemplo que incluye una dependencia no resuelta de acuerdo con una realización de la invenCión. La figura 5 muestra el conjunto actual de los productores de interés que consisten en el productor 1. Sobre la base del productor 1 y su declaración de dependencia del productor, el productor 2 y el productor 3 se descubren. En otras palabras, la declaración de dependencia para el productor 1 identifica que el productor 1 requiere como entradas la salida del
45 productor 2 y del productor 3. La figura 5A también muestra que mientras el productor 3 es un productor independiente (y por lo tanto, un productor de origen), el productor 2 no lo es. Como resultado, en base a la declaración de dependencia del productor 2, el productor 4 y el productor 5 se descubren. Además, la figu ra 5A muestra que mientras que el productor 4 es un productor independiente (y por lo tanto, un productor de origen), el productor 5 no lo es. Como resultado, en base a la declaración de dependencia del productor 5, el productor 6 y la dependencia actualmente no resuelta se descubren. La figura 5A muestra también que la dependencia actualmente no resuelta puede ser el productor 7A ylo el productor 7B.
La figura 5B es un diagrama de bloques que ilustra la ejecución inicial del grafo del productor de la figu ra 5A y la resolución de la dependencia no resuelta de acuerdo con una realización de la invención. La figura 5B muestra el
55 grafo del productor de la figura 5A, con lineas CUNas con flechas que muestran la ejecuciÓn de los productores y la provisión de sus salidas a los productores padre dependientes. Además, la figura 58 muestra que la dependencia no resuelta del productor 5 se resuelve como una dependencia en el productor 7A, y que el productor 7A es un productor independiente.
La figura 5C es un diagrama de bloques que ilustra la ej eCUCión inicial del grafo del productor de la figura 5A ylo la ejecución adicional del grafo del productor de la figu ra 5B de acuerdo con una realización de la invención. La figura 5C muestra el grafo del productor de la figura 5A, con líneas CUNas con flechas que muestran la ejecución de los productores y el suministro de sus salidas a los productores padre dependientes. Además, la figura 5C muestra que la dependencia no resuelta del productor 5 se resuelve como una dependencia del productor 7B y que el productor 65 7B es un productor dependiente. Como resultado, en base a la declaración de dependencia del productor 7B, el productor 8 es descubierto. El productor 8 es un productor independiente (y por lo tanto, es un productor de origen).
Suponiendo que la figura 5C representa la ejecución inicial del grafo del productor de la figura 5A, se emplearían todas las lineas curvas con flecha en la figura 5C. Sin embargo, suponiendo que la figura se representa la ejecución adicional del grafo del productor de la figura 5B, la ejecución adicional resulta en la dependencia dinámica que se resuelve de forma diferente (un interruptor desde el productor 5 que es dependiente del productor 7A al productor 5 7B). Además, si el ejecución adicional se realiza sin ejecución incremental, a continuación, se emplean todas las lineas curvadas con flecha en la figura 5C, sin embargo, si se utilizó la ejecuciÓn incremental, sólo se emplearian las líneas curvadas con flecha no discontinuas (del productor 8 al productor 7B, del productor 7B al productor 5, del productor 5 al productor 2, y del productor 2 al productor 1). También debe entenderse que el cambio dinámico en la dependencia que se ilustra en la figura SC es de ejemplo, y por lo tanto, cualquier número de diferentes situaciones podrian surgir (por ejemplo, el cambio dinámico puede no producirse nunca; el productor 5 podria haber sido primero el productor 7B dependiente y luego cambiar al productor 7A, el productor 5 podria haber sido primero dependiente del productor 7B y no siempre se produce un cambio dinámico, el productor 5 se puede encontrar que es dependiente del productor 7A y del productor 7B como se ilustra en la figura 50, etc.). Aunque diferentes realizaciones pueden resolver las dependencias dinámicas de productores de diferentes maneras, algunos ejemplos
15 se proporcionan más adelante en este documento.
Así, la ejecución adicional automatizada de un grafo del productor no se limita al productor que se modifica y a su padre directo que se vuelve a ejecutar, más bien un cambio es automáticamente ondulado a través del grafo del productor durante el entorno de ejecución, que afecta a los productores apropiados y sus dependencias, porque los grafos del productor se mantienen (y la ejecuciÓn incremental se utiliza si se soporta). Como tales, los cambios provocan cualquier descubrimiento adicional necesario, creación, resolución y ejecución. Asi, la ejecución adicional de un grafo del productor está automatizada en el sentido de que un usuario/programador no necesita determinar qué productores del grafo del productor se ven afectados, y posiblemente corregir manualmente el grafo.
25 Dependencias estáticas del productor
Una dependencia estática es aquella que no se puede cambiar durante la ejecución. Así, en una realización de la invención que soporta dependencias dinámicas contingentes y de suscripción (descritas más adelante en este documento), una dependencia no contingente sin suscripción es una dependencia estática. El grafo del productor de ejemplo de la figura 4A ilustra un grafo del productor de dependencias estáticas.
Formas del grafo del productor
Dado que un productor es al menos una instancia y un método asociado con esa instancia, un grafo del productor es
35 un grafo que representa las instancias y los métodos asociados con las instancias -y por lo tanto, los grafos del productor son por lo menos instancia y método céntrico. En las realizaciones de la invención en las que un productor es por lo menos una clase, ínstancia, y método, los grafos del productor son al menos clase, instancia y método céntrico.
Se debe entender que un grafo del productor puede tomar una variedad de formas diferentes (por ejemplo, una sola cadena de productores, un árbol, etc.). El grafo del productor de ejemplo de la figura 5B es un árbol con un nodo de raíz del productor 1, desde el cual hay dos ramas -una para cada uno del productor 2 y el productor 3. Cuando el productor 3 es un nodo de hoja, el productor 2 tiene dos ramas que se extienden desde la misma -una a cada uno del productor 4 y el productor 5. El productor 5 tiene dos ramas que se extienden desde el mismo -una para cada
45 uno del productor 6 y el productor 7A. El grafo del productor de ejemplo de la figura 5B se dice que es multinivel, con el nivel 1 incluyendo el productor del nodo de raíz 1, con el nivel 2 incluyendo el productor 2 y el productor 3, con nivel 3 incluyendo el productor 4 y el productor 5, con el nivel 4 incluyendo el productor 6 y el productor 7A (en la figura SC, el nivel 4 íncluye el productor 7B, y el nivel 5 íncluye el productor 8). Cuando se considera la rama desde el productor 1 con el productor 2, el primer productor de la rama es el productor 2 y los últimos productores de la rama son el productor 4, el productor 6, y el productor 7A en la figura 58.
Aunque la figura 58 muestra un grafo del productor en el que el conjunto actual de productores de interés incluyen un solo productor, las realizaciones de la invención que soportan más de un productor de interés actual descubrirían y construirían grafos de productores para cada uno. Se debe entender que, cuando simultáneamente hay 55 productores múltiples de interés, los grafos de productores resultantes pueden ser independientes o pueden cruzarse. Cuando los grafos de productores se cruzan, las realizaciones de la invención pueden implementarse en: 1) duplicar los productores para mantener separados los grafos del productor, o 2) evitar la duplicación y mantener dicha intersección de los grafos del productor. También debe entenderse que estos grafos del productor que se cruzan pueden incluir un grafo del productor que es un subconjunto de otro grafo del productor. Por ejemplo, si el productor 5 se incluyó con el productor 1 en el conjunto actual de los productores de interés, entonces habría un primer grafo del productor con un nodo de raíz del productor 5 y un segundo grafo del productor con un nodo de raiz del productor 1, donde el segundo grafo del productor incluye el primer grafo del productor. Si, por ejemplo, el productor 7B se incluyó con el productor 1 y el productor 5 en el conjunto actual de los productores de interés, habría un tercer grafo del productor, separado del primer y segundo grafos del productor, con un nodo de ra íz del productor 65 7B en la figura 5B. Además, sí la dependencia dínámíca de productor 5 cambia desde el productor 7A al productor 7B (figura 5C), entonces el cambio se traduciría en que el tercer grafo del productor se convierte en un subconjunto
del segundo grafo del productor restante, y el segundo grafo del productor se convierte en un subconjunto del primer grafo del productor. Tal como se ha indicado anterionnente, aunque las realizaciones de la invención pueden almacenar y manipular el grafo(s) del productor como una colección de grafos, otras realizaciones de la invención almacenan y manipulan el grafo(s) del productor como una colección de productores que están vinculados entre si
5 para formar el grafo(s) (en oposición a una colección de grafos) para facilitar la fusión y la escisión de los grafos del productor. A modo de ejemplo y no de limitación, las realizaciones de la invención que almacenan y manipulan el grafo(s) del productor como una colección de los productores se describen aquí.
Flujo de ejecución de ejemplo
La figura 6 es un diagrama de flujo de un flujo de ejecución lógica de un cliente de entorno de ejecución y su relación con un entorno de ejecución con el soporte de programación orientado al grafo del productor de acuerdo con una realización de la invención. En la figura 6, la linea divisoria de trazos 600 separa el flujo de ejecución lógica de un cliente de entorno de ejecución 610 del entorno de ejecución con el soporte de programación orientada al grafo del
15 productor 640.
El flujo de ejecución lógica del diente de entamo de ejecución 610 incluye los bloques 615, 620, 625, y 630, mientras que el entorno de ejecución con el soporte orientado al grafo del productor 640 incluye los bloques 645, 650, 660, y, opcionalmente, 655. Una linea sólida con flecha representa una relación causal directa desde el bloque 630 al bloque 660. En contraste, las lineas de trazos con flecha ilustran una relación causal desde los bloques 615 y 625 en el flujo de ejecución lógica del cliente del entamo de ejecución 610 a los bloques 645 y 650 en el entamo de ejecución con el soporte orientado al grafo del productor 640, respectivamente, dependiendo de la realización de la invención, esta relación causal puede ser directa o indirecta. Por ejemplo, la figura 6 ilustra una relación causal opcional indirecta a través del uso de un registro de comandos 665 en un óvalo discontinuo en el entomo de
25 ejecución con lado del grafo orientado al soporte del productor 640 de la linea de trazos 600. El registro de comandos 665 recoge los comandos que resultan de los bloques 615 y 625 del flujo de ejecución lógico del cl iente de entorno de ejecución 610, y el registro de comandos 655 que se consume, que responde al bloque 630, mediante el procesamiento del bloque 660. Por lo tanto, el registro de comandos 665 permite el retraso de los comandos con el fin de recopilar los múltiples juntos y procesarlos por lotes con fines de optimización. Asi, el registro de comandos 665 es similar al registro de anulación 396 de la figura 38, y en realidad se incluye el registro de anulación 396 en algunas realizaciones de la invención.
En el bloque 615, el conjunto de uno o más productores de interés se determina como el conjunto actual de los productores de interés y el control pasa al bloque 620. En respuesta a la relación causal entre el bloque 615 y el
35 bloque 645, el bloque 645 muestra que el conjunto actual de los productores de interés se instancia y que se hace un intento por descubrir, construir, y resolver (si las dependencias dinámicas son compatibles y una o más se descubren en el grafo del productor) el grafo(s) del productor para cada uno, incluyendo instancias de todas las instancias y los productores de las mismas, según sea necesario, basándose en las dedaraciones de dependencia de los productores en el cliente de entorno de ejecución 610. Con referencia a las figuras 3A y 38, el módulo de generación automatizada de grafos del productor 340 y 365 se invocan, respectivamente.
En el bloque 620, se determina si hay alguna anulación de salida del productor. Si es asl, el control pasa al bloque 625, de lo contrario, el control pasa al bloque 630.
45 En el bloque 625, una o más anulaciones de salida del productor son recibidas por un conjunto de uno o más productores y el control pasa al bloque 630. En respuesta a la relación causal entre el bloque 625 y el bloque 650, el bloque 650 muestra que el conjunto actual de los productores anulados son instanciados (Si no están ya instanciados en el bloque 645), sus salidas se modifican, y se realiza su seguimiento. Un productor anulado puede ya haberse instanciado, ya que ya fue descubierto para formar parte del grafo(s) del productor en el bloque 645. Sin embargo, un productor anulado no puede ya ser descubierto en el bloque 645 debido a una dependencia dinámica sin resolver. Como tal, este productor anulado se instancia y se anula con la expectativa de que se pueda añadir al grafo(s) del productor cuando se resuelven las dependencias dinámicas. También, tal como se ha indicado anteriormente, el registro de anulación 396 de la figura 38, si se aplica, existe entre el bloque 625 y el bloque 650, y forma parte del registro de comando 665. Además, el conjunto de los productores anulados se rastrea en algunas
55 realizaciones de la invención que soportan la ejecución incremental. Aunque en las realizaciones de la invención que soportan el registro de anulación 396/el registro de comandos 665, el seguimiento es parte del registro, en realizaciones alternativas de la invención el seguimiento se realiza por separado en el bloque 650 con un mecanismo diferente.
En el bloque 630, el módulo de ejeCUCiÓn del grafo del productor se invoca y el control vuelve opcionalmente al bloque 615 y/o al bloque 625. En respuesta a la relación causal entre el bloque 630 y el bloque 660, el bloque 660 muestra que el grafo(s) del productor ha seguido y los productores que requ ieran la ejecución se ejecutan basándose en el seguimiento. Diversas técnicas se han discutido previamente para la ejecución de los productores del grafo del productor y son aplicables aquí. Con referencia a las figuras 3A y 38, el módulo de ejecución del grafo 65 del productor 345 y 370 se invocan, respectivamente. Además, en realizaciones de la invención en las que se lleva a cabo el registro de comandos 665, la relación causal incluye consume el registro de comandos 665 y la realización
de los bloques de procesamiento 645 y 650 antes del bloque 660. Además, en realizaciones de la invención que soportan la posibilidad de dependencias no resueltas, el control fluye desde el bloque 660 al bloque 655 cuando sea necesario.
5 En el bloque 655, se realiza un intento de resolver las dependencias no resueltas y descubrir y constru ir el resto del grafo(s) de productor, incluyendo instanciar todas las instancias y los productores de las mismas. Desde el bloque 655, el control fluye de vuelta al bloque 660.
Formas de ejemplo de las declaraciones de dependencia de los productores
Las figuras 7A-F ilustra algunas formas de ejemplo para las declaraciones de dependencia de productores de acuerdo con las realizaciones de la invención. Aunque las figuras 7A-F ilustran realizaciones que soportan dependencias de argumento, campo, y secuendación, se debe entender que diferentes realizaciones pueden soportar sólo una o dos de las tres formas de dependencia. En las realizaciones de la invención mostradas en las 15 figuras 7A-F, una declaración de dependencia del productor se compone de una declaración de dependencia del productor y el código de declaración de dependencia del productor opcionalmente explicito. Un acceso directo de la dependencia no declarada del productor es uno cuyo código de declaración de dependencia explicita del productor se utiliza, mientras que un acceso directo de declaración de dependencia del productor es uno cuyo código de declaración dependencia no explícita del productor se utiliza (mejor dicho, el entomo de ejecución no utiliza el código
20 de declaración de dependencia del productor y/o lo implementa sobre la marcha sobre la base de la información en la declaración de dependencia del productor).
Diferentes realizaciones de la invención pueden utilizar diferentes sintaxis para declarar dependencias de los productores. Por ejemplo, diferentes realizaciones de la invención pueden incluir sintaxis diferentes para su uso en 25 las declaraciones de dependencia de los productores que limitan fuertemente, limitan débilmente, y/o no limitan el tipo de dependencia del productor que puede ser creada. Una dependencia del productor fuertemente limitada es aquella para la cual se utiliza una sintaxis en la declaración de dependencia del productor que limita sustancialmente el tipo de dependencia del productor que puede ser creado, una dependencia del productor débilmente limitada es aquella para la cual se utiliza una sintaxis en la declaración de dependencia del productor que es menos limitativa
30 del tipo de dependencia del productor que puede ser creado, y una dependencia del productor sin restricciones es aquella para la cual se utiliza una sintaxis en la declaración de dependencia del productor que no limita el tipo de dependencia del productor que puede crearse.
A modo de ejemplo, y no de limitación, las realizaciones de la invención que se describen a continuación incluyen lo
35 siguiente: 1) una sintaxis para una dependencia del productor fuertemente limitada para los argumentos (Dependencia de Arg umentos = dependencia de argumentos declarada de manera descendente fuertemente limitado [estático o dinámico, y si es dinámico, suscripción contingente y/o de absorción]), 2) una sintaxis para una dependencia del productor fuertemente limitadas para los campos (Dependencia del campo = dependencia de campo declarada muy limitada [estática o dinámica, y si es dinámica, suscripción contingente y/o de absorción]), 3)
40 una sintaxis para una dependencia de productores muy limitada para las dependencias de la secuencia (Dependencia de la secuencia = dependencia de secuencia declarada muy limitada de manera descendente [estática o dinámica, y si es dinámica, suscripción contingente y/o adherente]), 4) una sintaxis para una dependencia declarada del productor débilmente limitada para argumento, campo, o secuencia de las dependencias (Dependencia ascendente = dependencia débilmente limitada declarada ascendente de campo, argumento, o
45 secuencia [estática o dinámica, y si es dinámica, contingente]), y 5) una sintaxis para una dependencia del productor débilmente limitada (Dependencia débilmente limitada = o bien a) dependencia de secuencia declarada de manera descendente [estática o dinámica, y si es dinámica, suscripción contingente y/o adherente], o b) dependencia declarada de manera ascendente [argumento, campo, o secuencia] [estática o dinámica, y si es dinámica, contingente]). Se debe entender que, si bien algunas realizaciones de la invención admiten una sintaxis para la
50 declaración de dependencia del productor que distingue las dependencias de argumento declaradas de manera descendente, las dependencias de campo declaradas de manera descendente, las dependencias declaradas de manera ascendente (que pueden devolver las dependencias declaradas de manera ascendente de argumento, campo, o secuencia), y dependencias débilmente limitadas (que se puede devolver las dependencias declaradas de secuencia de manera descendente, las dependencias de argumento, campo, o secuencia de manera ascendente),
55 realizaciones altemativas de la invención pueden adoptar una sintaxis diferente (por ejemplo, tienen una sintaxis que tiene todas las dependencias sin restricciones con la determinación de la dependencia los productores que pueden devolver cualquier dependencia soportada (dependencias de manera descendente y ascendente declaradas de argumento, campo, y secuencia), que tienen una sintaxis que distingue todas las dependencias soportadas, que tienen una sintaxis que distingue de manera descendente y ascendente las dependencias declaradas de argumento
60 y de campo, y que distingue una dependencia débilmente restringida que sólo puede devolver las dependencias de secuencia declaradas de manera ascendente y descendente, una sintaxis que distingue las dependencias declaradas de manera descendente de argumento y de campo, y que distingue las dependencias ascendentes declaradas que sólo pueden devolver de manera ascendente las dependencias declaradas de secuencia, una sintaxis que distingue las dependencias declaradas de manera descendente de argumento, campo, y secuencia
65 (suscripciones adherentes y dependencias declaradas de manera ascendente no están soportadas), etc.).
Debe entenderse que la sintaxis de la sentencia la declaración de dependencia del productor no equivale necesariamente a la dependencia del productor (por ejemplo, el enlace), creado en el grafo del productor (por ejemplo, ArgumentDependency crea una dependencia del argumento, pero una UpwardDependency puede crear una dependencia del argumento, campo, o secuencia). Como tal, en su caso para la comprensión, un espacio entre
5 un calificador (por ejemplo, argumento, campo, o secuencia) y la palabra "dependencia" se usa para referirse a la dependencia creada por el entomo de ejecución, mientras que la falta de un espacio se utiliza para referirse a la sintaxis.
La figura 7A ilustra el pseudo código de una declaración de dependencia del productor para un método que utiliza dependencias declaradas de acceso directo de acuerdo con una realización de la invención, mientras que la figura 7B es un diagrama de bloques de productores ejemplares de acuerdo con una realización de la invención. La Figura 7A muestra: 1) una declaración de dependencia del productor 705 que incluye ArgumentDependencies 1-N, FieldDependencies 1-H, SequencingDependencies 1-L, UpwardDependencies 1-P, y WeaklyeonstrainedDependencies 1-Q, y 2) un método alfa 710 que tiene argumentos 1-N de la declaración de
15 dependencia del productor 705. En una realización de la invención, los argumentos de una declaración de dependencia del productor están contados para proporcionar un ID de argumento para cada uno con propósitos de seguimiento la figura 7B muestra un productor 720 que tiene las siguientes dependencias de los descendientes: 1) productor 725 para ID argumento 1, 2) productor 730 para ID del argumento N, 3) productores 740-745 para FieldDependencies 1-M, 4) productores 746-747 para SequencingDependencies 1-L, y 5) productor 748-749 para UpwardOependencies 1-P (nota, WeaklyConstrainedOependencies La no se muestran, pero se describirá en mayor detalle con referencia a la figu ra 7G). Por lo tanto, los argumentos de la declaración de dependencia del productor 705 corresponden a los argumentos del método alfa 710, y a las IDs de los argumentos en la declaración de dependencia del productor 705 se les realiza un seguimiento con respecto a los descendientes de los productores que identifican.
25 La Figura 7e ilustra el pseudo código de una declaración de dependencia del productor de un método que utiliza una declaración de dependencia sin acceso directo, e ilustra un diagrama de bloques de los productores ejemplares de acuerdo con una realización de la invención. La figura 7e muestra la deClaraCión de dependenCia del productor 705 y el método alfa 710 de la figura 7A, asi como los productores 720 y 725 de la figura 7B. Además, la figura 7e incluye código de declaración de dependencia del productor 715 asociado con ArgumentDependency 1. Durante el entorno de ejecución, el entomo de ejecución tiene acceso y ejecuta el código de declaración de dependencia del productor 715 que responde a ArgumentDependency 1 de la declaración de dependencia del productor 705. La ejecución del código declaración de dependencia del productor 715 devuelve el productor 725 como la dependencia del productor de ArgumentOependency 1. Asi, la figura 7e ilustra realizaciones de la invención en las que el código
35 de ded aración de dependencia del productor 715 puede ser parte de un método (distinto del método alfa 710), pero no es parte de un productor.
La figura 70 ilustra pseudo código de una declaración de dependencia del productor de un método que utiliza un no acceso directo de dependencia declarada de acuerdo con una realización de la invención, mientras que 7E figura es un diagrama de bloques de productores ejemplares de acuerdo con una realización de la invención. La figura 70 muestra la declaración de dependencia del productor 705 y el método alfa 710 de la figura 7A, mientras que la figura 7E muestra los productores 720 y 725 de la figura 7B. Además, la figura 70 incluye: 1) una declaración de dependencia del productor 750, y 2) un método beta 755 incluyendo el código de declaración de dependencia del productor 760. La Figura 7D también muestra que la dependencia del argumento 1 de la declaración de 45 dependencia del productor 705 identifica un productor (mostrado en la figura 7E como productor 765) basado en el método beta 755 que devolverá la dependencia para el argumento de dependencia 1. Durante el entomo de ejecución, el entorno de ejecución, que responde a la dependencia del argumento 1 de una declaración de dependencia del productor 705, ejecuta el productor 765 para regresar de identificación que la dependencia del productor del argumento de dependencia 1 es el productor 725. Como tal, el productor 765 es referido como un productor de determinación de dependencia (su salida es una dependencia del productor -y por lo tanto, se devuelve utilizando una clase/ejemplo que es controlado para un tratamiento especial (manipulación de la gráfica(s) del productor) por el entomo de ejecución con el grafo del productor orientado al soporte de programación), mientras que el productor 725 es referido como un productor estándar (su salida, en su caso, no está directamente procesada por el entomo de ejecución para manipular un grafo del productor, pero su salida, en su caso, puede ser consumido
55 por un productor ascendente (ya sea un productor de la determinación de dependencia o de otro productor estándar) y/o según lo disponga la salida de la gráfica del productor (Si el productor estándar es un productor de interés, y por lo tanto un nodo raíz).
Así, las figuras 7D-E ilustran realizaciones de la invención en la que las que código de declaración de dependencia del productor 715 es parte de otro productor, referido como un prOductor de determinaCión de dependencia. Mientras que en las figuras 70-E el código fuente orientado a objetos incluye el código de declaración de dependencia del productor explícito en los métodos a partir de los cuales la determinación de los productores de dependencia se crean en el entorno de ejecución mediante el entorno de ejecución de las dependencias declaradas de no acceso directo, realizaciones alternativas de la invención, adicionalmente o en lugar de aplicar el entorno de ejecución para 65 incluir el código de declaración productor de dependencia genérico que invoca cuando uno o más productores de determinación de dependencia genéricos sobre la marcha para dependencias declaradas de acceso directo.
También, mientras que las figuras 7C-E ilustran con referencia a ArgumentOependencies, las técnicas ilustradas son aplicables a los otros tipos de dependencias declaradas de manera descendente. Además, las figuras 7F-G ilustran el uso de un productor de determinación de dependencia para una UpwardDependency y una WeaklyConstrainedOependency.
La figura 7F es un diagrama de bloques de una dependencia de ejemplo mediante el uso de una UpwardOependency con un productor de determinación de dependencia de acuerdo con una realización de la invención. La Figura 7F muestra el productor 720 que tiene dependencia de productor de secuenciación a un productor de determinación de la dependencia 772. El productor de la determinación de la dependencia puede devolver un argumento, campo, o dependencia de la secuenciación declarado de manera ascendente de nosuscripción, del productor ascendiente 748 en el productor 720. Además, dicho productor de determinación de la dependencia puede aplicar una dependencia dinámico (por ejemplo, una dependencia contingente que selecciona entre las anteriores dependiendo de los valores de datos, incluyendo entre diferentes lOs de argumento, como se describe aquí más adelante). Si bien algunas realizaciones de la invención soportan todas estas posibilidades,
15 realizaciones alternativas de la invención soportan sólo un subconjunto (por ejemplo, sólo dependencias de secuenciación declaradas de manera ascendente de no suscripción).
La figura 7G es un diagrama de bloques de posibles dependencias de ejemplo mediante el uso de un WeaklyConstrainedDependency con un productor de determinación de dependencia de acuerdo con una realización de la invención. La figura 7G muestra el productor 720 que tiene un productor de dependencia secuenciador a un productor de determinación de dependencia 775. En algunas realizaciones de la invención, el productor de determinación de dependencia puede devolver cualquiera de los siguientes: 1) una dependencia de secuenciación declarada de manera descendente de no suscripción en un productor descendiente 780, 2) una dependencia de secuenciado, campo o argumento declarado en sentido ascendente de no suscripción un productor padre 785 en el
25 productor 720, y 3) una suscripción adherente (descrita más adelante en este documento). Además, dicho productor de determinación de dependencia puede aplicar una dependencia dinámica (por ejemplo, una dependencia contingente que selecciona entre los anteriores dependiendo de los valores de datos, incluyendo entre lOs de argumento diferente, como se describe aqui más adelante). Si bien algunas realizaciones de la invención soportan todas estas posibilidades, realizaciones altemativas de la invención soportan sólo un subconjunto (por ejemplo, sólo dependencias de secuenciación declarada en sentido ascendente de no suscripción).
Como se indicó anteriormente, las dependencias de secuenciación pueden ser usadas para una variedad de propósitos , incluyendo asegurar el orden de ejecución entre los productores que modifican los datos de una manera en que el entorno de ejecuciÓn no es consciente y los productores que consumen esos datos (un productor
35 descendiente puede escribir sus salidas de una manera que requiere el método del productor padre para incluir código para acceder a esa salida (por ejemplo, un método que impacta el medio ambiente al afectar a una salida que no es la salida del productor regular y, como tal, que no es detectada por el entomo de ejecuciÓn -dicho método que establece una variable global, que define un campo en una instancia que no es la salida del productor, que afecta a un origen de datos externo, etc.)), etc.
Diferentes formas de realización pueden soportar una o más formas para la declaración de las dependencias del productor con respecto a los productores de bienes. En concreto, en algunas realizaciones de la invención, los productores que leen un campo deben ser dependientes del productor de propiedad obtener, mientras que el productor de propiedad obtener debería depender de cualquiera de los productores que establecen el campo en el 45 que es responsable el método de propiedad obtener. Se proporciona una técnica de manipulación de esta situación que puede ser utilizada en las realizaciones de la invención que soportan dependencias de productores de secuenciación, para un método de propiedad obtener, una declaración de dependencia del productor que crea dependencias de productores de secuencia en cada método que establece el campo del cual el método de propiedad obtener es responsable (por ejemplo, con respecto a la figura 7G, donde el productor 780 es un productor que establece un campo y el productor 720 es el productor de propiedad obtener responsable de ese campo, el productor de determinación de dependencia 775 se escribiría para devolver una dependencia de secuenciación declarada de manera descendente del productor 720 en el productor 780). Una segunda técnica para manejar esta situación que puede ser utilizada en las realizaciones de la invención que soportan tanto las dependencias de productor de secuenciado y las dependencias de productor declaradas de manera ascendente es incluir en la
55 declaración/CÓdigo de la dependencia del productor para cualquier método que establece un campo, una la dependencia del productor de secuenciado declarada de manera ascendente (por ejemplo, usando un UpwardOependency o WeaklyConstrainedOependency) en el método obtener responsable de ese campo (por ejemplo, con respecto a la figura 7G, donde el productor 720 es un productor que establece un campo y el productor 785 es el productor de propiedad get responsable para ese campo, el productor de determinación de la dependencia 775 se escribiria para devolver una dependencia de secuenciación deClarada de manera ascendente del productor padre 785 en el productor 720). Esta segunda técnica permite que el programador del método que establece el campo para ser responsable de proporcionar una dependencia del productor al método get apropiado, en lugar de requerir que el programador vaya al método get y modifica su declaración/código de declaración de dependencia del productor.
Cuando se utiliza dependencias de secuenciación, cuando un productor dado se basa en una variable dada, esa variable no debe ser modificada por más de uno de los productores descendientes de productor en una ejecución dada de la gráfica(s) productor (Hay que señalar que a través de las dependencias contingentes (descritas más adelante en este documento), los diferentes productores descendientes pueden modificar esa variable durante diferentes ejecuciones de la gráfica(s) del productor actual). Por ejemplo, un productor de propiedad get debería
5 depender sólo de un productor de otro tipo que establece el presentado para el cual el productor de propiedad get es responsable en una ejecución dada de la gráfica(s) del productor actual.
Se debe entender que diferentes realizaciones de la invención pueden aplicar una o más de las realizaciones de la invención mostrada en las figuras 7A-F. Por ejemplo, una forma de realización de la invención soporta dependencias declaradas de acceso directo y sin acceso directo, tanto utilizando los productores de determinación de dependencia, en concreto, en esta realización de la invención: 1) el código fuente orientado a objetos incluye código de declaración de dependencia de productor explicito en los métodos a partir de los que los cuales productores de determinación de dependencia son de una instancia en el entorno de ejecución por el entomo de ejecución por dependencias declaradas de no acceso directo, 2) el entomo de ejecución incluye el código de
15 declaración de dependencia de productor genérico que lo invoca como uno o más productores de determinación de dependencia genéricos sobre la marcha para el acceso directo declarado, dependencias contingentes (descritas más adelante en este documento), y 3) el entomo de ejecución incluye el soporte para enlazar directamente acceso directo declarado, dependencias de productores no contingentes (descritas más adelante en este documento).
Como otro ejemplo, una forma de realización de la invend ón soporta dependencias de productores declaradas de no acceso directo y de acceso directo que utilizan productores de determinación de dependencia; específicamente, en esta realización de la invención: 1) el código fuente orientado a objetos incluye código de declaración de dependencia de productor explicito en los métodos a partir de los que el productor de determinación de la dependencia se instancia en el entorno de ejecución por el entorno de ejecución para las dependencias declaradas
25 de no acceso directo, y 2) el entorno de ejecución incluye el código de determinación de dependencia genérico que lo invoca como uno o más productores de determinación de dependencia genéricos sobre la marcha para dependencias de declaración de acceso directo (independientemente del tipo). Esta ultima realización permite el tratamiento coherente de las dependenCias de productores, y por lo tanto, simplifica el entomo de ejeCUCión.
Además, mientras que en una realización de la invención, la declaración de dependencia del productor de un método está situada justo por encima de dicho método en el código fuente orientado a objetos, en realizaciones alternativas de la invención se encuentra en otro lugar (por ejemplo, las declaraciones de dependencia de productores para todos los métodos para una clase se agrupan juntos dentro de la clase, las declaraciones de dependencia de productores de todos los métodos en todas las clases se agrupan en una tabla de datos separada,
35 etc.) Además, mientras que en una realización de la invención del código de declaración de dependencia del productor está separada de las declaraciones de dependencia de productores, en realizaciones altemativas de la invención se combinan (por ejemplo, el código de declaración de dependencia del productor se encuentra dentro de los paréntesis de la declaración de dependencia del productor, el código de declaración de dependencia del productor se coloca directamente por debajo de la declaración de dependencia de productor y es tratado por el entorno de ejecución como una sola unidad, etc.)
Las Figuras 7H-1 ilustran la distinción entre subgrafos diferentes que pueden existir en un grafo de productores debido a los productores de determinación de dependencia. La Figura 7H ilustra gráficas de productores de ejemplo de los productores estándar de acuerdo con una realización de la invención. Específicamente, la figura 7H muestra 45 un grafo productor con nodo raíz S 1, un grafo productor con nodo raíz SS, y un grafo productor con nodo raíz S 11. El productor estándar S 1 tiene como productores estándar descendientes S2, S3 y S4; productores estándar S2 y S3 tienen como productores estándar descendientes S7 y S8; el productor estándar SS tiene como productores estándar descendientes S4 y S6; y el productor estándar S11 tiene como productores estándar descendientes S6 y S10. Los grafos de productores de ejemplo de la figu ra 7H se pueden descubrir, construir, y girar con cualquier número de dependencias de productores y los productores de determinación de dependencia. La Figura 71 ilustra un ejemplo de dependencias de productores y los productores de determinación de dependencia para descubrir, resolver, y constru ir el grafo del productor de la figura 7H. En concreto, la figura 71 muestra los grafos de la figura 7H como subgrafos de un conjunto más amplio de grafos de los productores. En otras palabras, los grafos de productores de la figura 71 incluyen los grafos de la figura 7H (en adelante, los "subgrafos objetivo" y se ilustra con 55 lineas de flecha sólidas y óvalos sólidos) y grafos que ayudan en el descubrimiento, resolución, y creación de los subgrafos objetivo (referidos como "subgrafos de decisión e ilustrados utilizando lineas de flecha de trazos y óvalos de trazos). Los subgrafos de decisiones en la figura 7H incluyen los productores de determinación de dependencia (OOPs) 1-11 y los productores estándar S9-10. En la figura 7H, S1 se presenta como dependiente de DOPs 1-3, que, respectivamente, devuelven dependencias de productores declaradas de manera descendente de S1 S2, S3 y S4, S4 se muestra como dependiente de OOP4, que devuelve una dependencia del productor deClarada de manera ascendente SS en S4; SS se muestra como dependiente de ODP5, que devuelve una dependencia de productor declarada de manera descendente SS en S6; S3 se muestra como dependiente de OOP6, que a su vez depende de DOP8, que devuelve una dependencia del productor declarada de manera descendente de DOP6 en S9 y S10, lo que hace que ODP6 devuelva una dependencia declarada de manera descendente S3 en S7; S3 se muestra como 65 dependiente de DDP7, que devuelve una dependencía de productor declarada de manera descendente S3 en S8, S8 se muestra como dependiente de DOP9, que devuelve una suscripción adherente para la que S6 es un productor
de activación y S11 es el padre creado (por lo tanto, la dependencia de productor de S11 en S6); S2 se muestra como dependiente de DDP10, que devuelve una colección de dependencia de productor declarado de manera descendente S2 en S7 y S8, y S11 se muestra como dependiente de DOP 11 , que devuelve una dependencia del productor declarada de manera descendente S11 en S10. Se debe entender que un productor estándar puede ser
5 tanto parte de un subgrafo objetivo y un sUbgrafo de decisión (por ejemplo, véase S10). Vale la pena señalar que los subgrafos objetivos son los datos que circulan en el sentido de que los datos fluyen de un productor a otro productor estándar de la gráfica .
Programación y marco de ejecución de ejemplo
La figura 8A es un diagrama de bloques que ilustra un primer marco de ejemplo en el que las aplicaciones se proporcionan a los usuarios finales de acuerdo con una realización de la invención. El marco que se muestra en la figura 8A incluye tres divisiones básicas. La primera división incluye la creación del entorno de ejecución con el soporte de la programación orientada a grafo del productor 810. Esta primera división es llevada a cabo por los
15 programadores con conocimientos de programación muy avanzados. Cuando se trabaja en esta división, a los programadores se les conoce como los programadores de entomo de ejecución. Cuando se crea un entorno de ejecución con soporte de programación orientado a grafo del productor, los programadores de entorno de ejecución incluyen soporte para grafos de producto, asi como el soporte para la ejecución de los distintos tipos de comandos que se utilizan en el código de la transfonnación, el código de instancias, y el código de preparación de datos.
La segunda división incluye la creación de código fuente de aplicaciones orientado a objetos 820 para ser ejecutado por el entorno de ejecución. El código fuente de aplicación orientado a objetos 820 incluye dos divisiones básicas: 1) las definiciones de clase que incluyen la lógica de negocio expresada en métodos con declaraciones de dependencia de productores 822 (este puede incluir opcionalmente otras funcionalidades, tales como una interfaz
25 gráfica de usuario -en cuyo caso, la interfaz gráfica de usuario se escribe utilizando productores y declaraciones de dependencia de productores), y 2) definiciones de clase que incluyen el código de cliente expresado en los métodos 824, incluyendo el código de instancias (clase, instancias, y productor(es) de interés, para provocar la generación de la gráfica(S) de productores) 824A, código de preparación de datos 8248 (por ejemplO, los comandos del sistema, tales como comandos de ajuste que desencadenan la principal de las salidas de producción), comandos de ejecución global 824C para provocar la ejecución de la gráfica(s) de productor (por ejemplo, comandos ejecutar y obtener), y cualquier interfaz gráfica de usuario necesaria 824d (no incluidas en 822). Las declaraciones de dependencia de productores se utilizan para definir los lazos entre los productores durante la definición de las clases que incluyen la lógica de negocio, antes que las instancias posteriores de esas clases se crean. El código fuente orientado a objetos 820 es de clase hard codificado, instancia y los métodos que se compilan y ejecutan.
35 Mientras que en una realización de la invención se aplica un comando de ejecución global, la ejecución del cual hace que el intento de ejecución de todos los grafo(s) de productor actualmente en la estructura del grafo(s) del productor 380, realizaciones alternativas de la invención o, altemativamente, también aplican un comandos de ejecución específico de grafo que requiere la identificación de un grafo dado de la gráfica(s) de productor actual que se va a ejecutar. Además, el comando de ejecución global puede ser explícito (por ejemplo, ajuste, ajuste, ajuste, ejecutar, obtener, obtener) o implícito en función de la implementación del entorno de ejecución. Por ejemplo, un comando de ejecución global implicito podria ser: 1) provocado por el primer comando obtener en un productor de interés (por ejemplo, ajuste, ajuste, ajuste, obtener (ejecución implicita), obtener), 2) provocado por cada manipulación de datos (ajuste (ejecución implícita), ajuste (ejecución implícita), ajuste (ejecución implicita), obtener,
45 obtener), etc.
La segunda división se realiza de nuevo por los programadores con conocimientos de programación avanzados, así como la comprensión de los objetivos de negocio de la aplicación. Cuando se trabaja en esta división, los programadores son conocidos como programadores de aplicaciones. Como parte de esto, si la aplicación requiere una interfaz gráfica de usuario, los programadores de aplicaciones también diseñan y codifican la interfaz gráfica de usuario para la aplicación específica, y por lo tanto, también se les conoce como diseñadores de aplicaciones.
La tercera división incluye el uso de programas de aplicación que se ejecutan durante el entomo de ejecución. La tercera división es llevada a cabo por los usuarios finales que no necesitan tener conocimientos de programación. El
55 programa de aplicación puede ser distribuido en una variedad de formas (por ejemplo, como el código fuente; una transformación de código fuente, tales como código de bytes; como binario, etc.) Además, el programa de aplicación puede ser distribuido para su utilización independiente 830 (en cuyo caso, el programa de aplicación completo (y el entorno de ejecución si no está ya presente) se proporciona a un sistema informático) y/o uso del cliente/servidor. En una realización de la invención, una distribución de cliente/servidor incluye la difusión de las definiciones de clase que incluyen la lógica de negocio expresada en métodos con declaraciones de dependenCia de productores 822 (y el entorno de ejecución si no está ya presente) para el uso del servidor 832 y las definiciones de clase que incluyen el código de cliente expresado en los métodos 824 (y el entomo de ejecución si no está ya presente) para uso del cliente 834, donde el uso del cliente 834 en un sistema informático hace que la comunicación con el uso del servidor 832 en un sistema servidor.
La figura 8A muestra también un módulo de interfaz de usuario gráfica de diseño de salida de productor interactivo configurable opcional B40 que se proporciona para el uso independiente 830 y el uso del cliente 834. El código fuente orientado a objetos 820 seria dirigido por el entorno de ejecución para generar el grafo(s) de productor, y módulo de interfaz de usuario gráfica de diseño de salida de productor interactivo configurable 840 permite mostrar gráficamente las salidas de e interactuar con los grafos del productor. En concreto, el módulo de interfaz de usuario
5 gráfica de diseño de salida de productor interactivo configurable 840 incluye: 1) una configuración y el módulo de interfaz de usuario grafo de asignado 844 para permitir la configuración de la diseño y asignado de las salidas de productor seleccionadas (por ejemplo, las áreas de la pantalla a ser utilizadas, cómo se van a mostrar los datos, etc.), y 2) una representación y módulo de intenaz de usuario gráfica de la interacción 846 para hacer la disposición configurada y para permitir la predominancia de salidas de productores (que resulta en la actualización de los grafos de productores a través un comando de ejecución global). Se debe entender que el módulo de interfaz de usuario gráfica de diseño de salida de productor interactivo configurable 840 puede o no puede ser creado por la misma entidad que escribe el entomo de ejecución 810.
La figura 88 es un diagrama de bloques que ilustra un segundo ejemplo de marco en el que las aplicaciones se
15 proporcionan a los usuarios finales de acuerdo con una realización de la invención. La Figura 88 es idéntica a la figura BA, con las siguientes excepciones: 1) el uso independiente 830 no está presente, 2) el código fuente orientado al objeto 820 se proporciona para el uso del servidor 832, mientras que el código de cliente 824 no está previsto para uso del cliente 834, 3) el módulo de interfaz de usuario gráfica de diseño de salida de productor interactivo configurable 840 se proporciona para el uso del servidor B32 y no el uso del cliente 834, y 4) se proporciona una interfaz de cliente de diseño de salida de productor de interactivo configurable 885 para el uso del cliente 834. La interfaz de cliente de diseño de salida de productor de interactivo configurable 885 se utiliza para conectar con el módulo de interfaz de usuario gráfica de diseño de salida de productor interactivo configurable B40.
Independientemente del marco utilizado, en una realización de la invención, el marco de programación orientado al
25 grafo del productor ofrece la posibilidad de interfaz con los programas no escritos con declaraciones de dependencia de productores. Esta capacidad para interactuar con los programas que no estén escritos con las declaraciones de la dependencia de productores incluye: 1) una parte que llama (por ejemplo, una interfaz gráfica de usuario no escrita de acuerdo a la programación orientada a grafo de productor), y 2) una parte llamada (tal como una fuente de datos externa no escrita de acuerdo a la programación orientada a grafo de productor). La parte que llama puede, a través de código de cliente, emitir comandos de programación orientados a productores de grafos. La parte llamada se implementa como parte de los productores que envuelven la parte llamada (referidOS como "productores envueltos"). Ejecutar la parte llamada (tal como la lectura de los datos desde una fuente de datos o suscribirse a los cambios de datos en una fuente de datos externa) puede a su vez disparar modificaciones de instancia. Estos cambios pueden ocurrir llamando a los métodos establecidos de propiedad en el código de los productores
35 envueltos. Los productores de propiedad obtener (captadores) son obligados a tener dependencias en estos productores envueltos, con el fin de asegurarse de que las modificaciones de instancia provocadas por los cambios que ocurren en una fuente de datos externa son debidamente propagadas a través de la gráfica de productor. Como se describió anteriormente, las diferentes realizaciones pueden soportar una o más formas para la declaración de las dependencias de productores con respecto a los productores de propiedad. Por ejemplo, en algunas realizaciones de la invención que soportan dependencias de productores de secuenciación, puede ser utilizadas SequencingDependencies para declarar dependencias de productores de secuenciación declaradas de manera descendente de no suscripción en los productores envueltos. Como otro ejemplo, en algunas realizaciones de la invención que soportan dependencias de productores de secuenciación y dependencias de productores declaradas de manera ascendente de no suscripción, UpwardDependencies y/o WeaklyConstrainedDependencies pueden ser
45 colocadas en la declaración de dependencia del productor de los productores envueltos para crear dependencias de productores de secuenciación declaradas de manera ascendente de no suscripción para los productores de propiedad.
Las Figuras 8C-F ilustran imágenes de ejemplo y el uso del módulo de interfaz de usuario grafo de diseño de salida del productor interactivo configurable 840 de acuerdo con una realización de la invención. Si bien las realizaciones de la invención se describirán con referencia al módulo de interfaz de usuario grafo de diseño de la salida del productor interactivo configurable 840 proporcionado para la configuración, la asignación, y la interacción con las salidas seleccionadas de la gráfica(s) de productores actual en la forma de una hoja de cálculo, realizaciones altemativas de la invención pueden ser implementadas para proporcionar soporte adicional o alternativamente para
55 otra forma. Además, aunque formas de ejemplo de realización de la configuración, la asignación, y la interacción en la forma de una hoja de cálculo se describe de acuerdo con algunas realizaciones, otras realizaciones de la invención pueden realizar estas operaciones de otra manera, con interfaz diferente, yfo con una distribución de pantalla diferente. Además, la hoja de cálculo puede soportar cualquiera de las funcionalidades conocidas asociadas con las hojas de cálculo (por ejemplo, selección de color, selección de fuentes, grafos de barrafpieflínea, tablas dinámicas, guardar los disenos, cargar disenos, etc.)
Las Figuras 8C-D ilustran imágenes y el uso ejemplares de la selección de celdas libres de acuerdo con una realización de la invención, mientras que las figuras 8E-F ilustran imágenes y el uso ejemplares de creación de la tabla de acuerdo con una realización de la invención. Cada una de las figuras 8C-F incluyen una barra de menú 850 65 a lo largo de la parte superior de la pantalla, una lista de las clases (con sus métodos de propiedad obtener) 852 de los productores en el grafo del productor actual y sus salidas sobre el lado izquierdo de la pantalla, y un visor de
configuración y la asignación 854 llenando el resto de la pantalla con un diseño a modo de hoja de cálculo. Además, las figuras 8C-F también muestran la lista siguiente de ejemplos de dases con sus métodos de propiedad obtener en la lista 852: 1) la clase PERSONA, 2) los métodos de propiedad obtener de la persona de la clase, incluyendo NOMBRE (por ejemplo, cadena) y APELLIDO (por ejemplo, cadena), G¡;:NERO (por ejemplo, cadena), DIRECCiÓN
5 PERSONAL (instancia de la clase DIRECCiÓN), DIRECCiÓN PROFESIONAL (instancia de la clase DIRECCiÓN), FECHA DE NACIMIENTO (por ejemplo, fecha) y EDAD (por ejemplo, entero), 3) la clase DIRECCiÓN, y 4) los métodos de propiedad obtener de la clase DIRECCiÓN incluyendo CIUDAD (por ejemplo, cadena), ESTADO (por ejemplo, cadena), CÓDIGO POSTAL (por ejemplo, cadena). Por lo tanto, la gráfica de productor actual incluye a los productores de las clases PERSONA y DIRECCiÓN, así como los productores cuyas salidas son de las clases PERSONA Y DIRECCiÓN. También es destacable que el método de propiedad obtener EDAD calcula una edad basada en la salida del método de propiedad obtener FECHA DE NACIMIENTO, como tal, un productor de una instancia del método de la propiedad obtener EDAD dependerá de un productor de una instancia del método de la propiedad obtener FECHA DE NACIMIENTO.
15 Las Figuras 8C-D muestran el siguiente texto libre introducido en las celdas consecutivas de la primera columna del espectador: CLIENTE, NOMBRE, APELLIDO, FECHA DE NACIMIENTO, Y EDAD, mientras que las figuras 8E-F muestran lo siguiente: 1) texto libre introducido en la primera fila del visor -LISTA DE CLIENTES, Y 2) texto libre introducido en las celdas consecutivas de la segunda fila del visor NOMBRE, APELLIDO, FECHA DE NACIMIENTO Y EDAD.
La Figura 8C ilustra una pantalla y el uso de ejemplo de selección libre de celdas con el módulo de interfaz de usuario grafo de diseño de la salida del productor interactivo configurable 840 de acuerdo con una realización de la invención. la Figura 8C muestra un conjunto de mapeos 856 de la dase PERSONA y una selección de los métodos de la propiedad obtener de la clase PERSONA a las distintas celdas del visor. En concreto, la clase PERSONA se 25 asigna a la celda a la derecha del texto libre CLIENTE. Como parte de esta acción, algunas realizaciones de la invención indicará al usuario que seleccione uno de una serie de filtros soportados (mostrar como la selección de filtro 858) (por ejemplo, abrir lista desplegable, flechas de desplazamiento del formulario, etc.) Estos filtros permiten la selección de una o más claves de instancia de los productores de la clase seleccionada, o una o más claves de instancia de los productores cuya clase de salida es la clase seleccionada. Si bien algunas realizaciones de la invención soportan una serie de filtros, otras realizaciones de la invención predeterminan a uno (y permite al usuario elegir si selecciona uno diferente) o soportar sólo uno y no necesita realizar la selección del filtro 858. las asignaciones 856 también muestran que los métodos de la propiedad obtener NOMBRE, APELLIDO, FECHA DE NACIMIENTO, Y EDAD de la clase PERSONA son, respectivamente, asignadas a las celdas adyacentes a las celdas con texto libre correspondiente. Tal asignación se puede realizar con cualquier número de técnicas bien
35 conocidas, incluyendo arrastrar y soltar, al escribir en un campo GUI, etc.
La Figura 80 ilustra otra pantalla y el uso de ejemplo de selección libre de celdas con el módulo de interfaz de usuario grafo de diseño de la salida del productor interactivo configurable 840 de acuerdo con una realización de la invención. La Figura 8D muestra que la celda a la que se ha asignado la clase PERSONA para permitir por ejemplo la selección 854. En concreto, basado en el filtro que se utiliza para esta celda, el usuario tiene la oportunidad de seleccionar una instancia de la clase PERSONA a partir de una lista que induye la clave(s) de instancia de los productores de la dase PERSONA, y las daves de instancia de los productores que producen la clase PERSONA. La selección de una instancia de la clase PERSONA (o la existencia de una sola instancia) da como resultado de la población automática de las celdas, a las que los métodos de propiedad obtener de la clase PERSONA fueron
45 asignados, con las salidas de los métodos de propiedad obtener correspondientes de esa instancia. Este poblamiento de la tabla sobre la base de las instancias de la clase PERSONA es etiquetada 858. En el ejemplo de la figura 80, las celdas en las que los métodos de propiedad obtener NOMBRE, APELLIDO, FECHA DE NACIMIENTO, Y EDAD de la clase PERSONA fueron asignados, respectivamente, que se puebla con JOHN, SMITH, 7/20/1990, Y 16.
La Figura 80 también muestra que las celdas del visor a las que los métodos de propiedad obtener se han asignado pueden ser anuladas. A modo de ejemplo, la figura 80 muestra que si la celda a la que se asigna EL método de propiedad obtener FECHA DE NACIMIENTO se reemplaza, a continuación, causará que el predominio de la salida del productor, cuya salida está actualmente poblando dicha celda, la invocación de un comando de ejecución global
55 (que se traducida en una reejecuciÓn del productor, cuya salida está actualmente poblando la celda a la que se asigna el método de la propiedad obtener EDAD), y cualquier actualización necesaria de la pantalla.
La Figura 8E muestra un de ejemplo de pantalla y el uso de creación de la tabla con el módulo de interfaz de usuario gráfica de disposición de salida del productor interactivo configurable 840 de acuerdo con una realización de la invención. La Figura 8E muestra una zona y la operación orientación de la selección 864 se realiza para identificar una tabla de tres filas verticales directamente en las celdas con el texto libre NOMBRE, APELLIDO, FECHA DE NACIMIENTO Y EDAD (ilustradas con una linea gruesa discontinua en torno a estas celdas). Diferentes formas de realización de la invención pueden soportar que el usuario realice esta operación de muchas maneras, entre ellas: 1) selección de una zona con un dispositivo de entrada como un ratón, y 2) selección entre una tabla vertical, horizontal 65 o dinámica con una interiaz como un menú emergente -asumiendo que múltiples orientaciones son soportadas). La Figura 8E también muestra un conjunto de asignaciones 866 de métodos de propiedad obtener seleccionados de la
clase PERSONA a celdas diferentes del visor. En concreto, las asignaciones de 866 muestran que los métodos de propiedad obtener NOMBRE, APELLIDO, FECHA DE NACIMIENTO, Y EDAD de la clase PERSONA son, respectivamente, asignados a las celdas directamente debajo de las celdas con texto libre correspondiente.
5 La figu ra 8F ilustra otra pantalla y uso de ejemplo de creación de la tabla con el módulo de interfaz de usuario grafo de diseño de la salida del productor interactivo configurable 840 de acuerdo con una realización de la invención. Las asignaciones 866 resulta en la población automática de las columnas de la tabla, a las que los métodos de propiedad obtener de la clase PERSONA fueron asignados, con las salidas de los métodos de propiedad obtener correspondientes de las instancias de esa clase Este poblamiento de la tabla sobre la base de las instancias de la
10 clase PERSONA es etiquetada 868. En el ejemplo de la figura 8D, las columnas a las que los métodos de propiedad obtener NOMBRE, APELLIDO, FECHA DE NACIMIENTO, Y EDAD de la clase PERSONA fueron asignados se rellenan con las siguientes filas de datos: 1) STEVE, COLLlNS, 7f20f1990, y 16, 2) JENNIFER, ADAMS, 7f20f1990 , y 16, Y 3) JOHN, SMITH, 7f20/1985, y 21.
15 Como en la figura 80, la figura 8F muestra que las celdas del visor a las que los métodos de propiedad obtener han sido asignados pueden ser anulados. A modo de ejemplo, la figura 8F muestra que si la celda de la segunda fila de la columna a la que se asigna el método de propiedad obtener FECHA DE NACIMIENTO se reemplaza, a continuación, hará que el predominio de la salida del productor, cuya salida está actualmente rellenando dicha celda, invoque un comando de ejecución global (que daria lugar a una ejecución adicional del productor, cuya salida está
20 actualmente poblando la celda a la que el método de propiedad obtener EDAD se asigna), y cualquier actualización necesaria de la pantalla.
Las Figuras 8C-F ilustran pantallas de ejemplo generadas por la configuración y la asignación del módulo de interfaz de usuario gráfica 842. Las pantallas generadas por la prestación y el módulo de interfaz de usuario gráfica
25 interactivo 846 son los mismos, con la excepción de que la lista de las dases (con sus métodos de propiedad get) 852 la configuración y el visor asignado 854 se sustituyen por un visor de representación e interactivo (que no se muestra) que contiene la misma imagen que el visor de configuración y de asignación 854 mostrado (siendo la diferencia que la función de asignación ya no está disponible).
30 Ejemplos de esquemas de distribución de entamo de ejecución
Las figuras 9A-C ilustran varios esquemas para la distribución de un entamo de ejecución con el soporte del de programación orientado a grafo del productor. Se debe entender que estos esquemas de distribución son ejemplares, y por lo tanto, otros esquemas están dentro del alcance de la invención.
35 La Figura 9A es un diagrama de bloques que ilustra un primer esquema para la distribución de un entamo de ejecución con el soporte de programación orientada al grafo del productor de acuerdo con una realización de la invención. En la figura 9A, el código fuente orientado a objeto 905 (que incluiria las declaraciones de dependencia de los productores) se muestra en la parte superior de un entorno de ejecución con el soporte de programación
40 orientado a grafo del productor 910, que es en la parte superior de un entorno de ejecución con la carga de clases, creación de instancias de clases dinámicas, invocación del método de única dinámica, y la introspección de la clase/método 915, que es en la parte superior de un sistema operativo 920. En la figura 9A. el entamo de ejecución 910 trabaja con el entorno de ejecución 915. Aunque cualquier número de mecanismos pueden ser utilizados para permitir al entorno de ejecución 910 trabajar con el entorno de ejecución 915, se describe a modo de ejemplo una
45 instalación de metadatos. Una instalación de metadatos permite que la información adicional se añada al código fuente, cuya información es utilizada por las herramientas de desarrollo. Por ejemplo, la instalación de metadatos para especificación Java define una API para los campos de anotación, los métodos y clases de que tienen atributos particulares que indican que deben ser tratados de manera especial por las herramientas de desarrollo. herramientas de implementación, o en las librerias en entorno de ejecución (Java Specification Request 175). En
50 este ejemplo, un programador que programa el código fuente orientado a objetos 905 añad iria anotaciones a los métodos en forma de las declaraciones de dependencia de los productores. Dado que estas anotaciones se entregan por el entamo de ejecución 915 al entamo de ejecución 910, el entorno de ejecución 910 dicta la sintaxis de las declaraciones de dependencia de los productores. En la figura 9A, los tiempos de ejecución de 910 y 915 pueden ser desarrollados y/o distribuidos por diferentes organizaciones.
La figu ra 9B es un diagrama de bloques que ilustra un segundo esquema para la distribución de un entorno de ejecución con el soporte de programación orientado al grafo del productor de acuerdo con una realización de la invención. En la figura 9B, el código fuente orientado a objetos 925 (que incluiria las dedaraciones de dependencia de los productores) se muestra en la parte superior de un entorno de ejecución (con la carga de d ases, creación de 60 instancias de clases dinámicas, invocación de método ünico dinámico, y la introspección clase/método, asl como el soporte de programación orientado a grafo del productor 930, que está en la parte superior de un sistema operativo
935. En comparación con la figura 9A, el entorno de ejecución 910 y el 915 se han combinado en un solo entamo de ejecución 930. Como resultado de esta combinación, el entorno de ejecución 930 dicta la sintaxis de las declaraciones de dependencia de los productores. Por lo tanto, un programador de la programación del código
65 fuente orientado a objetos 925 añadirla las declaraciones de dependencia de productores en la sintaxis necesaria.
La figura 9C es un diagrama de bloques que ilustra un tercer esquema de la distribución de un entorno de ejecución con el soporte de programación orientado al grafo del productor de acuerdo con una realización de la invención. En la figura 9C, el código fuente orientado a objetos 940 (que incluiría las declaraciones de dependencia de los productores) se muestra en la parte superior de un entorno de ejecución del sistema operativo (con la carga de
5 clases, creación de instancias de clases dinámicas, la invocación de método único dinámico, y la introspección clase/método, asi como el soporte de programación orientado a grafo del productor) 945. En comparación con la figura 98, el entorno de ejecución 920 y el sistema operativo 935 se han combinado en una sola entidad. Como resultado de esta combinación, el sistema operativo en el entorno de ejecución 945 dicta la sintaxis de las declaraciones de dependencia de los productores. Por lo tanto, un programador de la programación de código fuente orientado a objetos 940 añadida las declaraciones de dependencia de productores en la sintaxis necesaria.
Aunque se describen las realizaciones en el que el entorno de ejecución tiene la carga de clases, creación de instancias de clases dinámicas, la invocación de método único dinámico, y la introspección, la clase/método, realizaciones alternativas pueden incluir más o menos caracteristicas (por ejemplo, la clonación de instancias,
15 proxies dinámicos, conversiones de tipos primitivos, etc.)
Ventajas de ejemplo
En una realización de la invención, las dependencias de los productores se declaran para los métodos como una manera de especificar la secuencia de invocación de método con las instancias correspondientes (en los casos apropiados incluyen los casos para utilizar como argumentos, las instancias para ser utilizadas por los métodos de instancia, y la meta instancias de la clase utilizadas por los métodos de d ase) sin necesidad de utilizar el código de la secuencia de invocación manual. En efecto, el trabajo de generar parte o la totalidad de la invocación manual del código de secuencia se sustituye por: 1) el trabajo realizado por el programador de la aplicación para escribir las
25 declaraciones de dependencia de productores, y 2) el trabajo realizado por el entorno de ejecución para descubrir y construir el grafo(s) de productor y ejecutar los productores de los grafo(s) de productor. En otras palabras, la lógica que figuraba anteriormente en el código de la secuencia de invocación manual es detectable por el entomo de ejeCuCión durante el entorno de ejeCuCión sobre la base de las declaraciones de dependencia de los productores. Por lo tanto, las declaraciones de dependencia de productor informan al entorno de ejecución qué los métodos de qué instancias con qué los argumentos ejecutar, y cuándo para fines de sincronización. Aunque el esfuerzo de escribir el entorno de ejecución es relativamente grande, Sólo necesita ser escrito una vez en que puede utilizarse para ejecutar cualquiera de las aplicaciones orientadas a objetos escritas para el entorno de ejecución, en cambio, para una aplicación típica, el esfuerzo de escribir las declaraciones de dependencia del productor es relativamente bajo en comparación con la escritura manual del código de secuenciación de invocación.
Reducción de errores de programación
La programación orientada a grafos del productor generalmente reduce los costos asociados con la depuración y/o la optimización del rendimiento del código de secuenciación de invocaci6n manual. Esto es cierto para al menos la razón de que la infraestructura de un programa de aplicación es conceptualmente un conjunto de grafos no formalizados de métodos de transformación de objetos (la salida de un método asociado con un objeto es la entrada a otro. y asi sucesivamente) que opera sobre entradas especificas. Las declaraciones de dependencia de productores y el entorno de ejecución con el soporte de programación orientado a grafos del productor formalizan estos grafos en forma de grafos de productores. Por lo tanto, para cada oportunidad para que los datos cambien, el 45 programador de la aplicación no tiene por qué considerar su efecto y escribir la invocación manual de código de la secuencia para provocar los métodos de transformación adecuados de las instancias apropiadas para ser invocadas en el orden apropiado, con las entradas correspondientes. En otras palabras. para cada oportunidad en que cambien los datos, no es necesario que un programador de la aplicación considere que los grafos se ven afectados, así como qué métodos de transformación de instancias dentro de los grafos se ven afectados. Por el contrario, el módulo de generación de grafo de productor automatizado descubre y construye los grafos de productores y el módulo de ejecución del grafo de productor vuelve a ejecutar las gráficas del productor, según sea necesario para reflejar los cambios en los datos. Esta automatización ayuda a los programadores de aplicaciones a evitar errores tales como: 1) invocar los métodos de transformación adecuados de las instancias apropiadas en el orden incorrecto, 2) olvidarse de incluir comandos para hacer que uno o más métodos necesarios de transformación de las instancias de
55 un grafo sean invocados en respuesta a algunos datos que se cambian, y 3) incluir comandos para realicen que los métodos de transformación innecesarios de instancias que deben invocarse que respondan a algunos datos que se cambian (por ejemplo, incluyendo comandos para invocar métodos de transformación de las instancias que no forman parte de un grafo afectado por el cambio en los datos; incluyendo comandos para invocar métodos de transformación de instancias que forman parte de un grafo afectado por el cambio en los datos, pero no se ven afectados en si mismos, etc.).
Sincronización
Tal como se describió previamente, el cambio de las salidas de productores durante la ejecución permite la 65 sincronización. Así, en términos de comparación con el patrón de observador, las declaraciones de dependencia de productores notifican un entomo de ejecución con el soporte de programación orientado a grafo del productor a las
dependencias, y el entorno de ejecución determina qué productores y cuándo volver a llamar.
Capacidad para explicar totalmente cualquier resultado
5 En una realización de la invención, un módulo de perioración/visualización (no mostrado) está incluido como parte del entorno de ejecución. El módulo de perioración/visualización proporciona una interiaz gráfica de usuario que, a través de la interacción de un usuario final, permite periorar en el grafo de productor (caminando por una gráfica del productor desde el nodo raiz) para ver las salidas de los diferentes productores de la gráfica de productores. Esto permite que un usuario final vea los distintos resultados que contribuyeron a la salida del productor de interés,
10 incluyendo los valores de los datos y las dependencias (devueltos por los productores de la determinación de dependencia). Además, en una realización de la invención, este módulo de perioración/visualización proporciona la habilidad para el usuario final para ver el código dentro de los métodos de los productores, los valores de los casos de los productores, y!o el contenido de las clases de los productores.
15 ASi, el módulo de perforación/visualización ofrece una variedad de actividades de transformación posteriores, incluida la depuración, la explicación de las salidas, etc.
Aplicación práctica / Efecto técnico !Aplicabilidad industrial ejemplares
20 Hay una variedad de aplicaciones prácticas de ejemplo de los diferentes aspectos y realizaciones de la invención. Por ejemplo, el entorno de ejecución, como parte de los programas de aplicación que se ejecuta, hace que la recuperación de la información de un medio de almacenamiento de la máquina (por ejemplo, el acceso al código fuente orientado a objetos, incluidas las declaraciones de dependencia de los productores), el almacenamiento de la información a un medio de almacenamiento de la máqUina (por ejemplo, el almacenamiento de las estructuras de
25 datos como la estructura de grafo(s) de productor, etc.), la operación de recursos de procesamiento del hardware, el suministro de salidas de productor(es) de interés (por ejemplo, a través de una interiaz gráfica de usuario, almacenamiento en medios de almacenamiento de la máquina, transmisión, etc.), etc. En cierto sentido, la actividad de pre-procesamiento incluye la escritura de este tipo de programa de aplicación y!o el suministro de datos (diChOS datos pueden representar cualquier numero de elementos fisicos y!o prácticos, como valores financieros, valores
30 goografos, valores meteorológicos, valores actuariales, valores estadísticos, medidas físicas, valores de estado de la máquina, etc.), mientras que la actividad post-procesamiento incluye la provisión de los resultados (dichos resultados pueden representar cualquier numero de elementos fisicos y/o prácticos, tales como análisis financiero, análisis geografo, análisis meteorológico, análisis actuarial, análisis estadistico, medidas industriales, información de control de la máqUina, etc. A modo de ejemplo especifico, la actividad de procesamiento posterior puede ser
35 proporcionada por: 1) el módulo visor de grafo de productor 1062 de la figura 10 para mostrar gráficamente una representación del grafo(s) de productor actual generado por el entorno de ejecución, ylo 2) el módulo de interfaz de usuario grafo de diseño de salida de productor interactivo configurable 840 (véase también, módulo de interfaz de usuario grafo de diseño de salida de productor interactivo configurable 1085 de la figura 10) para mostrar gráficamente las salidas de e interactuar con los grafos de los productores.
40 Como otro ejemplo, el programa de aplicación con las declaraciones de dependencia de productores en sí, cuando se ejecuta mediante el entorno de ejecución, representa los elementos físicos/prácticos y provoca las operaciones descritas anteriormente. A modo de ejemplo especifico, estas declaraciones de dependencia de productores hacen que se formen estructuras de datos en los medios de almacenamiento de la máquina que responden a su ejecución
45 por el entomo de ejecución. Además, las declaraciones de dependencia de productores se almacenan y se recuperan a partir de los medios de almacenamiento de la máquina junto con el programa de aplicación. Además, estas declaraciones de dependencia de productores representan las relaciones entre los productores, mientras que los productores representan las operaciones a realízar (métodos) e ínstancias. Las instancias en programación orientada a objetos se pueden utilizar para representar los elementos físicos ylo prácticos, mientras que los
50 productores representan las operaciones que se realizan en estas representaciones.
A modo de otro ejemplo, un conjunto de uno o más programas de aplicación y entomo de ejecución de la aplicación transversal de activos de software de gestión de riesgos que incluye cambio de divisas, equidad, tasa de interés, el crédito, inflación, materias primas y productos compuestos de activos cruzados. Estos productos van desde dinero
55 en efectivo y productos fisicos vainilla planos a los productos derivados exóticos y complejos. También se incluye un conjunto de modelos matemáticos para estos productos, y sus datos de mercado correspondientes, pago y rutinas de generación de asientos contables y sus observables asociados, modelos de calibración y sus entradas en crudo asociadas.
60 A modo de otro ejemplO, un conjunto de uno o más programas de aplicación y entorno de ejeCuCión puede implementar un procesador de textos, una hoja de cálculo, un software de comunicación! correo electrónico, un software de visualización de fotos, un software de detección de virus, un reproductor multimedia, un servidor de base de datos, un juego, una aplicación industrial, una aplicación de herramientas de diseño asistida por ordenador y/o un sistema operativo. Por supuesto, los programas de aplicación se pueden implementar para realizar una variedad de
65 otras tareas.
Implementaciones de ejemplo
A modo de ilustración, se describirán las realizaciones de ejemplo de la invención que soportan las dependencias, dependencias dinámicas (incluyendo dependencias contingentes y dependencias de suscripción), productores
5 determinación de dependencia explicitos para dependencias declaradas de acceso directo y para dependencias declaradas de no acceso directo, productores de detenninación de dependencia sobre la marcha para dependencias declaradas de acceso directo, las claves de clase , claves de instancia, claves de método, comandos de anulación/anulación inversa productores (que son los tipos de comandos set), y comandos de ejecución globales. Además, las realizaciones de ejemplo opcionalmente soportan un módulo grafo visualizador interactivo del productor y ejecución incremental. Por supuesto, las realizaciones alternativas de la invención pueden aplicar más, menos, y/o diferentes caracteristicas.
La figura 10 es un diagrama de bloques de una ejecución de ejemplo de acuerdo ron una realización de la invención. En la figura 10, la linea divisoria de trazos 1000 separa de un cliente de entorno de ejecución 1002 de un 15 entorno de ejecución con el soporte de programación orientado a grafo de productor 1004.
El flujo de ejecución lógico del cliente en entamo de ejecución 1002 incluye bloques 1010, 1020, 1025, 1030 Y 1035, Y el entorno de ejecución con el soporte de programación orientado a grafo de productor 1004 incluye, respectivamente, bloques correspondientes, 1095, 1098, 1040, 1045 Y 1070, mientras que una línea de flecha sólida representa una relación causal directa desde el bloque 1035 del flujo de ejecución lógica del cliente de entorno de ejecución 1002 con el bloque 1070 del entamo de ejecución con el soporte orientado a grafo del productor 1004, líneas de flecha de puntos muestran una relación causal a partir de los bloques 1010, 1020, 1025 Y 1030 del cliente en entorno de ejecución 1002 de los bloques 1095, 1098, 1040 Y 1045 del entorno de ejecución con el soporte orientado a grafo del productor 1004. Dependiendo de la realización de la invención, estas relaciones últimas
25 causales pueden ser directas o indirectas. Por ejemplo, similar a la figura 6, una relación causal opcional indirecta a través del uso de un registro de comandos (no mostrado) y/o registro de anulación 1047 puede ser utilizada. Otros bloques 1095 y 1098 son discontinuos porque opcionalmente pueden ser parte de un bloque diferente dependiendo de la realizaCión de la invención (por ejemplO, el bloque 1095 puede ser parte del bloque 1098; el bloque 1098 puede ser parte del bloque 1040; los bloques 1095 y 1098 pueden formar parte del bloque 1040). De manera similar, el bloque 1045 es discontinuo, ya que puede ser opcionalmente parte de un bloque diferente dependiendo de la realización de la invención (por ejemplo, el bloque 1045 puede ser parte del bloque 1070).
En la figura 10, el entorno de ejecución 1002 incluye las definiciones de clase que incluyen la lógica de negocio 1010 con datos 1012, los métodos 1014, las declaraciones de los productores de dependencia 1016, y opcionalmente las
35 claves de la clase 1090. Las definiciones de la clase 1010 son las clases en un lenguaje de programación orientado a objetos, y por lo tanto se incluyen definiciones de los datos 1012 y los métodos 1014. Además, estas definiciones de clase 1010 incluyen declaraciones de dependencia de los productores 1016 para el método 1014 como se describió previamente. Además, en una realización de la invención, cada clase tiene una clave de clase 1090 para fines de rastreo.
El módulo de clase nueva 1095 del entorno de ejecución de 1004 carga y hace la introspección sobre las definiciones de clase 1010 (por ejemplo, que responda a los comandos de la nueva ciase). Esta carga y la introspeCción se pueden hacer utilizando cualquier número de técnicas desarrolladas conocidas o por conocer, incluidas las de cargar las clases de forma selectiva con fines de optimización. La carga de las clases por el módulo
45 de clase nueva 1095 se ilustra en las clases 1054 del entorno de ejecución 1004. Como parte de la carga y la introspección de las clases 1054, el módulo de clase nueva 1095 también carga e inspecciona las declaraciones de dependencia de productores 1016, como se ilustra por los métodos y las declaraciones de dependencia de los productores 1056 en las clases 1054 . El módulo de clase nueva 1095 también mantiene una estructu ra de seguimiento de la clase 1092 que se utiliza para el seguimiento de las clases con las claves de clase. Asi, la estructura de seguimiento de clase 1092 mantiene una correspondencia entre las claves de clase y referencias en las clases 1054. Además, el módulo de clase nueva 1095 también mantiene una estructura de seguimiento de método 1058 que se utiliza para los métodos de rastreo utilizando las claves de método. Por lo tanto, la estructura de sistema de seguimiento 1058 mantiene una correspondencia entre las claves de método y las referencias a los métodos, asi como información sobre las declaraciones de dependencia de los productores.
El cliente de entorno de ejecución 1002 también incluye los comandos de instancias con las claves de instancia 1020. El módulo de instancia nueva 1098 del entorno de ejecución 1004 crea una instancia de las instancias designadas por los comandos de instancias con las claves de ejemplo 1020 (por ejemplo, que responda a los nuevos comandos de instancia). Este instanciado se puede hacer utilizando cualquier número de técnicas desarrolladas también conocida o por conocer, incluidas aquellas instancias instanciadas de fonna selectiva con fines de optimización. Como parte de este instanciado, el módulo de instancia nueva 1098 accede a la estructura de seguimiento de la clase 1092 mediante una clave de clase para acceder a la clase apropiada de las clases 1054. La instancia de instancias por parte del módulo de instancia nueva 1098 se ilustra con las instancias 1052 del entorno de ejecución 1004. El módulo de instancia nueva 1095 también mantiene una estructura de seguimiento de instancia 65 1065 que se utiliza para el seguimiento de las instancias con las claves de instancia. Así, la estructura de seguimiento de instancia 1065 mantiene una correspondencia entre las claves de instancia y referencias en las
instancias 1052. Como se indicó anteriormente, el módulo de clase nueva 1095 puede ser parte del módulo de instancia nueva 1098 en que las clases 1054 puede ser instanciada en respuesta a los comandos de instanciación de instancia 1020, en contraposición a separar nuevos comandos de clase.
5 El cliente de entorno de ejecución 1002 también incluye comandos de productores de instancias con las claves de producción 1025. El módulo de generación de grafo de productor automatizado 1040 del entorno de ejecución 1004 crea una instancia de productores designada por los comandos de instancias de productores con claves de productores 1025 (por ejemplo, que responda a los nuevos comandos de productores que designan el conjunto actual de los productores de interés). Además, módulo de generación de grafo de productores automatizado 1040 también descubre, construye, y, opcionalmente, resuelve el grafo(s) de productor en respuesta a la serie actual de los productores de interés, como se ha descrito anteriormente. En una realización de la invención, una clave productor se compone de una clave de clase, clave de instancia, y clave de método. Como parte de esta instancia de los productores, el módulo de generación de grafo de productor automatizado 1040: 1) accede a la estructura de seguimiento de la clase 1092 con la clave de clase para acceder a la clase apropiada de las clases 1054, 2) accede
15 a la estructura de seguimiento de instancia 1065 con la clave de instancia para acceder a la instancia adecuada de las instancias 1052, y 3) accede a la estructura de seguimiento de método que utiliza la clave de método para acceder a la declaración de dependencia de productor apropiada. La instancia de los productores designados por los comandos de productores de instancias con las claves de producción 1025 y la instancia de cualquiera los productores descubiertos y la construcción de la gráfica de productor están ilustradas por la estructura del grafo(s) del productor 1060 del entorno de ejecución 1004. Asi, en una realización de la invención, las claves de productores identificadas por los comandos de productores de instancias con claves de productores 1025 Y las descubiertas a través de la generación de grafo de productor se almacenan en la estructura de grafo(s) del productor 10BO, junto con información adicional para representar el grafo(s) de productor actual.
25 Tal como se describió anteriormente, el bloque 1095 y 1098 pueden ser parte del bloque 1040, y por lo tanto, la decisión sobre qué clases, instancias, y productores para cargar/crear una instancia es impulsada por qué productores están en la gráfica(s) de productor actual. En tal realización de la invención, la carga/instancia de clase, de instancias, y productores está optimizada y es centrada en el productor.
El cliente de entorno de ejecución 1002 también incluye comandos de preparación de datos, incluyendo comandos anulación/anulación inversa de salida del productor 1030. Los comandos de anulación/anulación inversa incluyen la clave del productor del productor al ser anulado/inversamente anulados, asi como los valores de anulación cuando se anulan. El módulo de salida del productor anulado 1045 del entorno de ejecución 1004 hace que los productores designados por los comandos de anulación/anulación inversa de los productores sean anulados/inversamente
35 anulados. Esta relación de causalidad puede ser indirecta o directa.
En el caso de la relación de causalidad indirecta, el módulo de salida del productor de anulación 1045 rellena el registro de anulación 1047 para el consumo por el módulo de ejecución gráfica del productor 1070. En el caso de relación causal directa, el módulo de salida del productor de anulación 1045 accede al caché de salida del productor 1097 de la estructura de grafo(s) del productor 1060 y las instancias 1052. Especificamente, como se ha descrito con referencia al módulo de salida del productor de anulación 390, en una realización, los productores pueden ser clasificados como productores de propiedad o productores de método, por lo que el módulo de salida del productor de anulación 1045 puede incluir una caracteristica del módulo de salida del productor de propiedad de anulación (no mostrado) para productores de propiedad anulados y un módulo de salida del productor de método de anulación (no
45 mostrado) para los productores de método anulados; la anulación de un método de propiedad hace que el valor anulado sea almacenado en la memoria caché de salida del productor 1097 de la estructura de grafo(s) del productor 1060 y ser almacenada en los datos de la instancia adecuada de las instancias 1052, mientras que la anulación de un método del productor hace que el valor anulado sea almacenado en la memoria caché de salida del productor 1097.
En una forma de realización de la invención los productores no pueden ser anulados antes de que un grafo del productor del que serán parte haya sido ejecutado inicialmente (por lo tanto, el productor ya se habrá instanciado como resu ltado de haber sido designado como un productor de interés o como resultado de ser descubierto por el módulo de generación de grafo de productor automático 1040). Sin embargo, en la realización mostrada en la figura
55 10, los productores pueden ser anulados antes de la ejecución inicial al ser instanciado y anulados con un comando de anulación del productor. Este productor anulado normalmente con el tiempo formará parte de un grafo de productor a través del proceso de descubrimiento (por ejemplo, cuando se resuelve una dependencia dinámica). En algunas realizaciones de la invención, esta preparación de datos también puede inclu ir otros tipos de comandos se!. El módulo de salida de productor de anulación 1045 se muestra como un cuadro de líneas de trazos, ya que puede no estar presente en realizaciones alternativas de la invención.
La estructura del grafo(s) del productor 1060 también incluye opcionalmente marcado de ejecución incremental 1080 para algunas realizaciones de la invención que soportan la ejecución incremental. Como se ha descrito anteriormente con referencia al marcado de ejecución incremental 382 de la figura 38, el marcado de ejecución 65 incremental 1080 se utiliza para ayudar con la ejecución incremental de la gráfica(s) de productor en la ejecución más allá de la ejecución inicial. Diferentes realizaciones de la invención que utilizan marcado de ejecución incremental 382, lo utilizan de diferentes maneras. Por ejemplo, en una de tales realizaciones de la invención que tiene un registro de comandos, el registro se utiliza para realizar un seguimiento de que productores se han añadido y/o modificado, y el marcado de ejecución incremental 382 se utiliza para marcar los productores que se ven afectados (antepasados de los productores modificados o añadidos, y por lo tanto dependientes de ellos). Como otro 5 ejemplo, en una realización de la invención tal que no tiene un registro de comandos, el marcado de ejecución incremental 382 se utiliza para marcar los productores que se añaden o modifican, asi como aquellos que son antepasados de los productores modificados o añadidos (y por lo tanto dependen de ellos). Como otro ejemplo, en una realización de la invención tal que no tiene un registro de comandos, las modificaciones y adiciones de los productores se hace inmediatamente y el marcado de ejecución incremental 382 se utiliza para marcar los 10 productores que son antepasados de los productores modificados o añadidos (y por lo tanto dependen de ellos). Si bien se han descrito realizaciones de la invención que soportan la ejecución incremental y utilizan el marcado de ejecución incremental, otras realizaciones de la invención soportan la ejecución incremental que no utilizan marcado de ejecución incremental (por ejemplo, se utiliza un registro de comandos para rastrear los productores que se han añadido o modificado, y una lista de productores de inicio de ejecución se mantiene en un registro de inicio de
15 ejecución, donde el módulo de ejecución de grafo del productor 1070 comienza desde los productores de inicio de ejecución y se abre camino hasta los antepasados de la gráfica(s) de productor en la parte superior, a modo de ejemplo y no de limitación, esta realización de la invención se describe más adelante en este documento con respecto a las figuras 15-25.
20 El cliente de entorno de ejecución 1002 también incluye comandos globales de ejecución 1035. El módulo de ejecución grafo del productor 1070 del entorno de ejecución 1004 ejecuta el grafo(s) de productor. Como tal, el módulo de ejecución de grafo del productor 1070 modifica el caché de salida del productor 1097 (en el caso de los productores de propiedad y productores de método), utiliza el marcado de ejecución incremental 1080 (si está presente), y modifica los datos de las instancias 1052 (en el caso de los métodos de propiedad). Diversas técnicas
25 se han discutido previamente para la ejecución de los productores de la gráfica de productor y son aplicables aquí. Por ejemplo, en las realizaciones en las que se implementa un registro de comandos, el registro de comandos se consume y, a continuación se ejecuta el grafo(s) de productor. Además, en realizaciones de la invención que soportan la posibilidad de dependencias sin resolver, el módulo de ejeCUCiÓn de grafo del productor 1070 inCluye el módulo de dependencia dinámica 1075, que puede invocar el módulo de generación de grafo del productor
30 automatizado 1040.
La Figura 10 también muestra un módulo de visor grafo del productor opcional 1062 que proporciona un mecanismo (por ejemplo, una interiaz gráfica de usuario) mediante el cual un programador/usuario puede ver el grafo(s) de productor y salidas de los productores de la estructura de grafo(s) de productor. Además, la figura 10 muestra un
35 módulo de interface de usuario grafo de diseño de salida de productor interactivo configurable opcional 1085 para proporcionar una interfaz gráfica de usuario (incluyendo la invocación dinámica de los bloques 1030 y 1035) que representa el módulo de interfaz de usuario grafo de diseño de salida de productor configurable interactiva 840.
En las realizaciones de la invención que utilizan un registro de comandos, activadores diferentes pueden utilizarse
40 para activar acciones diferentes. Por ejemplo, los comandos de creación de instancias de productores pueden ser registrados y procesados por lotes en respuesta a un comando explicito (iniciar el registro y terminar registro), un comando ejecutar explicito global (el registro se inicia automáticamente en el arranque y después de cada comando ejecutar explicito global, y cada registro se procesa en respuesta al siguiente comando ejecutar explicito global ejecución), un comando de preparación de datos explicito, etc. Del mismo modo, los comandos de preparación de
45 datos pueden ser registrados y procesados por lotes en respuesta a un comando ejecutar explicito global, un primer comando obtener, cada comando obtener, etc.
Estructuras de seguimiento de ejemplo
50 Las figuras 11A-D son diagramas de bloques que ilustran el contenido de ejemplo de las estructuras de datos de la figura 10 de acuerdo con una realización de la invención. Mientras que las figuras 11A-D ilustran estas estructuras de datos como tablas, se debe entender que cualquier estructura de datos adecuada puede ser utilizada (por ejemplo, un mapa hash, un conjunto, una lista).
55 La figura 11A es un diagrama de bloques de un ejemplo de la estructura de seguimiento de clase 1092 de la figura 10 de acuerdo con una realización de la invención. En la figura 11A, una columna de clave de clase 1110 y una columna de referencia de clase 1115 se muestran para almacenar, respectivamente, las claves de clase y las referencias correspondientes a las clases cargadas .
60 La figura 118 es un diagrama de bloques de un ejemplO de la estructura de seguimiento de instancia 1065 de la figura 10 de acuerdo con una realización de la invención. En la figura 118, una columna clave de instancia 1120 y una columna de referencia de instancia 1125 se muestran para almacenar, respectivamente, las claves de instancia y las referencias correspondientes a los casos. En las realizaciones de la invención en la que las claves de instancia no tienen que ser únicas en todas las dases, la estructura de ejemplo de seguimiento también incluye la clave de
65 clase o de referencia para la clase de la instancia.
La figura 11C es un diagrama de bloques de un ejemplo de la estructura de grafo(s) de productor 1060 de la figura 10 de acuerdo con una realización de la invención. En la figura 11C, una columna de referencia de la clase 1135, una columna de referencia de instancia 1140, y una columna de referencia de método 1145 se muestran para almacenar respectivamente referencias que componen los productores actuales de los grafo(s) de productor
5 actuales. Estas referencias pueden tomar una variedad de formas. Por ejemplo, estas columnas, respectivamente, pueden almacenar referencias en las clases 1054 (o, altemativamente, 1092), instancias 1052 (o, alternativamente, 1065), y métodos 1056 (o, altemativamente, 1058). Mientras que en una realización de la invención estas columnas almacenan referencias, en una forma de realización alternativa de la invención una o más de estas columnas almacena claves.
Además, la figura 11C incluye una columna de enlace(s) de productor(es) padre 1150 (incluyendo para cada enlace una referencia de productor de padre, y una referencia del productor de determinación de la dependencia) y una columna de enlace(s) de productor(es) de descendiente 1160 (incluyendo para cada enlace, la referencia(s) de productor de descendiente, una referencia del productor de detenninación de la dependencia, un modo de enlace, y 15 un ind icador de enlace adherente). Cada productor puede tener cero o más enlaces de productores del descendiente en la columna 1160. Cada enlace de productor de descendiente en la columna 1160 incluye: 1) de referencia(s) del productor de descendiente que se son referencias a otras lineas de la estructura de grafo(s) de productor para representar de una dependencia del productor de acuerdo con la declaración de la dependencia del productor, 2) una referencia del productor de determinación de la dependencia que es una referencia a otra fila de la estructura de grafo(s) del productor y representa el productor de determinación de dependencia que ha creado el enlace descendiente, y 3) un modo de enlace con un tipo de dependencia de productor que identifica si la dependencia del productor es un resultado de un argumento, un campo, o una dependencia de secuenciación (véase la discusión respecto a las figuras 7A-F), y si un argumento, la ID de argumento de la dependencia del productor, y 4) un indicador adherente para indicar que el modo de enlace es el resultado de una dependencia 25 declarada de manera ascendente (en las realizaciones de la invención que soporten, dependencias declaradas de manera ascendente) o el resultado de una suscripción adherente (en las realizaciones de la invención que soportan suscripciones adherentes) y no debe ser modificado a través de la declaración de dependencia de argumento del productor de este productor (es decir, el productor almacenado en la fila de la columna que contiene el indicador adherente). Cada productor puede tener cero o más enlaces de productores padres en la columna 1150. Cada enlace productor padre en la columna 1150 incluye: 1) una referencia productor padre que almacena de nuevo una referencia de acuerdo con un productor de referencia descendiente de otro productor (es decir, una referencia a otra fila de la estructura de grafo(s) de productor para representar un padre productor dependiente del productor), y 2) una referencia de productor de determinación de la dependencia que es una referencia a otra fila de la estructura de grafo(s) del productor y representa el productor de detenninación de dependencia que ha creado el enlace padre.
35 Por lo tanto, cuando se crea un vinculo, la columna de enlace de productor padre de la fila del productor del descendiente y la columna de enlace del productor descendiente de la fila del productor padre se han modificado para representar el enlace (y la detenninación de la dependencia de referencia del productor es la misma en ambos). En una realización de la invención, ya que rutas múltiples en un grafo del productor o grafos productores diferentes pueden incluir un productor determinado, puede haber múltiples enlaces de productor padre para un productor determinado.
Además, la figura 11C incluye una memoria caché de salida y columna de modificación de la salida del productor de anulación 1170 para almacenar las salidas del productor actuales, asi como una indicación de si el productor se anula y el valor de salida anulado. Además, la figura 11 C incluye una columna de marca de ejecución incremental
45 1180 para almacenar las marcas incrementales de ejecución tal como se ha descrito anterionnente.
La figura 110 es un diagrama de bloques de un ejemplo de la estructura de seguimiento del método 1058 de la figura 10 de acuerdo con una realización de la invención. En la figura 11 D, una columna de claves del método 1190 y una columna de referencia del método 1192 que se muestran para almacenar, respectivamente, las claves de método y las referencias correspondientes a los métodos de las clases cargadas. Además, la figura 11 D también incluye una columna ArgumentDependencies 1194, una columna FieldDependencies 1196, una columna SequencingDependencies 1195, una columna UpwardDependencies 1193, una columna WeaklyConstrainedDependencies 1199, una columna de la clase de salida 1197, y una columna de anotaciones opcionales adicional 1198. La columna ArgumentDependencies 1194, la columna SequencingDependencies 1195, la
55 columna UpwardDependencies 1193, la columna WeaklyConstrainedDependencies 1199, y la columna FieldDependencies 1196 almacenan información de la dependencia del productor analizada a partir de la declaración de dependencia del productor del método (por ejemplo, ver 705 de la figura 7A), mientras que la columna de la clase de salida 1197 almacena información relativa a la clase de salida de la salida del método (determinable por la firma del método -por ejemplo, véase 710 de la figura 7A). Ejemplos de contenido de la columna ArgumentDependenCies 1194, la columna FieldDependenCies 1196, la columna SequencingDependencies 1195, la columna UpwardDependency 1193, y la columna WeaklyConstrainedDependencies 1199, que se utilizan en algunas realizaciones de la invención se proporcionan más adelante en este documento.
Dependencias del productor dinámico
Tal como se ha descrito anteriormente, una realización de la invención soporta dependencias de productores no dinámicos y dinámicos. Aunque diferentes realizaciones pueden soportar diferentes tipos de dependencias de productores dinámicos, una realización de la invención soporta contingentes y tipos de suscripción de las dependencias de los productores dinámicos. Por lo tanto, una dependencia no contingente, sin suscripción, es una dependencia no dinámica (estática).
La figura 12 es un diagrama de bloques que ilustra detalles adicionales de la figura 10 para soportar las dependencias de tipo contingente y de suscripción de productores dinámicos de acuerdo con una realización de la invención. La figura 12 incluye en la figura 10 la linea divisoria discontinua 1000, las definiciones de clase que incluyen la lógica de negocio 1010 (que incluyen los datos 1012, los métodos 1014, y las declaraciones de dependencia de los productores 1016), el módulo de clase nueva 1095, las clases 1054 (incluyendo los métodos y declaraciones de dependencia de los productores 1056), el módulo de instancia nueva 1098, las instancias 1052, la estructura de ejemplo de seguimiento 1065, el módulo de generación automatizada del grafo del productor 1040, la estructura del grafo(s) del productor 1060, y el módulo de ejecución del grafo del productor 1070 (incluida el módulo de dependencia dinámica 1075).
La figura 12 muestra que las declaraciones de dependencia de los productores 1016 incluyen opcionalmente dependencias contingentes 1210, dependencias de suscripción 1220, y productores múltiples 1215. Aquí, productores múltiples 1215 se refiere a la capacidad de una dependencia del productor para devolver una colección de productores. Además, la figura 12 incluye un módulo de suscripción 1240 y un módulo de contingencia 1230 en el módulo de generación automatizada del grafo del productor 1040 para procesar las dependencias contingentes 1210 y las dependencias de suscripción 1220. La figura 12 muestra también que el módulo de suscripción 1240 accede a un registro de suscripción 1250. Además, el módulo de dependencia dinámica 1075 incluye un módulo de contingencia 1260 y un módulo de suscripción 1265 para procesar las dependencias contingentes 1210 y las dependencias de suscripción 1220. El módulo de suscripción 1265 accede al registro de suscripción 1250.
La siguiente descripción de las dependencias contingentes y de suscripción se realiza en el contexto de una realización de la invención que utiliza una DEP de clase (una abreviatura para la dependencia), del que una instancia es devuelta por los productores de determinaCión de la dependencia y es analizada por el entomo de ejecución con el soporte de la programación orientada al grafo del productor. La DEP de clase incluye los siguientes campos: 1) TIPO que se puede ajustar a la suscripción, sin suscripción descendente declarada (productores descendientes que nO SOn suscripciones), O sin suscripción ascendente declarada (los productores padre que nO SOn suscripciones), 2) PROD que se utiliza para dependencias sin suscripción descendentes dedaradas y una colección de los productores descendientes (como tal, puede almacenar cero o más productores), 3) TIPO SUB que se utiliza para las dependencias de suscripción y se establece para indicar el tipo de dependencia de suscripción (utilizada en 35 las realizaciones de la invención que soportan múltiples tipos de suscripción, mientras que la realización de la invenCión que se describe aquí es compatible con dos tipos: adherente y absorbente, realizaCiones altemativas pueden soportar más, menos, y/o diferentes tipos de suscripción, 4) CRIT SUB, que se utiliza para las dependenCias de suscripción y se establece para indicar los criterios de suscripción, 5) MODO DE ENLACE PAR que se utiliza para las dependencias de suscripción y dependencias sin suscripción adherentes dedaradas y se establece para indicar cuál es el modo de enlace que debe ser el productor padre: 6) CLASE PAR que se utiliza para las dependencias de suscripción y las dependencias sin suscripCión adherentes ascendentes declaradas y se establece para indicar cual debe ser la clase del productor padre (por ejemplo, la clave de clase); 7) MÉTODO PAR que se utiliza para las dependencias de suscripción adherentes y las dependencias sin suscripción ascendentes declaradas y se establece para indicar cuál debe ser el método del productor padre (por ejemplo, la clave de método), y 8)
45 INSTANCIA PAR que se utiliza para las dependenCias adherentes de suscripción y las dependencias sin suscripción ascendentes declaradas establecidas para indicar cuál debe ser la instancia del productor padre (por ejemplo, la clave de instancia) (Si la instancia PAR se deja en blanco, la clave de instancia del productor descendiente se utiliza para el productor padre). Una realización alternativa podría utilizar una colección de productores padre (cada elemento de la colección soporta un PAR_CLASS, PAR_INSTANCE, PAR_METHOD, PAR_LINK MODE) en el caso de las dependencias de suscripción adherente y/o dependencias sin suscripción ascendentes declaradas. Por supuesto, otras realizaciones altemativas de la invención podrían utilizar una estructura diferente para devolver dependencias.
Dependencias contingentes
55 En una realización de la invención, ambas dependencias de productores no contingentes y contingentes son compatibles. Un productor de dependencia no contingente es uno que es independiente de la salida de los otros productores, mientras que una dependencia del productor contingente es una que es dependiente de la salida de otros productores. Si bien una realización de la invención soporta dependencias de productores no contingentes y contingentes, realizaciones altemativas sólo admiten no contingente o contingente (cuyas dependencias contingentes de los productores pueden ser inicialmente impulsadas por los valores por defecto).
Tal como se discutió previamente, un productor puede ser visto como un conjunto de identificadores múltiples, un identificador para cada nivel adicional de granularidad especificada. En una realización de la invención, una 65 dependencia del productor contingente puede ser contingente en el sentido de que cualquiera o la totalidad del conjunto de identificadores puede ser condiCionalmente determinado en base a los valores de los datos actuales.
Por ejemplo, una primera dependencia del productor contingente puede tener sólo el identificador de la instancia que se determinó de fonna condicional (los identificadores de clase y el método son fijos), mientras que una segunda dependencia del productor contingente pueden tener la clase, la instancia y el método de identificación que se determinó de forma condicional. Aunque en una realización de la invención toda la pluralidad de los identificadores
5 de una dependencia del productor contingente pueden ser condicionales, realizaciones altemativas de la invención pueden implementarse de fonna diferente (por ejemplo, sólo permiten un subconjunto de la pluralidad de identificadores para ser condicional).
Las figuras 13A-J son diagramas de bloques que ilustran el pseudo código y los productores de ejemplo de acuerdo
10 con una realización de la invención. Además, las realizaciones mostradas en las figuras 13A-J utilizan el mismo mecanismo de determinación de la dependencia para dependencias tanto contingentes como no contingentes. Como tal, con fines explicativos, algunos de los ejemplos de las figuras 13A-J son ejemplos de las dependencias de los productores no contingentes, mientras que los otros son ejemplos de las dependencias de productores contingentes. Además, una dependencia del productor no contingente es una en la que la dependencia es un
15 productor de determinación de la dependencia que es un productor independiente (por ejemplo, en una realización de la invención, el tipo de dependencia es identificable porque su declaración de dependencia del productor está vacia), mientras que una dependencia del productor contingente es una en la que la dependencia es un productor de determinación de la dependencia que es un productor dependiente (por ejemplo, en una realización de la invención, el tipo de dependencia es identificable porque su declaración de dependencia del productor no está vacio).
20 Además, en números y las letras en círculos se utilizan en las figuras 13A-J para ilustrar el orden en el que las operaciones se realizan de acuerdo con una realización de la invención. Además, una notación X::Y::Z se utiliza en las figuras 13A-J para representar una clave del productor que se compone de una clave de clase (X), una clave de instancia (Y), y una clave de método (Z). Además circulos de trazos y lineas con flechas representan las
25 operaciones que no se realizan en algunas realizaciones de la invención. En particular, cuando la ejecución de un productor de determinación de la dependencia independiente para una dependencia determinada siempre devolverá la misma dependencia (por ejemplo, un productor de determinación de la dependencia independiente), se ejecuta este productor de determinación de la dependenCia en algunas realizaCiones de la invención, pero no se instancia y se vinculadas en el grafo(s) del productor.
Productores de determinación de dependencia explicita
La figura 13A ilustra pseudo código de declaraciones de dependencia de los productores para los métodos que utilizan una dependencia de acceso directo no declarada no dinámica (no contingente, sin suscripción) de acuerdo 35 con una realización de la invención, mientras que la figura 138 es un diagrama de bloques de productores que ilustran una dependencia del productor de ejemplo no contextual declarada, no dinámica (no contingente, sin suscripción) de acuerdo con una realización de la invención. La figura 13A muestra: 1) una declaración de dependencia del productor 1300 de un método alfa 1305, donde la declaración de dependencia del productor 1300 incluye una dependencia del productor con el productor CW::IY::BETA, y 2) una declaración de dependencia del
40 productor 1310 para un método beta 1315, donde la declaración de dependencia del productor 1310 está vacía, y donde el método beta 1315 regresa como un argumento de una instancia de la clase OEP. El método beta 1315 incluye el código de declaración de la dependencia del productor 1320 que establece DEP.TYPE en no suscripción declarada descendente, establece DEP.PROO en el productor 13, y regresa DEP.
45 En la figura 13A, un circulo 1 indica que la declaración de dependencia del productor 1300 es accedida (por ejemplo, como resultado de la designación de un productor basado en el método alfa 1305 como un productor de interés, como resu ltado de la detección automatizada de un productor basado en el método alfa 1305, como una progen ie de un productor de interés, etc.). Un círculo 2 en la figura 138 muestra que un productor CO::IO::ALFA se instancia basado en el método alfa 1305. Un circulo 3 en la figura 13A indica que la dependencia del productor CW::IY::8ETA
50 se procesa para detenninar la dependencia del productor, y como resultado, un circulo 4 indica que la declaración de dependencia del productor 1310 es accedida. Un circulo de trazos 5 en la figura 138 muestra que un productor CW::IY::8ETA se instancia como un productor de determinación de la dependencia 1380. Un circulo de trazos 6 en la figura 13 indica que el productor CO::IO::ALFA está vinculado con el grafo del productor para indicar que el productor CW::IY::BETA es un productor descendiente. Un circulo 7 en la figura 138 indica que el productor
55 CW::IY::BETA se ejecuta y devuelve DEP para identificar al productor 13. Un circulo 8 indica que el productor 13 se instancias 13, mientras que un circulo 9 indica que el productor 13 está vinculado como productor descendiente en el grafo del productor con el productor CO: :IO::ALPHA. En la figura 13B, el productor CO::IO::ALFA y el productor 13 son productores estándar 1385 (que no son productores de determinación de la dependencia).
60 La figura 13C ilustra un pseudo código de deClaraciones de dependencia de los productores de los métodos que uti lizan una dependencia del productor de acceso directo no declarado contingente sin suscripción de acuerdo con una realización de la invención, mientras que la figura 130 es un diagrama de bloques de productores que ilustran un ejemplo de dependencia del productor sin acceso directo declarado, contingente, sin suscripción de acuerdo con una realización de la invención. Además, la figura 130 se refiere a los productores 5, 7A, 7B Y la figura 5A y la
65 resolución de la dependencia dinámica de productor 5 al productor 7A.
La figura 13C muestra: 1) una declaración de dependencia del productor 1300 para un método alfa 1305, donde la declaración de dependencia del productor 1300 incluye una dependencia del productor con el productor CW::IY::BETA, 2) una declaración de dependencia del productor 1325 para un método beta 1315, donde la declaración de dependencia del proouctor 1325 incluye una dependencia del productor con el productor 5 CU::IV::OELTA, y donde el método beta 1315 regresa como un argumento una instancia de la clase OEP; 3) una declaración de dependencia del productor 1332 para un método delta 1334, donde la declaración de dependencia del productor 1332 está vacía, y donde el método delta 1334 regresa como un argumento de una instancia de clase OEP, y 4) una declaración de dependencia del productor 1338 para un método gamma 1340, donde la declaración de dependencia del productor 1338 está vacía, y donde el método gamma 1340 regresa a la variable X (donde X es una fuente externa, un valor por defecto (explicito o constante en la clase» . El método beta 1315 incluye el código de declaración de dependencia del productor 1330 que establece OEP.TYPE en no suscripción descendente declarada, establece DEP.PROO al productor 7A o 7B en función de la salida del productor CX::IZ::GAMMA, y devuelve OEP. El método delta 1332 incluye el código de declaración de dependencia del productor 1336 que establece OEP.TYPE a no suscripción descendente declarada, establece OEP.PROO en el productor
15 CX::1Z::GAMMA, y devuelve OEP.PROO.
En la figura 13C, un circulo 1 indica que la declaración de dependencia del productor 1300 es accedida (por ejemplo, como resultado de la designación de un productor basado en el método alfa 1305 como un productor de interés, como resultado de la detección automatizada de un productor basado en el método Alfa 1305 como una progenie de un productor de interés, etc.). Un circulo 2 en la figura 130 muestra que el productor 5 se instancia basado en el método alfa 1305. Un circulo 3 en la figura 13C indica que la dependencia del productor CW::IY::BETA se procesa para determinar la dependencia del productor, y como resu ltado, un circulo 4 ind ica que la declaración de dependencia del productor 1325 es accedida. Un circulo 5 en la figura 130 muestra que un productor CW::IY::BETA se instancia como un productor de determinación de la dependencia 1380. Un circulo 6 en la figura 13D indica que el
25 productor 5 está ligado al grafo del productor para indicar que el productor CW::IY::BETA es un productor descendiente.
Un circu lo 7 en la figura 13C indica que la dependencia del productor en el productor CU::IV::OELTA se procesa para determinar la dependencia del productor, y como resultado, un circulo 8 indica que la declaración de dependencia del productor 1332 es accedida. Un circulo de trazos 9 en la figura 130 muestra que un productor CU: :IV: :DELTA se instancia como un productor de determinación de la dependencia 1380. Un circulo de trazos 10 en la figura 130 indica que el productor CW::IY::BETA está vinculado con el grafo del productor para indicar que el productor CU: :IV: :DELTA es un productor descendiente. Un circulo 11 en la figura 130 indica que el productor CU::IV::OELTA se ejecuta y devuelve DEP para identificar CX::1Z::GAMMA. Un circulo 12 indica que el productor
35 CX::IZ::GAMMA se instancia, mientras que un circulo 13 indica que el productor CX::IZ::GAMMA está vinculado como productor descendiente en el grafo del productor en el productor CW::IY::BETA
En la figura 130, un circulo A indica que el productor CX::IZ::GAMMA se ejecuta y devuelve X para el productor CW::IY::BETA, mientras que un circulo B indica que el productor CW::1Y::BETA devuelve OEP para identificar el productor 7A; un circu lo e indica que el resto no resuelto (método beta) 1390 se ha resuelto ahora y el productor 7A se instancia, mientras que un circulo O indica la vinculación del productor 5 con el productor 7A. En la figura 13D, los productores CX::IZ::GAMMA, 5 y 7A son productores estándar 1385.
Productores de determinación de la dependencia al vuelo
45 La figura 13E muestra el pseudo código de las declaraciones de dependencia de los productores de los métodos que utilizan una dependencia del productor de acceso directo declarado, contingente, sin suscripción y una dependencia del productor declarada de acceso directo, contingente, sin suscripción de acuerdo con una realización de la invención, mientras que la figura 13F es un diagrama de bloques de productores que ilustran una dependencia del productor de acceso directo no declarada, contingente, sin suscripción y una dependencia del productor de acceso directo declarada, contingente, sin suscripción de acuerdo con una realización de la invención. Similar a la figura 13D, la figura 13F se refiere a los productores 5, 7A, Y 7B de la figura 5A y la resolución de la dependencia dinámica del productor 5 al productor 7A.
55 Las figuras 13E-F son las mismas que las figuras 13C-D, con las excepciones: 1) una declaración de dependencia del productor 1342 sustituye a la declaración de dependencia del productor 1325; 2) un método fly 1344 reemplaza el método delta 1334, y 3) un productor CW::IY::FLY reemplaza el productor CU::IV::DELTA La declaración de dependencia del productor 1342 incluye una dependencia de acceso directo declarada del productor CX::IZ::GAMMA ASi, el circulo 4 en la figura 13E ahora indica que la declaración de la dependencia del productor 1342 es accedida. El circulo 7 en la figura 13E indica ahora que la dependenCia de acceso directo deClarada del productor CX::IZ::GAMMA se procesa para determinar la dependencia del productor, y como resultado, el entomo de ejecución invoca el productor de determinación de la dependencia CW::IY::FLY sobre la marcha basado en el método fly 1344. El círculo 8 ahora indica que la declaración de dependencia del productor 1332 es accedida. El círculo de trazos 9 en la figura 13F muestra ahora que el productor CW::IY::FLY se instancia. El circulo de trazos 10
65 en la figura 13F indica que el productor CW::IY::BETA está vinculado con el grafo del productor para indicar que el productor CW::IY::FLY es un productor descendiente. El círculo 11 en la figura 13F indica que el productor
CW::IY::FlY se ejecuta y devuelve DEP para identificar CX::IZ::GAMMA. El resto de las figuras 13E-F son las mismas que las figuras 13C-D.
la generación al vuelo mediante el entorno de ejecución del productor de determinación de la dependencia
5 CW::IY::Fly alivia al programador de la aplicación de tener que escribir el código de declaración de la dependencia explicita del productor y crear instancias de una determinación basada en la dependencia respecto al productor. Además, permite al programador de aplicaciones especificar directamente la dependencia del productor
CX::IZ::GAMMA en la declaración de dependencia del productor para el método beta 1315, en lugar de especificar el productor de determinación de la dependencia CU::JV::DEl TA.
la técnica de acceso directo puede ser utilizada en una variedad de situaciones, y adicionalmente pueden tener una variedad de formatos. Por ejemplo, aunque en las figuras 13E-F la dependencia declarada del acceso directo es una dependencia no contingente (que identifica directamente el productor descendiente) y se encuentra en un estado declaración de dependencia del productor para un método en el que se basa un productor de determinación de la
15 dependencia, otras situaciones y formatos se muestran como sigue: 1) las figuras 13G-H ilustran el uso de dos accesos directos, donde uno es contingente y es parte de una declaración de dependencia del productor de un método en el que se basa un productor estándar y el otro es no contingente y es parte de una declaración de dependencia del productor de un método en el que se basa un productor de determinación de la dependencia, y 2) las figuras I-J ilustran el uso de un acceso directo que no es contingente y que está en un estado declaración de dependencia del productor de un método en que se basa un productor estándar.
la figura 13G ilustra el pseudo código de las declaraciones de dependencia de los productores para los métodos que utilizan una dependencia del productor de acceso directo declarado contingente sin suscripción y una dependencia del productor de acceso directo declarada no contingente sin suscripción de acuerdo con una 25 realización de la invención, mientras que la figura 13H es un diagrama de bloques de productores que ilustran un método abreviado de una dependencia del productor de ejemplo declarada, contingente, sin suscripción y una dependencia del productor de acceso directo declarado no contingente sin suscripción de acuerdo con una realizaCión de la invenCión. La figura 13G muestra: 1) una declaraCión de dependencia del productor 1345 para el método alfa 1305, donde la declaración de dependencia del productor 1345 incluye una dependencia del productor de acceso directo declarado contingente con un productor <P>GETC1 ::11 ::M1; 2) una declaración de dependencia del productor 1350 en un método fly1 1355, donde la declaración de dependencia del productor 1350 incluye una dependencia del productor de acceso directo declarado no contingente en el productor CO::IO: GETC1, y donde el método fly1 1355 regresa como un argumento de una instancia de DEP, 3) la declaración de dependencia del productor 1332 de un método fly2 1362, donde el método fly2 1362 regresa como un argumento de una instancia de
35 DEP, Y 4) la declaración de dependencia del productor 1365 para un método getc1 1370, donde el método getc1 1370 vuelve a C1 con un valor de CX o ey.
El método FlY1 1355 Y su declaración de dependencia del productor 1350 son proporcionados por el entomo de ejecución en respuesta a la dependencia declarada en el acceso directo <P>GETC1 ::11 ::M1 (lo que ind ica que el acceso directo está siendo utilizado para la clave de clase). El método fly1 1355 incluye el código de la declaración de dependencia del productor 1360 que establece DEP.TYPE a conjuntos declarados descendentes sin suscripción DEP.PROD al productor CX::11::M1 o CY::11::M1 en función del valor de la salida C1 por el productor de CO: :10: :GETC1 , y vuelve DEP. Aunque en el ejemplo de la figura 13H, un <P> se utiliza para designar que es la clave de clase del productor que es contingente, realizaciones alternativas de la invención podrian utilizar otras
45 sintaxis. Además, aunque en el ejemplo de la figura 13H, un <P> se utiliza para designar que es la clave de clase del productor que es contingente, una realización de la invención soporta que tenga más y/o diferentes de los identificadores que componen la clave del productor que se indicará como contingente de esta manera.
En la figura 13G, un circulo 1 indica que la declaración de dependencia del productor 1345 es accedida (por ejemplo, como resultado de la designación de un productor basado en el método alfa 1305 como un productor de interés, como resultado de la detección automatizada de un productor basado en el método alfa 1305 como una progenie de un productor de interés, etc.). Un circulo 2 en la figura 13H muestra que el productor CO::IO::AlFA se instancia basado en el método alfa 1305. Un circulo 3 en la figura 13G indica que la dependencia del productor de acceso directo declarado se procesa para determinar la dependencia del productor y el entorno de ejecución que
55 proporciona el método fly1 1355, Y como resultado, un circulo 4 indica que la declaración de dependencia del productor 1350 es accedida.
Un circu lo con una 5 en la figura 13H muestra que un productor CO::10::FlY1 se instancia como un productor de determinación de la dependencia 1380. Un circulo 6 en la figura 13H indica que el productor CO::IO ::AlFA está vinculado en el grafo del productor para indicar que el productor CO::IO::FlY1 es un productor descendiente. Un circulo 7 en la figura 13G indica que la dependencia del productor del acceso directo declarado en CO::10::GETC1 se procesa para determinar la dependencia del productor y el entorno de ejecución que proporciona el método fly2 1362, Y como resultado, un circulo 8 indica que la declaración de dependencia del productor 1332 es accedida. Un circulo de trazos 9 en la figura 13H muestra que un productor CO::IO::FlY2 se instancia. Un circulo de trazos 10 en
65 la figura 13H indica que el productor CO::IO::FlY1 está vinculado en el grafo del productor para indicar que el productor CO::IO::FlY2 es un productor descendiente.
Un circulo 11 en la figura 13H indica que el productor CO::10::FLY2 se ejecuta y se devuelve DEP para identificar el productor CO::10::GETC1. Un circulo 12 indica que el productor CO::10::GETC1 se instancia, mientras que un circulo 13 indica que el productor CO::10::GETC1 está vinculado en el grafo del productor en el productor CO::1O::FLY1 como
5 productor descendiente.
En la figura 13H, un círculo A indica que el productor CO::10::GETC1 se ejecuta y vuelve C1 = CX al productor CO::10::FLY1, mientras que un circulo B indica que el productor CO::10::FLY1 se ejecuta y devuelve DEP para identificar el productor CX::11::M1 , un círculo C indica que el resto no resuelto (método fly1) 1390 se ha resuelto ahora, y un circulo O indica la vinculación del productor CO::IO::ALFA con el productor CX::11::M1. En la figura 13H, los productores CO::10::GETC1, CO::IO::Alfa, y CX::11::M1 son los productores estándar 1385.
La generación fly mediante el entorno de ejecución del productor de determinación de la dependencia CO::10::FLY1 y CO::10::FLY2 alivia al programador de la aplicación de tener que escribir el código de declaración de dependencia
15 explicita del productor y de crear instancias de los productores de la determinación de la dependencia basados en el mismo. Además, permite que el programador de la aplicación especifique directamente la dependencia contingente en un productor **::11 ::M1 a través del método getC1 en la declaración de dependencia del productor del método alfa 1305, en oposición a la especificación del productor de determinación de la dependencia CW::IY::BETA.
La figura 131 ilustra el pseudo código de las dedaraciones de dependencia de los productores de los métodos que utilizan una dependencia del productor de acceso directo declarado no dinámico (no contingente, sin suscripción) de acuerdo con una realización de la invención, mientras que la figura 13J es un diagrama de bloques de productores que ilustran una dependencia del productor de ejemplo contextual declarada no dinámica de acuerdo con una realización de la invención. La figura 131 muestra: 1) una declaración de dependencia del productor 1372 de un
25 método alfa 1305, donde la declaración de dependencia del productor de instrucción 1372 incluye una dependencia declarada del productor de acceso directo a un productor 10, y 2) una declaración de dependencia del productor 1374 para un método fly 1376, donde la declaración de dependencia del productor 1374 está vacía, y donde el método fly 1376 vuelve como argumento de una instancia de DEP. El método fly 1776 Y su declaración de dependencia del productor 1374 son proporcionados por el entorno de ejecución en respuesta a la dependencia de acceso directo declarada. El método fly 1376 incluye el código de declaración de dependencia del productor 1378 que establece DEP.TYPE sin suscripción declarado, establece DEP.PROD al productor 10, y devuelve DEP.
En la figura 131, un circulo 1 indica que la declaración de dependencia del productor 1372 es accedida (por ejemplo, como resultado de la designación de un productor basado en el método alfa 1305 como un productor de interés,
35 como resultado de la detección automatizada de un productor basado en el método Alfa 1305 como una progenie de un productor de interés, etc.). Un circulo 2 en la figura 13J muestra que un productor CO::IO::ALFA se instancia basado en el método alfa 1305. Un circulo 3 en la figura 131 indica que una dependencia del productor de acceso directo declarado se procesa para determinar la dependencia del productor y el entomo de ejecución proporcionada al método fly 1376, Y como resultado, un círculo 4 indica que la declaración de dependencia del productor 1374 es accedida. Un circulo de trazos 5 en la figura 13J muestra que un productor CO::IO::FL y se instancia como un productor de determinación de la dependencia 1380. Un circulo de trazos 6 en la figura 13J indica que el productor CO::IO::ALFA está vinculado con el grafo del productor para indicar que el productor CO::IO::FLY es un productor descendiente.
45 Un circulo 7 en la figura 13J indica que el productor CO::IO::FLY se ejecuta y devuelve DEP para identificar el productor 10. Un círculo 8 indica que el productor 10 se instancia, mientras que un circulo 9 indica que el productor CO::IO::ALFA está vinculado en el grafo del productor con el productor 10, indicando que es un productor descendiente. En la figura 13J, el productor CO::IO::ALFA y el productor 10 son productores estándar 1385.
Se debe entender que el programador del entorno de ejecución, en una realización de la invención, escribe un solo método fly para interpretar todas las sintaxis y las combinaciones soportadas (por ejemplo, el método fly 1334, el método fly1 1355, el método fly2 1362, el método fly 1376) Y lo induye en el entorno de ejecución. Esto no sólo permite a los programadores de aplicaciones evitar la escritura de código para los productores de determinación de la dependencia donde un método fly puede ser utilizado, el programador del entorno de ejecución sólo necesita
55 escribir el método fly genérico (el fly único para todas las situaciones soportadas) una sola vez. Además, se debe entender que las dependencias de acceso directo dedaradas para permitir un entomo de ejecución que utiliza los productores de determinación de la dependencia, mientras que al mismo tiempo permite que un programador de la aplicación indique los productores estándar en las declaraciones de dependencia de los productores (por ejemplo, las figuras 13G-J).
Estructura de seguimiento del método
Con referencia de nuevo a la estructura de seguimiento del método de la figura 110, contenidos de ejemplo de la columna ArgumentDependencies 1194, columna FieldDependencies 1196, columna SequencingDependencies 65 1195, la columna UpwardOependencies 1193, y la columna WeaklyConstrainedOependencies 1199 utilizadas en algunas realizaciones de la invención se describirán ahora. En concreto, la columna ArgumentOependencies 1194 almacena una colección de articulos, uno por cada ArgumentDependency. En una realización de la invención, cada articulo incluye lo siguiente: 1) el argumento de Identificación, 2) un identificador de la naturaleza de la clave de clase, siendo uno de clase explicita, la misma clase y la clase contingente, 3) un identificador de la clave de clase explicita de población, cuando el identificador de la clave de clase indica la naturaleza explicita de la clase, 4) el 5 identificador de clave del método de determinación de la clase contingente poblada, cuando el identificador de la clave de clase indica la naturaleza de la clase contingente, 5) un identificador de la naturaleza de la clave de la instancia, siendo uno de de instancia explicita, la misma instancia y la instancia contingente; 6) un identificador de la clave de la instancia explicita poblada, cuando el identificador de la instancia clave indica la naturaleza de la instancia explicita; 7) el identificador de la clave del método de determinación de la instancia contingentes poblada, cuando el identificador de la naturaleza de la clave de la instancia indica instancia contingente, 8) un identificador de la naturaleza de la clave del método, siendo uno del método explicito, el mismo método, y el método contingente; 9) un identificador de clave del método explicito lleno cuando el identificador de clave de la naturaleza del método indica que método explícito; 10) el identificador de clave de determinación del método contingente poblado, cuando el identificador de la naturaleza de la clave del método indica que método contingente; y 11) un identificador de
15 acceso directo que indica si la declaración de la dependencia del productor para el argumento en la declaración de dependencia del productor contenía una indicación de acceso directo (es decir, la declaración de dependencia del productor identifica directamente un productor descendiente estándar en lugar de un productor de determinación de la dependencia).
La indicación -.. explicita" de los varios identificadores de la naturaleza de la clave se utiliza cuando la clave explicita se proporciona para la dependencia del productor en la declaración de dependencia del productor. A modo de ejemplo, la dependencia del productor "CW:: IY::BETA" de la declaración de dependencia del productor 1300 de la figura 13A proporciona una clave de clase explicita, de ejemplo, y de método.
25 En algunas realizaciones de la invención, una técnica de enlace directo es compatible con las declaraciones de dependencia de los productores de tal manera que: 1) si una clase no está prevista para una dependencia de un productor determinado, entonces se utiliza la misma clase que el productor padre, y 2) si una clase e instancia no se prevén para una dependencia de un productor determinado, entonces se utiliza la misma Clase e instancia que el productor padre. En otras realizaciones de la invención, una sintaxis se utiliza para permitir cualquier combinación de clase, instancia, y método, para ser el mismo que el padre (con la excepción de que todos sean iguales) (por ejemplo, un separador se utiliza para designar cada clase, instancia, y método, y una ausencia de este separador indica el mismo como padre -a titulo de ejemplo especifico, la sintaxis puede ser "# C:", H# 1:", y H# M:H, tal que una dependencia del productor en una declaración de dependencia del productor puede ser # C: "clave de daseH::# 1: "clave de instancia"::# M: Hclave de métodoH) (donde cuotas indican un marcador de posición para un valor o una
35 variable). La indicación •... mismo" de la naturaleza de los distintos identificadores clave se utiliza en esta técnica de acceso directo se utiliza en el estado de declaración de la dependencia del productor.
Tal como se indicó anteriormente, en algunas realizaciones de la invención una indicación de una dependencia del productor contingente se soporte a través de una sintaxis (por ejemplo, <P» utilizada en la propia declaración de dependencia del productor (véase 1345 de la figura 13G), y esta sintaxis se puede utilizar en una o más de la clase, la instancia, y el método de una dependencia del productor. La indicación H.. contingente" de los varios identificadores de la naturaleza de la clave se utiliza para identificar cuándo se produce una dependencia del productor contingente, mientras que Hidentificador de la clave de método de determinación ... contingente" indica la clave del método del productor descendiente (la clase y la instancia son los mismos que el del productor padre). A
45 modo de ejemplo, la dependencia del productor "<P> GETC1::11::M1" para la declaración de dependencia del productor 1345 de la figura 13G proporciona una clase contingente (donde la clave del método de determinación de la clase contingente es GETC1), una clave de instancia explicita, y una clave de método explicito.
La columna SequencingDependencies 1195, la columna UpwardDependencies 1193, y la columna WeaklyConstrainedDependencies 1195 almacenan, cada una, una colección de elementos, uno para cada SequencingDependency, UpwardDependency y WeaklyConstrainedDependency. En una realización de la invención, cada elemento tiene la misma estructura que un elemento de la colección de ArgumentDependencies, excepto que no incluye un identificador de argumento. Además, aunque las figuras 13A-J ilustran dependencias sin suscripción declaradas descendentes procedentes de los productores de determinación de la dependencia, se debe entender 55 que en el caso de una dependencia declarada ascendente o dependencia débilmente limitada, el productor de determinación de la dependencia puede devolver las otras dependencias discutidas con referencia a las figuras 7F
G.
La columna FieldDependencies 1196 almacena una colección de elementos, uno para cada FieldDependency. Aunque en una realiz.ación de la invención, cada elemento inCluye la clave del método de propiedad, en realizaciones alternativas de la invención pueden tener la misma estructura que un elemento de la colección de SequencingDependencies.
Dependencias de Suscripción
En una realiz.ación de la invención, ambas dependencias de productores de suscripción y sin suscripción son compatibles. Cuando una dependencia del productor de suscripción se declara para un método determinado y un productor se instancia desde ese método dado, el entomo de ejecución puede resolver durante el entomo de ejecución (en base a la existencia de otros productores), el conjunto de cero O más productores que cumplen los criterios de la suscripción. Si bien una realización de la invención es compatible con los productores de dependencia
5 de suscripción y dependencia sin suscripción, realizaciones altemativas sólo soportan sin suscripción. Además, aunque en una realización de la invención dos tipos de dependencias de suscripción son compatibles (absorbentes y adherentes), las realizaciones alternativas de la invención soportan más, menos, yfo diferentes tipos de dependencias de productores de suscripción.
Las figuras 14A-C son diagramas de bloques que ilustran suscripciones absorbentes y adherentes de acuerdo con una realización de la invención. La figura 14A es un diagrama de bloques de un ejemplo del registro de suscripción 1250 de la figura 12 de acuerdo con una realización de la invención. Aunque la figura 14A ilustra esta estructura de registro como una tabla, se debe entender que cualquier estructura de datos adecuada puede ser utilizada (por ejemplo, un mapa hash). La figura 148 es un diagrama de bloques de productores de ejemplo que ilustran una
15 dependencia absorbente del productor de suscripción no contingente de acuerdo con una realización de la invención. La figura 14C es un diagrama de bloques de productores de ejemplo que ilustran una dependencia adherente del productor de suscripción no contingente de acuerdo con una realización de la invención. Dos filas se muestran en la tabla de la figu ra 14A llenas con contenido utilizado en los ejemplos de las figuras 14B-C. Los numeros rodeados con un circulo se utilizan en las figuras 14B-C para ilustrar el orden en que las operaciones se realizan de acuerdo con una realización de la invención.
En la figura 14A, una columna de claves del productor del suscriptor 1400, una columna del tipo de suscripción 1405, y un criterio de suscripción para la columna de los productores de activación 1410 se muestran para almacenar, respectivamente, el contenido correspondiente al nombre de la columna. Además, la figu ra 14A muestra
25 un columna de modo de enlace padre 1425 para almacenar el modo de enlace para el productor padre de la dependencia de suscripción; esta información se describirá con más detalle respecto a las figuras 14B-C.
La figura 14A muestra también una columna de productores coincidentes 1415 y una columna completada 1420 utilizada para las suscripciones de absorción. La columna de productores coincidentes 1415 se utiliza para almacenar las claves de producción de los productores de activación que cumplen los criterios de suscripción de la suscripción de absorción, mientras que la columna completa 1420 se utiliza para controlar si la suscripción de absorción se ha completado durante la ejecución dada de un conjunto actual de los grafos de los productores. Los productores coinciden con las columnas 1415 y la columna completa 1420 proporciona una optimización adicional opcional que permite el trabajo de exploración de los productores instanciados que se dividen entre la generación
35 automatizada del grafo del proouctor y la ejecución del grafo del productor tal como se describe más adelante.
La figura 14A muestra también una columna de clase padre 1430, una columna del método padre 1435, y una columna de instancia padre 1437 utiliz.ada para suscripciones adherentes. La columna de clase padre 1430, la columna del método padre 1435, y la columna de instancia padre 1437, respectivamente, almacenar la clave de clase, la clave de método, y la clave de instancia del productor padre que se creará para la suscripción adherente. Además, la figura 14A muestra una columna de referencia del productor de determinación de la dependencia 1421 que almacena una referencia para el productor de determinación de la dependencia que crea la suscripción.
Suscripción de Absorción
45 En una dependencia del productor de suscripción de absorción, la dependencia es la colección de todos los productores de la estructura del grafo(s) actual del productor que cumple con los criterios de suscripción de absorción. Con referencia a la figura 148, un circulo 1 indica un productor 1450 que se instancia (por ejemplo, como resultado de la designación del productor 1450 como un productor de interés, como resultado del descubrimiento automatiz.ado del productor 1450 como una progenie de un productor de interés, etc.). El productor 1450 se basa en un método para el que la declaración de dependencia del productor incluye una dependencia del productor (por ejemplo, con ID de argumento X). Un circulo 2 indica la dependencia del productor del productor 1450 que se procesa para identificar un productor 1455.
55 Un circulo 3 indica que el productor 1450 está ligado (en el ejemplo anterior, a través del argumento ID X) en el grafo del productor 1455 como un productor descendiente. Un circulo 4 indica la ejecución del productor 1455. El productor 1455 es un productor de determinación de la dependencia que incluye el código de declaración de dependencia del productor que indica una dependencia del productor de suscripción de absorción y que indique los criterios de suscripción de absorción. Como tal, la ejecución del productor 1455 resulta en rellenar el registro de suscripCión. Respecto al ejemplO en la primera fila de la figura 14A, la columna de claves del productor del suscriptor 1400, la columna del tipo de suscripción 1405, el criterio de suscripción para la columna de los productores de activación 1410, la columna del modo de enlace padre 1425, y la columna de referencia de determinación de la dependencia del productor 1421 están, respectivamente, llenas con la clave de productor del productor 1450, una indicación de que la suscripción es del tipo de absorción, los criterios de suscripción de absorción contenidos en el
65 productor 1455, el modo de enlace del productor 1450 vinculado al productor 1455 (que, en el caso de una suscripción absorbente será una dependencia de argumento e incluyen un ID de argumento, pero cuyo indicador de
adherencia se indicará como no adherente -en el ejemplo anterior, Identificación del argumento de X), y una referencia al productor 1455 (el productor de detenninación de la dependencia que crea la suscripción).
Los círculos 5A-N indican la instanciación de los productores 1460A-N. En este ejemplo, los productores 1460A-N
5 cumplen los criterios de suscripción absorbentes, y por lo tanto son productores de activación. Como tal, un circulo 6A-N indica la vinculación del productor 1450 con los productores 1460A-N (en el ejemplo anterior, a través del ID del argumento X). Un círculo 7 indica que la dependencia de la suscripción absorbente se completa para la ejecución actual del grafo(s) del productor, y el productor 1450 se ejecuta a continuación.
En una realización de la invención, los criterios de suscripción absorbentes pueden ser una o más de cualquiera de las claves que constituyen una clave del productor. Así, en realizaciones de la invención donde una clave del productor comprende una clave de clase, una clave de ejemplo, y una clave de método, los criterios de suscripción podrían ser una o más claves de este tipo. A modo de ejemplo con referencia a la figura 11C, una exploración a través de los productores instanciados para aquellos que cumplen los criterios de suscripción es una exploración a
15 través de una o más de las tres primeras columnas del grafo(s) del productor de la estructura para determinar si las claves de los productores instanciados coinciden con las claves de los criterios de suscripción de absorción. Aunque en una realización de la invención, los criterios de suscripción absorbentes pueden ser uno o más de cualquiera de las claves que constituyen una clave del productor, en realizaciones altemativas de la invención, los criterios de suscripción absorbentes se limitan a un subconjunto de las claves que constituyen una clave del productor.
SUScripción adherente
En una dependencia de la suscripción del productor adherente, la dependencia hace que un productor padre a instanciar para cada productor que cumpla con los criterios de suscripción adherentes. Con referencia a la figura
25 14C, un círculo 1 indica un productor 1470 que se instancia (por ejemplo, como resultado de la designación del productor 1470 como un productor de interés, como resultado del descubrimiento automatizado del productor 1470 como una progenie de un productor de interés a través de una dependencia de secuenciación (por ejemplo, como resultado de un SequencingOependency o WeaklyConstrainedOependency, etc.). El productor 1470 es un productor de determinación de la dependencia que incluye la dependencia del código de declaración del productor que indica una suscripción adherente, los criterios de suscripción adherentes para los productores de activación, y las características de suscripción adhesivas para el productor padre que se va a crear.
La ejecución del productor 1470 resulta en poblar el registro de suscripción. Respecto al ejemplo en la segunda fila de la figura 14A, la columna de claves del productor del suscriptor 1400, la columna del tipo de suscripción 1405, y la 35 columna de los productores de los criterios para la suscripción de activación 1410, respectivamente, se llenan con la clave de productor del productor 1470, una indicación de que la suscripción es del tipo adherente, y los criterios de suscripción adherentes para los productores de activación contenidos dentro del productor 1470. Además, la columna de la clase padre 1430, la columna del método padre 1435, la columna de instancia padre 1437, y la columna del modo de enlace 1425 del productor padre que a está vinculado al productor de activación se llenan con las características de suscripción adherentes para el productor padre que se puede crear -en esta realización de la presente invención, respectivamente, la clase del productor padre a instanciar, el método del productor padre a instanciar, el productor padre de ejemplo a instanciar (si se deja en blanco, sería igual a la clave de instancia del productor de activación), el modo de enlace (que, en el caso de la suscripción adherente, puede ser: 1) dependencia de argumento, campo, o secuenciación, 2) el argumento de identidad si una dependencia de argumento -el ID de
45 argumento del productor padre está relacionada con el productor de activación (por ejemplo, el argumento de Identificación Y). Además, la columna de referencia del productor de determinación de dependencia 1421 se llena con una referencia para el productor de determinación de la dependencia que creó la suscripción (en la figura 14C, el productor 1470).
Con referencia a la figura 14C, un círculo 2 indica un productor 1475 que se instancia (por ejemplo, como resultado de la designación del productor 1475 como un productor de interés, como resultado del descubrimiento automatizado del productor 1475 como una progenie de un productor de de interés, etc.). Además, se determina si el productor 1475 cumple los criterios de suscripción adherentes para un productor de activación. Un circulo 3 indica que responde al productor de activación 1475, un productor 1480 se instancia basado en las características de 55 suscripción adherentes para el productor padre a crear. Con referencia a la segunda fila de ejemplo de la figura 14C, la clave de clase, la clave de método, la clave de ejemplo, y el modo enlace se accede desde la columna de ciase padre 1430, la columna del método padre 1435, la columna de ejemplo 1437, y la columna del modo de enlace padre 1425, respectivamente. El productor padre tiene una ciave del productor que comprende la clave de clase visitada, la clave de instancia visitada (si se deja en blanco, la clave de instancia del productor de activación (en la figura 14C, el productor 1475)), y la clave del método accedido -en el ejemplO de la figura 14C, este es el primer productor 1480. Un circulo 4 indica que el productor padre instanciado 1480 está vinculado con el grafo de productor al productor de activación descendiente 1475 a través del modo de enlace accedido (en el ejemplo anterior, el tipo del modo de enlace = dependencia del argumento, el argumento del modo de enlace ID = Y). También en el círcu lo 4, en el caso de una dependencia del argumento, el indicador adherente se establece para indicar adherente -cuya 65 dependencia del productor en esa posíción de la declaración de dependencia del productor para el método en que se basa el productor padre instanciado 1480 debería ser ignorado por el productor 1480 -esto evita que el enlace
creado por la dependencia del productor de suscripción adherente que se sobrescriben mediante las operaciones posteriores de generación automatizada de grafos del productor.
En una realización de la invención, los criterios de suscripción adherente para los productores de activación pueden ser una o más de las claves que constituyen una clave del productor. Asi, en realizaciones en las que una clave del productor comprende una clave de clase, una clave de instancia, y una clave de método, los criterios de suscripción adherentes de activación pueden ser una o más de las claves de clase, instancia, y método. A modo de ejemplo con referencia a la figura 11C, una exploración a través de los procluctores instanciados para aquellos que cumplen los criterios de suscripción adherentes para los productores de activación es una exploración a través de una o más de las columnas primera a tercera del grafo(s) del productor de la estructura para determinar si las claves de los productores instanciados coinciden con las claves de los criterios de suscripción adherentes para los productores de activación. Aunque en una realización de la invención, los criterios de suscripción adherentes para los productores de activación pueden ser una o más de las claves que constituyen una clave del productor, en realizaciones alternativas de la invención, los criterios de suscripción absorbentes puede ser un número más limitado de las claves que constituyen una clave del productor.
Las fig uras 14D-E ilustran la elección de un productor padre basado en un productor padre de determinación de la dependencia de acuerdo con una realización de la invención. Aunque las figuras 140-E se describen con referencia a las dependencias de argumento, realizaciones de la invención pueden soportar el uso de las dependencias de secuenciación y de campo.
La figura 140 ilustra la elección de un productor padre basada en un productor padre de determinación de la dependencia creada por una suscripción adherente de acuerdo con una realización de la invención. Al igual que la figura 14C, la figura 140 muestra el productor de suscripción adherente 1470 y el productor de activación 1475, sin embargo, más que el productor 1480, la figura 140 muestra un productor de determinación de la dependencia 1480 creada mediante la suscripción adherente de un productor de suscripción adherente 1470. Además, la figura 140 muestra que el modo de enlace de la suscripción adherente es la dependencia de argumento, el argumento ID = X, Y indicador adherente = adherente. Tal como se ilustra por la linea discontinua curvada desde el productor 1475 al procluctor de determinación de la dependencia 1480, el OEP devuelto por el productor de determinación de la dependencia puede estar basado en la propia salida del productor 1475 (el argumento del ID de argumento = X). En la figura 140, el productor de determinación de la dependencia 1480 devuelve una productor de dependencia sin suscripción ascendente declarado en un productor 1482, con el modo de enlace indicando la dependencia de argumento y el argumento ID = Y. Aunque los identificadores de argumento X e Y se utilizan en la figura 140 para demostrar que pueden variar, debe entenderse que pueden ser iguales.
La figura 14E ilustra la elección de un productor padre basada en un productor padre de determinación de la dependencia creada por un productor descendiente de determinación de la dependencia, que está vinculado al productor de determinación de la dependencia descendiente mediante una dependencia de secuenciación, de acuerdo con una realización de la invención. La figura 14E es similar en estructura a la figura 140, en concreto, el productor 1475, 1480, Y 1482 se sustituyen con los productores 1486, 1496 Y 1498. Sin embargo, más que el productor de suscripción adherente 1470 que crea el vinculo entre los productores 1480 y 1475, el productor 1486 tiene una dependencia de secuenciación de un productor de determinación de la dependencia 1494 (por ejemplo, creado a través de UpwardOependency o WeaklyConstrainedOependency a), que crea el productor de determinación de la dependencia 1496 a través de una dependencia sin suscripción ascendente declarada.
Es destacable que las suscripciones adherentes y las dependencias declaradas sin suscripción ascendentes (por ejemplo, creadas a través de UpwardOependencies y/o WeaklyConstrainedOependencies) causan una construcción inferior de un grafo del productor (en oposición a la construcción superior hacia abajo que se ha descrito anteriormente en este documento). Además, esta construcción de abajo hacia arriba no se limita a la construcción de un solo nivel, sino que puede ser de varios niveles (por ejemplo, si debido a una suscripción adherente o sin suscripción ascendente de dependencia declarada, un productor padre se instancia, que el mismo productor padre también puede ser un productor de activación para una suscripción adherente o puede incluir una dependencia sin suscripción ascendente declarada y hacer que la instanciación de otro procluctor padre, y asi sucesivamente). En este sentido, las suscripciones adherentes, así como las dependencias sin suscripción ascendentes declaradas, inversa a la construcción del grafo del productor.
Aunque en algunas realizaciones de la invención, los productores padre identificados por las caracteristicas de suscripción adherentes son productores estándar (ver la figura 14C), realizaciones alternativas pueden implementarse para soportar la identificación de otros tipos de productores. Por ejemplo, en las realizaciones de la invención que permiten las caracteristicas de suscripción adherentes para identificar un productor de determinación de la dependencia (véase la figura 140), este productor de determinación de la dependencia puede acceder a la salida del productor de activación y puede, sobre la base de esa salida, desencadenar la creación de un productor particular como productor padre que hay que adherir al descendiente (este productor padre ya podría existir o no, y si ya existe, simplemente está vinculado, y el productor descendiente se agrega a su argumento; si no existe todavía, se crea). El caso en el que el productor de determinación de la dependencia devuelve un productor constante imita una suscripción absorbente. El caso en el que el productor de determinación de la dependencia devuelve un productor cuyo ejemplo clave es único para cada productor de activación (por ejemplo, devuelve un productor cuya clave de instancia es la clave del productor del productor de activación) se traduce en un productor padre separado del productor descendiente y se le conoce como una suscripción adherente pura. El caso en el que el productor de determinación de la dependencia devuelve una clave de instancia que no es ni constante ni única
5 para cada productor de activación, se pueden mezclar los comportamientos de las suscripciones adherentes puras y las suscripciones de absorción y se conoce como una suscripción adherente no pura.
Ventajas de ejemplo
10 Tal como se describió previamente, en una realización de la invención, las dependencias de los productores se declaran para métodos como una forma de especificar la invocación de secuenciación del método utilizando las instancias apropiadas (donde las instancias apropiadas incluyen las instancias a utilizar como argumentos, las instancias a utilizar por los métodos de instancia, y las instancias de la clase meta utilizadas por los métodos de clase) sin necesidad de utilizar la invocación manual del código de secuenciación, efectivamente, el trabajo de
15 generar parte o la totalidad del manual de invocación del código de la secuencia se sustituye por: 1) el trabajo realizado por el programador de la aplicación para escribir las declaraciones de dependencia de los productores y 2) el trabajo realizado por el entorno de ejecución para descubrir y construir el grafo(s) del productor y ejecutar los productores de ese grafo(s) del productor. Aunque el esfuerzo de escribir el entorno de ejecución es relativamente grande, se necesita sólo ser escrito una vez porque puede utilizarse para ejecutar todas las aplicaciones orientadas
20 a objetos escritos para el entorno de ejecución, en cambio, para una aplicación típica, el esfuerzo de escribir las declaraciones de dependencia del productor es relativamente bajo en comparación con la escritura manual del código de invocación de la secuenciación.
25 [0297]No dinámicos dependencias productores prevén una manera de especificar la invocación de métodos de secuenciación incondicional de código, y asi evitar la necesidad de escribir la invocación incondicional de secuenciación manual del código. Dependencias de contingentes de productores prevén una forma de especificar el procesamiento condicional, y por lo tanto elimina la necesidad de escribir código de invocación condiCional manual de secuenciaciÓn. Soporte a las dependencias de productores que permitan una colección de los productores para
30 ser devueltos prevé una forma de especificar el relleno de una colección antes de que se pasa como un parámetro, y así evitar la necesidad de escribir varias llamadas en la invocación manual de código de secuencia para rellenar una colección antes de que se pasa como un parámetro. Soporte a las suscripciones proporciona un entorno en el que un programador no tiene que escribir código especifico de escucha para cada tipo de objeto a ser escuchado (por ejemplo, en una hoja de cálculo grafo de programación orientado a productores, una suscripción a la absorción
35 puede ser utilizado para calcular un promedio de un rango de celdas (cada célula es un productor) haciendo que los criterios de suscripción de absorción identificar las células dentro de la gama, y volver a calcular el promedio cada vez que un nuevo productor se agrega a la suscripción de la absorción, en una hoja de cálculo grafo de programación orientado a productores, una suscripción adherente puede ser utilizado como un conversor de divisas por tener los criterios de suscripción adherentes identificar las células mantiene el contenido de la moneda y las
40 características adhesivas de suscripción del productor adherente (s) para crear una instancia que realizar la conversión de moneda (los productores (la celebración de los importes convertidos) creados por las suscripciones adherentes seria entonces disponible para su visualización en otras células).
Operación
Nuevos comandos de instancia
La figura 15 es un diagrama de flujo para instanciar nuevas instancias de acuerdo con una realización de la invención. Tal como se ha descrito anteriormente con referencia a la figura 10, el módulo de clase nueva 1095 de la
50 figura 10 puede ser implementado como parte del módulo de instancia nueva 1098. El diagrama de flujo de la figura 15 asume esta realización y se lleva a cabo por el módulo de instancia nueva 1098; la parte del diagrama de flujo de la figura 15 que representa el módulo de clase nueva 1095 se muestra como el bloque de trazos 1580, que incluye los bloques 1540 y 1550.
55 En respuesta a un comando de nueva instancia (bloque 1510), el control pasa al bloque 1520. En el bloque 1520, se determina si la instancia ya existe. Si no es asi, el control pasa al bloque 1530, de lo contrario, no es necesario crear una instancia y el control pasa al bloque 1570, en el que se termina el diagrama de flujo. En una realización que soporta claves de instancia, el bloque 1520 se realiza mediante el acceso a la estructura de seguimiento de instancia 1065 de la figura 10 para la clave de instancia (y la clave de clase si las claves de instancia no tienen que ser únicas
60 a través de las ClaSeS) proporCionada como parte del nuevo comando de instancia.
En el bloque 1530, se determina si la definición de clase de la instancia ya está cargada. Si no es así, el control pasa al bloque 1540, de lo contrario, el control pasa al bloque 1560. En una realización que admite claves de clase, el bloque 1540 se realiza mediante el acceso a la estructura de seguimiento de clase 1092 de la figura 10 para la clave
65 de clase proporcionada como parte del nuevo comando de instancia.
En el bloque 1540, la clase se carga y el control pasa al bloque 1550. En el bloque 1550, la definición de clase se almacena de acuerdo con la clave de clase y se realiza introspección, incluyendo cualquier declaración de dependencia de los productores (almacenada por la clave del método dentro de la clase -ver la figura 11 D). Desde el bloque 1550, el control pasa al bloque 1560. Con referencia a la figura 10, lo siguiente se realiza en bloques 1540
5 Y 1550: 1) la clase se carga a partir de las definiciones de clase que incluyen la lógica de negocio 1010 en las clases 1054 (esta carga resulta carga en los métodos y las declaraciones de dependencia de los productores de la clase se almacenan en el método y las declaraciones de dependencia de los productores 1056), 2) la clase se añade a la estructura de seguimiento de la clase 1092, y 3) los métodos se añaden a la estructura del método de seguimiento 1058. Además, las clases de salida de los métodos se cargan.
En el bloque 1560, una instancia de la clase se instancia y se almacena de acuerdo con la clave de instancia. Con referencia a la figura 10, la instancia se instancia en las instancias 1052, y el ejemplo se añade a la estructura de seguimiento de instancias 1065. Desde el bloque 1550, el control pasa al bloque 1570 en el que el diagrama de flujo termina. En algunas realizaciones de la invención en las que se utiliza una técnica de asignación de objetos
15 relacional, los datos pueden ser cargados desde un origen de datos extemo para llenar el campo de la instancia como parte del bloque 1560.
En algunas realizaciones de la invención, las clases y las instancias se pueden cargar/ejecutar en un modo en que el entorno de ejecución con el soporte de programación orientado al grafo del productor no es consciente (por ejemplo, 20 en la figura 9A, si el entorno de ejecución 915 carga/instancia sin que el entorno de ejecución 910 sea consciente). En tales casos, las realizaciones de la invención que también soportan la clave de instancia son un ejemplo de la clase InstanceKey (que tiene dos elementos: una naturaleza de clave de instancia indicando si el identificador de clave es una referencia a la instancia u otro objeto (tal como una cadena), y un identificador de clave que puede ser una referencia a la instancia, o a otro objeto (tal como una cadena)), los bloques 1520 y 1530 preguntarán a si la 25 instancia y la clase se instancian/cargan de una manera en la que el entomo de ejecución con el soporte de programación orientado al grafo del productor es consciente. En los casos en los que el entorno de ejecución con el soporte de programación orientada al grafo del productor no tiene conocimiento de una clase ya cargada, la clase no se puede cargar, pero la clase se af'iade a la estructura de seguimiento de la clase 1092 y los métodos se af'iaden a la estructura de seguimiento del método 1058. En los casos en los que el entorno de ejecución con el soporte de
30 programación orientado al grafo del productor no tiene conocimiento de una instancia ya creada, la instancia no se instancia, pero la instancia se agrega a la estructura de seguimiento de la instancia 1065.
Nuevo productor y Comandos Anulados
35 La figura 16 es un diagrama de flujO para instanciar nuevos productores y anular productores de acuerdo con una realización de la invención. Con referencia a la figura 10, los flujos de la figura 15 se realizan mediante el módulo de generación del grafo del productor automatizado 1040 y el módulo del productor de anulación 1045 (o, tal como se ha descrito con referencia a realizaciones alternativas respecto a la figura 10, el módulo que se encarga de la anulación y la inversión de la anulación).
40 En respuesta a un nuevo comando del productor (bloque 1600), el control pasa al bloque 1605. En una realización de la invención, un nuevo comando del productor puede ejecutarse en respuesta a una variedad de situaciones. La tabla 2 a continuación identifica las diversas situaciones y los parámetros pasados de acuerdo con una realización de la invención.
TABLA 2
Situaciones
Productor que llama Productor llamado (a ser creado si no existe) Tipo de llamada Modo de enlace Referencia del productor de determinación de la dependencia
Productor de interés
NIA Productor de interés Que se crea De interés NIA NIA
No suscripción declarada descendente
Padre Descend iente No suscripción declarada descendente Modo de enlace del productor pad re que llama Productor de determinación de la dependencia que proporciona la dependencia
Suscripción adherente
Descendiente Padre (clase padre , método y clave de instancia a partir de las caracteristicas de suscripción adherentes para el productor padre a crear, si clave de instancia está en blanco, la clave de instancia del productor descendiente ~)e llama existente Adherente Modo de enlace del productor padre llamado a partir de las características de suscripción adherentes para el productor padre a crear Productor de determinación de la dependencia que proporciona la dependencia
Anulación
NIA Productor a anu lar Anu lado NIA NIA
No suscripción ascendente declarada
Descendiente Pad re No suscripción ascendente declarada Modo de enlace del productor padre llamado Productor de determinación de la dependencia que proporciona la dependencia
En el bloque 1605, se determina si el productor ya existe. Si no, el control pasa al bloque 1610, de lo contrario, el control pasa al bloque 1670. El bloque 1605 se lleva a cabo mediante el acceso a una clase, instancia, y al método identificado (por ejemplo, por la clave yfo la referencia) como parte del nuevo comando del productor. En una
5 realización que soporta las claves de los productores, el bloque 1605 se realiza mediante el acceso al grafo(s) del productor de la estructura 1060 de la figura 10 para la clave del productor proporcionada como parte del nuevo comando del productor (la clave del productor en la columna del productor llamado de la Tabla 2).
En el bloque 1610, el módulo de instancia nueva se llama con un nuevo comando de instancia y el control pasa al
10 bloque 1615. En una realización de la invención, el bloque 1610 se realiza mediante una llamada al diagrama de flujo de la figura 15 utilizando la clave de instancia de la clave del productor en la columna del productor llamado de la Tabla 2.
En el bloque 1615, se accede a la definición de clase de la instancia del productor y el control pasa al bloque 1620.
15 Con referencia a la figura 10, el bloque 1615 se realiza mediante el uso de la clave de clase de la clave del productor en la columna del productor llamado de la Tabla 2 para acceder a la apropiada de las clases 1054 de acuerdo con la estructura de seguimiento de la clase 1092.
En el bloque 1620, el método y la declaración de dependencia del productor del productor se acceden y el control
20 pasa al bloque 1625. Con referencia a la figura 10, el bloque 1620 se realiza usando la clave del productor de la clave del método en la columna del productor llamado de la Tabla 2 para acceder al apropiado de los métodos y las declaraciones de dependencia de los productores 1056 de la clase situada en el bloque 1615.
En el bloque 1625, el productor se añade al grafo del productor y el control pasa al bloque 1630. Con referencia a la 25 realización de la invención en la figura 11C, las tres primeras columnas se rellenan.
En el bloque 1630, para cada suscripción registrada, el criterio de filtrado de la suscripción se procesa para determinar si el productor coincide. Con referencia a la realización de la invención en la figura 14A, una suscripción se considera registrada cuando se añade al registro de suscripción. Ejemplos de operaciones para registrar la
30 suscripción se describen más adelante en este documento. El bloque 1630 es opcional, que permite la optimización de la labor de la exploración de los productores de instancias que se divide entre la generación automatizada del grafo del productor y la ejecución del grafo del productor. Como tal, una realización alternativa de la invención puede no realizar el bloque 1630.
35 En el bloque 1635, el productor está vinculado al grafo(s) del productor si es llamado debido a una dependencia. Desde el bloque 1635, el control pasa al bloque 1640. La manera de llevar a cabo el bloque 1635 depende de la situación que se tradujo en el nuevo comando del productor que se está ejecutando (ver la figura 20). Por ejemplo, si la situación es que este es un productor de interés o un productor de suplantación, entonces no se llama debido a la dependencia y no se hace nada. En contraste, si la situación es sin suscripción declarada descendente, entonces se
40 llama debido a una dependencia sin suscripción declarada descendente; y con referencia a la realización de la invención en la figura 11C, se realiza lo siguiente: 1) el productor(es) padre se enlaza en la columna 1150 del productor descendiente llamado (columna del productor llamado de la tabla 2) se modifica con una referencia del productor padre en la fila del productor padre que llama (la columna del productor que llama de la tabla 2) y la referencia de determinación de la dependencia del productor (columna de referencia de determinación de la
45 dependencia del productor de la Tabla 2), y 2) la columna de enlace(s) del productor(es) descendiente 1160 de la fila del productor padre que llama (columna del productor que llama de la tabla 2) se modifica con una referencia al productor descendiente en la fila del productor descendiente llamado (la columna del productor llamado de la Tabla 2), una referencia del productor de determinación de la dependencia (la columna de referencia del productor de determinación de la dependencia de la Tabla 2), y un modo de enlace (establecido de acuerdo con la columna del
5 modo de enlace de la Tabla 2).
En contraste, si la situación es una suscripción adherente, entonces se llama debido a un productor de activación que se identifica, y con referencia a la realización de la invención en la figura 11C, se realiza lo siguiente: 1) la columna de enlace(s) del productor padre 1150 del productor descendiente que llama (la columna del productor que 10 llama de la tabla 2) se modifica con una referencia del productor padre en la fila del productor padre que llama (la columna del productor llamado de la tabla 2) y la referencia del productor de determinación de la dependencia (la columna de referencia de determinación de la dependencia del productor de la Tabla 2), y 2) el enlace(s) del productor(es) descendiente 1160 de la fila del productor padre que llama (columna del productor que llama de la tabla 2) se modifica con una referencia al productor descendiente en la fila del productora descendiente que llama
15 (columna del productor que llama de la Tabla 2), una referencia del productor de determinación de la dependencia (columna de referencia de la determinación de la dependencia del proouctor de la Tabla 2), un modo de enlace (establecido de acuerdo con la columna del modo de enlace de la Tabla 2) y un indicador adherente establecido para indicar la adherencia. En este respecto, la situación de una no suscripción declarada ascendente que se maneja es una manera similar a la suscripción adherente.
20 En el bloque 1640, el productor está marcado como no ejecutado y el control pasa al bloque 1645. Con referencia a la realización de la invención en la figu ra 11C, la columna de marcado de la ejecuciÓn incremental 1180 de la fila correspondiente se rellena con una indicación no ejecutada.
25 En el bloque 1645, se determina si el productor tiene alguna dependencia y no está anulada. Si es así, el control pasa al bloque 1650, de lo contrario, el control pasa al bloque 1665. El bloque 1645 se lleva a cabo mediante la comprobación de la declaración de dependencia en el bloque proouctor de acceso 1620 y la columna del tipo de llamada de la Tabla 2.
30 En el bloque 1650, para cada dependencia en la declaración de la dependencia del productor que se va a resolver ahora, se determina el número de productores y un nuevo comando del productor se invoca para cada uno. Desde el bloque 1650, el control pasa al bloque 1655. Diferentes realizaciones de la invención determinan los diferentes tipos de dependencia en diferentes momentos, la realización del bloque 1650 es una realización de ejemplo de la invención que se describirá más adelante en este documento.
35 En el bloque 1655, el productor se añade en el registro de inicio de ejecuciÓn si todos los productores que dependen existen y han sido ejecutados. Desde el bloque 1655, el control pasa al bloque 1660. Cuando, por un productor dado instanciado como parte de la iteración actual de este flujo, el bloque 1655 se realiza, a continuación, la invocación de otra iteración de este flujo para un productor, el productor dado dependiente devolverá el estado de ejecuciÓn de ese
40 productor (véase el bloque 1660) (por ejemplo, respecto a la realización de la invención de la figura 11C, el estado de la columna de marcado de la ejecución incremental 1180 de la(s) fila(s) correspondiente (s». Si todos los productores dependientes existen y el estado de ejecución de todos los productores dependientes se ejecuta, a continuación, el productor de la iteración actual se añade al registro de inicio de ejecución.
45 En el bloque 1660, el estado de ejecuciÓn del productor se devuelve como un parámetro.
En el bloque 1670, similar al bloque 1635, el productor está vinculado al grafo(s) del productor si es llamado por una dependencia. Desde el bloque 1670, el control pasa al bloque 1675. El bloque 1670 puede ser alcanzado por una variedad de razones. Por ejemplo, el bloque 1670 se puede alcanzar debido a que el productor crea una instancia
50 que anteriormente responde a un comando de anulación del productor, pero no vinculado en el grafo del productor. Como otro ejemplo, el bloque 1670 se puede alcanzar porque el productor ya es parte de un grafo del productor y se añade a otro (por ejemplo, en respuesta con anterioridad a la instancia que es un productor de interés, una progenie de un productor de interés, etc.)
55 En el bloque 1675, se determina si el nuevo flujo del productor se llama debido a una anulaciÓn, a una dependencia de suscripción adherente, o una dependencia declarada ascendente sin suscripción. Si es asi, el control pasa al bloque 1680, de lo contrario, el control pasa al bloque 1660. El bloque 1675 lleva a cabo el control de la columna de tipo de llamada de la Tabla 2 para ver si es una llamada para un productor de anulación, una dependencia de suscripción adherente, o una dependencia sin suscripción declarada ascendente.
En el bloque 1680, similar al bloque 1640, el productor está marcado como no ejecutado y el control pasa al bloque 1665. El bloque 1680 puede ser alcanzado por una variedad de razones.
En el bloque 1665, el productor se añade al registro de inicio de la ejecución, si no está ya presente, y el control 65 pasa al bloque 1660.
En respuesta a un comando de anulación del productor (bloque 1690), el control pasa al bloque 1695. En el bloque 1695, el productor está marcado como no anulado y el control pasa al bloque 1640. Con referencia a la realización de la invención de la figura 11C, el caché del productor de salida y la columna de indicaciones de salida del productor de anulación 1170 de la fila del productor son accedidos y alterados para indicar que el productor ya no 5 está anulado. Continuando con este flujo, el bloque 1640 daria lugar al bloque 1645, y si el productor tenia cualquier dependencia, al bloque 1650, lo que provocaria que el grafo del productor bajo el productor que fuera descubierto y construido, si no lo estaba ya. Si el grafo del productor bajo el productor ya está descubierto y construido, a continuación, la invocadón del nuevo comando del productor dará lugar a flujos que van de 1600 a 1605, a 1670, y así sucesivamente, además, el regreso del estado de ejecución de los productores del grafo en el marco del
10 productor en el bloque 1660 detenninará si el productor se añade en el registro de inicio de ejecución en el bloque 1655. Sin embargo, si el grafo del productor bajo el productor no se descubre y se construye, a continuación, la invocación del nuevo comando del productor se traducirá en que se descubren y construyen los flujos que van de 1600, a 1605, a 1610, y asi sucesivamente.
15 La figura 17 es un diagrama de flujo para el bloque 1650 de la figura 16 de acuerdo con una realización de la invención. Por lo tanto, los flujos de control del bloque 1645 al bloque 1700 en el bloque 1650. En 1700, por categorias, para cada dependencia en la declaración de dependencia del productor (uno por cada ArgumentOependency, FieldOependency, SequencingOependency, UpwardOependency y WeaklyConstrainedOependency), los siguientes bloques 1705-1745 se llevan a cabo. Con referencia a las figuras 10
20 Y 110, la estructura de seguimiento del método es accedida para determinar la información relativa a la dependencia del productor. También debe entenderse que los bloques 1715, 1725, 1730, 1740, 1745 Y 1750 son una optimización cuando se realizan antes de la ejecución del grafo del productor.
En el bloque 1705, se determina si la dependencia es un argumento de dependencia vinculado ya debido a una
25 dependencia adherente. Si es asi, el control pasa al bloque 1710 donde el flujo se completa para esta dependencia, de lo contrario, el control pasa al bloque 1715. Respecto a la realización de la invención que se muestra en la figura 11C, el indicador adherente se comprueba para detenninar si ellO del argumento de esta dependencia está sujeto a una dependencia de argumento de suSCripción adherente o a una dependencia de argumento declarado ascendente.
En el bloque 1715, se determina si la dependencia es una dependencia contingente. Si es aSi, el control pasa al bloque 1720, de lo contrario, el control pasa al bloque 1725. El bloque 1715 se lleva a cabo mediante la comprobación de la dedaración de dependencia del productor del productor descendiente identificado por la dependencia para determinar si está vacio (el productor descendiente es un productor independiente). Respecto a 35 las figuras 13A-J, esto sería cierto para los productores con números rodeados con lineas de trazos (por ejemplo, en la figura 130, el productor CU::IV::OEL TA), pero no es cierto para los otros productores (por ejemplo, en la figura 130, el productor CW::IY::BETA). Asi, con referencia a la figura 130, el bloque 1715 está representado por un circulo 1,4, Y 8. El bloque 1715 y el flujo desde el mismo a través de los bloques 1725-1750 es una optimización que evita la adición/vinculación con los productores de los números rodeados con lineas de trazos del grafo del
40 productor, asi como dividir el trabajo de los productores de ejecución entre la generación del grafo del productor automatizado y la ejecución del grafo del productor.
En el bloque 1720, un nuevo comando del productor para el productor de determinación de la dependencia se invoca y termina el flujo. Por ejemplo, con referencia a la figura 130, el bloque 1720 causa lo que está representado
45 por un circu lo 5,6, y 7.
En el bloque 1725, el productor de determinación de la dependencia se ejecuta y el control pasa al bloque 1730. Por ejemplo, con referencia a la figura 130, el bloque 1725 está representado por un circulo 11 (por lo tanto, el flujo de la figura 17 ilustra la realización que se ha descrito previamente, en el que un circulo 9 y 10 de la figura 130 no se
50 realizan).
En el bloque 1730, se detennina si la dependencia es una dependencia sin suscripción. Si es asi, el control pasa al bloque 1750, de lo contrario el control pasa al bloque 1740. En otras palabras, en el bloque 1725, el código de detenninación de la dependencia del productor en el método del productor de detenninación de la dependencia, que
55 es parte de la declaración de dependenda del productor del productor padre, es ejecutado. Una vez ejecutada este código de dedaración de la dependencia del productor, cuyo código seria identificar si se detennina que esta dependencia es una dependencia de suscripción, el tipo de dependencia del productor del productor padre. Respecto al ejemplo en la figura 130, el circulo 11 se traduciría en el flujo de la figura 17 que pasa desde el bloque 1730 al bloque 1750.
60 En el bloque 1750, se detennina el número de productores devueltos por la ejecución del productor de determinación de la dependencia en el bloque 1725 y un nuevo comando del productor se invoca para cada uno, utilizando los argumentos descritos en la Tabla 2, incluyendo la referencia del productor de determinación de la dependencia ejecutado en 1725. Por ejemplo, con referencia a la figura 130, el bloque 1750 causaria los circulas 12
65 y 13 Y los circulas C y D.
Con referencia al ejemplo de suscripción absorbente de la figura 148, el bloque 1725 representa un circulo 4; que hace que el flujo pase a través del bloque 1730 al bloque 1740.
En el bloque 1740, la suscripción se agrega al registro de suscripción, y si la suscripción se absorbe, se marcará
5 como incompleta. Desde el bloque 1740, el control pasa al bloque 1745. Con referencia a la realización de la invención que se muestra en la figura 14A, el registro de suscripción se rellena con la suscripción tal como se describió previamente.
En el bloque 1745, todas las instancias de los productores se analizan para ver si coinciden con los criterios de la suscripción (y por lo tanto, es un productor de activación ), y las coincidencias son procesadas.
La figura 18 es un diagrama de flujo para el bloque 1745 de la figura 17 de acuerdo con una realización de la invención. Por lo tanto, el control fluye desde el bloque 1740 al bloque 1800 al bloque 1745. En el bloque 1800, para cada productor instanciado, los siguientes bloques 1810-1830 se llevan a cabo.
En el bloque 1810, se determina si el productor cumple con los criterios de la suscripción. Si es así, el control pasa al bloque 1815, de lo contrario, el control pasa al bloque 1830, donde el flujo termina para el productor que se está procesando. Con referencia a las realizaciones de la invención que se muestran en las figuras 11C y 14A, el grafo(s) del productor se accede a determinar si se incluyen los productores que cumplen los criterios de la suscripción.
La forma de procesar un productor coincidente depende del tipo de suscripción que se está procesando. Con referencia al bloque 1815, si la suscripción es del tipo de absorción, el control pasa al bloque 1825, de lo contrario, el control pasa al bloque 1820. El bloque 1815 se realiza sensible al tipo de suscripción añadida en el bloque 1740 ó 2235.
25 En el bloque 1825, el productor coincidente se añade en el registro de suscripción y el productor con la suscripción de la absorción está relacionado con el productor correspondiente. Desde el bloque 1825, el control pasa al bloque 1830. Con referencia a las realizaciones de la invención mostradas en las figuras 11C y 14A-8, se realiza lo siguiente: 1) los criterios de suscripción a partir de los criterios de suscripción para la columna de los productores de activación 1410 se utiliza en el bloque 1810 y un productor coincidente fue localizado (por ejemplo, uno de los productores 1460A-N), 2) el productor coincidente se agrega a la columna del productor coincidente 1415 en la fila de la suscripción, y 3) el productor con la suscripción de absorción (por ejemplo, el productor 1450) está vinculado al productor coincidente (por ejemplo, uno de los productores 1460A-N) en la estructura del grafo(s) de productor de la figura 11C (utilizando la referencia del productor de determinación de dependencia extraida de la columna de
35 referencia del productor de determinación de dependencia 1421 del registro de suscripción 14A para la suscripción absorbente dada).
En el bloque 1820, un nuevo comando del productor se invoca para el productor padre que se va a crear. Desde el bloque 1820, el control pasa al bloque 1830 donde el diagrama de flujo termina para el productor actual seleccionado en el bloque 1800. Con referencia a las realizaciones de la invención que se muestran en las figuras 14A y 14C, se realiza lo siguiente: 1) los criterios de suscripción de los criterios de suscripción para la columna de los productores de activación 1410 se utilizó en el bloque 1810 y un productor coincidente fue localizado (por ejemplo, el productor 1475), y 2) un nuevo comando del productor se invoca con los parámetros de la tabla 2 ajustados como los siguientes: a) tipo de llamada es la suscripción adherente, b) el productor de llamada es la clave
45 del productor del productor descendiente de llamada (por ejemplo, el productor 1475); c) productor llamado es la clave del productor del productor padre llamado a crear (por ejemplo, el productor 1480), estando formada la clave del productor usando la clase padre, la instancia, y la clave del método a partir de las caracteristicas de suscripción adherentes para el productor padre a crear (figura 14A, columnas 1430, 1435 Y 1437) (si la clave de la instancia está vacía, se utiliza la clave de instancia del productor hijo de llamada), d) el modo de enlace para el productor padre llamado (figura 14A, columna del modo de enlace 1425); y e) la referencia del productor de determinación de la dependencia se extrae de la columna de la referencia del productor de determinación de la dependencia 1421 del registro de suscripción 14A para la suscripción determinada adherente.
La figura 19 es un diagrama de flujo para el bloque 1630 de la figura 16 de acuerdo con una realización de la
55 invención. Por lo tanto, el control fluye del bloque 1625 al bloque 1900 al bloque 1630. La figura 19 es muy similar a la figura 18. En concreto, los bloques 1910, 1915, 1920 Y 1930 de la figura 19 son idénticos a los bloques 1810, 1815, 1820 Y 1830, mientras que los bloques 1900 y 1925 difieren de los bloques 1800 y 1825. Como tal, sólo la diferencia se describirá aquí.
El bloque 1900 indica que el flujO se realiza para cada suSCripción registrada, mientras que el bloque 1800 indica que el flujo se realiza para cada productor de instancia. Asi pues, cuando el flujo de la figura 18 se centra en una sola suscripción y escanea todos los productores, el flujo de la figura 19 se centra en un solo productor y escanea todas las suscripciones. El bloque 1925 es el mismo que el bloque 1825, con la excepción de que la suscripción absorbente está marcada
65 como incompleta. Con referencia a la realización de la invención mostrada en la figura 14A, la columna completada 1420 en la fila correspondiente se actualiza para indicar que es incompleta.
La figura 20 es un diagrama de flujo para los bloques 1635 y 1670 de la figura 16 de acuerdo con una realización de la invención. Por lo tanto, el control fluye del bloque 1605 y el bloque 1630 al bloque 2005 en los bloques 1635 y 1670. En el bloque 2005, se determina si esta iteración del diagrama de flujo de la figura 16 se invoca debido a una
5 dependencia (por ejemplo, desde el bloque 1630 (bloque 1920) o 1650 (bloques 1720, 1750 ó 1745/1820) de una iteración anterior). Si no, el control pasa al bloque 1640 ó 1675 dependiendo de dónde el flujo se ha introducido (desde el bloque 163061605).
En el bloque 2010, se determina si el flujo fue llamado, debido a una suscripción adherente o situación declarada ascendente sin suscripción. Si no es asi, el control pasa al bloque 2015, de lo contrario, el control pasa al bloque 2020. El bloque 2010 se realiza mediante la verificación del parámetro del tipo de llamada de la Tabla 2 (es decir, si el tipo de llamada es de suscripción adherente o sin suscripción ascendente declarada o no). Con referencia a las realizaciones de la invención que se muestran en las figuras 18 y 19, si el nuevo comando del productor se invoca desde los bloques 1820 ó 1920.
En el bloque 2020, el productor padre actual está vinculado al productor descendiente lIamante. Con referencia a las realizaciones de la invención mostradas en las figuras 11C y 14C, el productor padre llamado (por ejemplo, el productor 1480) identificado por el parámetro desde la columna del productor llamado de la tabla 2 está relacionado en el grafo(s) del productor de la estructura de la figura 11C al productor descendiente que llama (por ejemplo, el productor 1475) identificado por el parámetro de la columna del productor llamado de la tabla 2, utilizando el modo de enlace y la determinación de la dependencia de referencia del productor identificado por el parámetro del modo de enlace y las columnas de referencia de los productores de determinación de la dependencia de la tabla 2. Si el padre existia anteriormente, el comportamiento del bloque 2020 imita el romportamiento de una dependencia de la suscripción de absorción en el sentido de que un solo argumento se puede asignar a cero o más productores
25 descendientes.
En el bloque 2015, el productor padre lIamante está relacionado con el productor descendiente llamado actual. Con referencia a la realización de la invención mostrada en la figura 11C, el productor padre lIamante identificado por el parámetro de la columna del productor lIamante de la tabla 2 está relacionado en el grafo(s) del productor de la estructura de la figura 11C para el productor descendiente llamado identificado por el parámetro de la columna del productor llamado de la tabla 2, utilizando la referencia del productor de determinación de la dependencia identificada por la columna del productor de referencia de determinación la dependencia de la tabla 2. Desde los bloques 2015 y 2020, el control pasa al bloque 1640 ó 1675 dependiendo de dónde se ha introducido el flujo (desde el bloque 1605 ó 1630).
35 La figura 21 es un diagrama de flujo para anular los productores de acuerdo con una realización de la invención. Con referencia a la figura 10, el flujo de la figura 21 se lleva a cabo por el módulo del productor anulado 1045 (o, tal como se ha descrito con referencia a realizaciones altemativas respecto a la figura 10, el módulo maneja la anulación y la anulación inversa).
En respuesta a un comando de anulación del productor (bloque 2110), el control pasa al bloque 2120. En el bloque 2120, un nuevo comando del productor se invoca para el productor identificado por el comando del productor de anulación y pasa el control al bloque 2130. El bloque 2120 se lleva a cabo en una realización de la invención en caso de que el productor sea anulado aún no haya creado una instancia, asi como para marcar el productor como
45 no ejecutado (bloque 1640 ó 1680) y registrarlo en el registro de inicio de ejecución (bloque 1665). Una realización altemativa de la invención que no permite la anulación de un productor que aún no está instanciado seria realizar una comprobación adicional entre los bloques 1605 y 1610 para determinar si este nuevo comando del productor llamado responde a un comando del productor de anulación, e indica un error si este nuevo comando del productor llamado responde a una orden del productor de anulación.
En el bloque 2130, la salida en el caché de salida del productor (como en la instancia, si un campo) se establece y el productor está marcado como anulado.
Comandos de ejecución globales
La figura 22A es una parte de un diagrama de flujo para la ejecución del grafo(s) del productor actual de acuerdo con una realización de la invención, mientras que la figura 228 es otra parte de un diagrama de flujo para la ejecución del grafo(s) del productor actual de acuerdo con una realización de la invención. Con referencia a la figura 10, el flujo de la figura 22 se lleva a cabo mediante el módulo de ejecución del grafo del productor 1070.
En respuesta a un comando de ejecución global, el bloque 2200 muestra que un conjunto de productores candidatos se selecciona para ser ejecutados sobre la base de los productores en el registro de inicio de ejecución y el control pasa al bloque 2205. En una realización de la invención, los productores anulados están marcados como no ejecutados y su ejecución devuelve su resultado anulado (en oposición a causar que su método sea ejecutado), el 65 conjunto actual de los productores candidatos son los productores en el registro de inicio de ejecución. Aunque una realización de la invención se ha descrito anteriormente en la que los productores anulados están marcados como
no ejecutados y su ejecución devuelve su resultado anulado (en oposición a causar que su método sea ejecutado), realizaciones altemativas pueden operar de forma diferente (por ejemplo, marcar los productores reemplazados como ejecutados y a la hora de seleccionar el conjunto actual de los proouctores candidatos, se seleccionan los productores independientes del registro de inicio de ejecución y los padres de los productores anulados en el
5 reg istro de inicio de ejecución).
En el bloque 2205, un subconjunto de productores listos para su ejecución se selecciona del conjunto de los productores candidatos y el control pasa al bloque 2210. Una forma de ejemplo de realización del bloque 2205 se describe más adelante en este documento.
En el bloque 2210, los productores del conjunto actual de los productores listos se ordenan por tipo -productores estándar van el bloque 2215 y los proouctores de determinación de la dependencia van al bloque 2225. En una realización de la invención, el bloque 2210 se realiza comprobando la clase de retorno del productor. Con referencia a las figuras 10 y 110, se accede a la estructura de seguimiento del método para determinar si la clase de salida del
15 productor es OEP, y por lo tanto, este productor es un productor de determinación de la dependencia.
En el bloque 2215, los productores estándar en el conjunto actual de los productores listos se ejecutan y el control pasa al bloque 2220. En una realización de la invención, el bloque 2215 se realiza llamando al método con cualquiera de los parámetros de entrada asignados desde las salidas de los productores descendientes que resultan en las dependencias de argumento (para los argumentos, el argumento ID del modo de enlace se utiliza para asignar la salida del productor adecuado del descendiente con el argumento de entrada adecuado del método que se está ejecutando). En algunas realizaciones de la invención, esta ejecución puede resultar en la ejecución de código en el método de un productor descendiente que escribe una salida en un mecanismo dado (tal como establecer una variable global, establecer un campo en una instancia que no es la salida del productor, impactar una
25 fuente de datos externa, etc.) o código en el método del productor padre que lee esa salida desde el mecanismo dado). En el bloque 2220, para esos padres, si los hay, que tienen una suscripción absorbente en cualquiera de estos productores ejecutados estándar, la suscripción se marca como incompleta. Desde el bloque 2220, el control pasa al bloque 2245. Con referencia a la figura 14A, la fila correspondiente de la columna completada 1420 se establece para indicar incompleta.
En el bloque 2225, los proouctores de determinación de la dependencia en el conjunto actual de los productores listos están preparados para su ejecución y el control pasa al bloque 2230. Una forma de ejemplo de realización del bloque 2225 se describe más adelante en este documento.
35 En el bloque 2230, cualquiera de los productores de determinación de la dependencia en el conjunto actual de los productores de listas se ejecuta y el control pasa al bloque 2235. En una realización de la invención, el bloque 2230 se realiza de manera similar al bloque 2215.
En el bloque 2235, un nuevo comando del productor es ejecutado por los productores descubiertos, y el registro de inscripción y se realiza el procesamiento de las suscripciones. La parte de comando del nuevo productor del bloque 2235 se realiza de forma similar al bloque 1750, mientras que el registro de suscripción y el procesamiento se realiza de manera similar a los bloques 1740 y 1745.
En el bloque 2240, se añade el conjunto de los productores de candidatos añadidos de nuevo en el registro de inicio
45 de ejecución. Desde el bloque 2240, el control pasa al bloque 2245. El bloque 2240 se realiza de manera similar al bloque 2200, excepto los únicos productores recién añadidos en el registro de inicio de ejecución como resultado de que los bloques 2230 y 2235 se añaden al conjunto de los productores candidatos.
En el bloque 2245, los productores que se han ejecutado se marcan como ejecutados, el caché de resultados de producción (y el almacenamiento en caché de instancia) se actualizan cuando sea necesario, cualquiera de los productores padre de los productores que se han ejecutado se añaden al conjunto actual de los productores candidatos, y los productores que fueron ejecutados se retiran del conjunto actual de candidatos y los productores listos. Desde el bloque 2245, el control pasa al bloque 2250.
55 En el bloque 2250, se determina si el conjunto de los productores candidatos está vacio. Si no, el control retorna al bloque 2205, de lo contrario, el control pasa al bloque 2255.
En el bloque 2255, se determina que todas las suscripciones se han completado. Si es asi, el control pasa al bloque 2265 donde el diagrama de flujo termina, de lo contrario, el control pasa al bloque 2260. Con referencia a la realizaCión de la invención en la figura 14A, la columna del tipo de suSCripción 1405 y la columna completa 1420 se escanean para cualquier suscripción absorbente que no está terminada.
En el bloque 2260, las suscripciones incompletas absorbentes son procesadas y el control pasa de nuevo al bloque 2205. Una forma de ejemplo de realización del bloque 2260 se describe más adelante en este documento.
La figura 23 es un diagrama de flujo para el bloque 2205 de la figura 22 de acuerdo con una realización de la
invención. Por lo tanto, el control fluye del bloque 2200 al bloque 2305 en el bloque 2205. En el bloque 2305, para cada productor en el conjunto de los productores candidatos, los siguientes bloques 2310-2325 se llevan a cabo.
En el bloque 2310, se determina si el productor tiene ninguna dependencia de suscripción absorbente que es
5 incompleta. Si es asi, el control pasa al bloque 2325, de lo contrario, el control pasa al bloque 2315. Con referencia a la realización de la figura 14A, la columna de la dave del productor del suscriptor 1400 y la columna del tipo de suscripción 1405 se analizan para una coincidencia para el productor actualmente seleccionado y el tipo de suscripción de absorción, y si se encuentra una coincidencia, la columna completada 1420 en la fila correspondiente se comprueba para determinar el estado de esa dependencia de suscripción absorbente.
En el bloque 2315, se determina si se ejecutan los productores en los que depende el productor seleccionado. Si no es asi, el control pasa al bloque 2325, de lo contrario, el control pasa al bloque 2320. Respecto a la realización de la invención que se muestra en la figura 1 1C, la columna de marcas de ejecución incrementales 1180 para las filas de las dependencias descendientes se comprueban para determinar el estado de ejecución de los descendientes del
15 productor seleccionado actualmente.
En el bloque 2320, el productor candidato actualmente seleccionado se añade al conjunto actual de los productores listos y el control pasa al bloque 2325.
En el bloque 2325, el flujo termina para la corriente producida seleccionada en el bloque 2305.
La figura 24 es un diagrama de flujo para el bloque 2225 de la figura 22 de acuerdo con una realización de la invención. Asi. el control fluye desde el bloque 2210 al bloque 2405 en el bloque 2225. En el bloque 2405, para cada productor de determinación de la dependencia, se realizan los siguientes bloques 2410-2430.
25 En el bloque 2410, se determina el tipo de las dependencias anteriores generadas por el productor de determinación de la dependencia seleccionado actualmente. Si el tipo de dependencia es sin suscripción, entonces el control pasa al bloque 2420, si el tipo es suSCripCión de absorción, entonces el control pasa al bloque 2415, mientras que, si el tipo es suscripción adherente, entonces el control pasa al bloque 2425. El bloque 2410 se determina comprobando la salida actual del productor almacenada en la memoria caché de salida del productor. Con referencia a la clase DEP, la salida se indicaría sin suscripción, suscripción de absorción, y suscripción adherente.
En ambos bloques 2415 y 2425, la entrada se elimina del registro de suscripción. Con referencia a la realización de la invención mostrada en las figuras 14A-C, se realiza lo siguiente: 1) para las suscripciones absorbentes (bloque
35 2415), el productor de determinación de la dependencia (por ejemplo, el productor 1455) se utiliza para determinar su productor padre (por ejemplo, el productor 1450) en el grafo(s) del productor, y luego el productor padres se busca en el registro de inscripción y se retira su entrada, y 2) para las suscripciones adherentes (bloque 2425), el productor de determinación de la dependencia (por ejemplo, el productor 1470) se busca en el registro de suscripción y su entrada es eliminada. Desde el bloque 2415, el control pasa al bloque 2420; desde el bloque 2425, el control pasa al bloque 2420.
En el bloque 2420, los vinculos seleccionados actualmente ya creados por el productor de determinación de la dependencia se borran del grafo(s) del productor y el control pasa al bloque 2430. Con referencia a la realización de la invención mostrada en la figura 11C, se realiza lo siguiente. Primero se determina si el productor de determinación
45 de la dependencia se ha "adherido" en un productor existente. Esto se hace mediante la exploración de la columna de enlaces del productor del productor descendiente de determinación de la dependencia en la figura 11C, y comprueba si uno de los enlaces tiene el indicador adherente que indica la adherencia.
Si el productor de determinación de la dependencia no se ha adherido en un productor existente, entonces: 1) para un productor de determinación de la dependencia que se ha producido de las dependencias declaradas descendentes sin suscripción (argumento, campo, o dependencias de la secuencia), el padre del productor de determinación de la dependencia se accede en el grafo de productor a través de la columna de referencia(s) del productor padre 1150 en la fila del productor de determinación de la dependencia actualmente seleccionado, y en esta entrada del productor padre, la columna de enlace(s) del productor descendiente 1160 se accede para coincidir 55 con la referencia de determinación de la dependencia del productor, y todas las referencias de los productores que tienen los descendientes que la referencia del productor de determinación de la dependencia se borran, 2) para un productor de determinación de la dependencia que se ha producido dependencias declaradas sin suscripción ascendentes, el padre del productor de determinación de la dependencia se accede en el grafo del productor a través de la columna de enlace(s) del productor padre 1150 en la fila del productor de determinación de la dependencia seleccionado en ese momento, y en esta entrada del prOductor padre, la columna de enlace(S) del productor padre 1150 se accede para que coincida con la determinación de la dependencia de referencia del productor, y todas las referencias de los productores que tienen los padres que la determinación de la dependencia de referencia del productor se borran, y 3) para un productor de determinación de la dependencia que ha producido una suscripción de absorción, se realiza el mismo comportamiento de dependencias declaradas sin suscripción 65 descendentes, y 4) para un productor de determinación de la dependencia que se ha producido una suscripción adherente, la determinación de la dependencia de referencia del productor se extrae de la columna 1421 del registro
de suscripción 14A antes de que la eliminación de la suscripción se busque en la estructura del grafo del productor en la columna de enlace(s) del productor padre 1150, y todas las referencias de los productores padre que tienen esa referencia de determinación de la dependencia del productor se borran.
5 Si el productor de determinación de la dependencia se ha adherido a un productor existente, como resultado de una dependencia declarada ascendente sin suscripción o una suscripción adherente, a continuación, se accede al productor descendiente al que el productor de determinación de la dependencia se ha adherido (el productor descendiente en la columna 1160 con un indicador de adherencia que indica la adherencia), y en esta entrada del productor descendiente, la columna de enlace(s) del productor padre 1150 se accede para coincidir con la referencia del productor de determinación de la dependencia, y todas las referencias de los productores padre que tienen esa referencia del productor de determinación de la dependencia se borran.
En el bloque 2430, el flujo termina para el productor de determinación de la dependencia seleccionado en el bloque 2405.
La figura 25 es un diagrama de flujo para el bloque 2260 de la figura 22 de acuerdo con una realización de la invención. Así, el control fluye desde el bloque 2255 al bloque 2505 en el bloque 2260. En el bloque 2505, para cada productor con una dependencia de absorción de suscripción incompleta, los siguientes bloques 2510-2525 se realizan.
En el bloque 2510, se determina si todos los productores coincidentes han sido ejecutados. Si es así, el control pasa al bloque 2515, de lo contrario, el control pasa al bloque 2525. Con referencia a las realizaciones de las figuras 11C y 14A, se accede a la columna de productores coincidente 1415 en la fila correspondiente para determinar los productores de comparación, y la columna de ejecución incremental 1180 en las filas apropiadas se comprueba para
25 cada uno de los productores coincidentes.
En el bloque 2515, la suscripción absorbente está marcada como completa y el control pasa al bloque 2520. Con referencia a las realizaciones de la figura 14A, la columna completa 1420 en la fila correspondiente se establece para indicar completa.
En el bloque 2520, el productor seleccionado en el bloque 2505 se añade al conjunto actual de los productores candidatos y el control pasa al bloque 2525.
En el bloque 2525, el flujo termina para el productor seleccionado en el bloque 2505.
Lenguajes de método
Tal como se indicó anteriormente, el lenguaje de método correctamente escrito, el lenguaje orientado a objetos no reflexivo, y el código de lenguaje no reflexivo basado en objetos, pueden ser transformados en código de lenguaje reflexivo orientado a objetos. A modo de ejemplo, una clase puede ser emulada a través de una estructura de datos y un conjunto de funciones estáticas que tengan como primer parámetro un puntero a una instancia de la estructura de datos. Entre estas funciones están el constructor y el destructor. Los constructores son invocados por el entomo de ejecución después de la asignación de un puntero a una estructura de datos y proporcionar valores predeterminados para los elementos de la estructura de datos, y los destructores son invocados por el entomo de 45 ejecución antes del lanzamiento de un puntero a la estructura de datos. Cada clase tiene su descripción a través de un fichero que incluye: 1) la estructura de datos, 2) otra estructura que describe la clase, manteniendo el tamaño de la estructura y un conjunto de punteros a funciones, 3) una lista de funciones estáticas, con su código (para los lenguajes orientados a objetos no reflexivos y lenguajes basados en objetos no reflexivos, el código de las funciones estáticas se generan de forma automática mediante la exploración de métodos de la clase real, y crear para cada método una función estática que realiza la invocación efectiva del método relacionado), y 4) anotaciones en la parte superior de cada función (declaraciones de dependencia del productor que soportan comentarios), junto con su tipo (constructor, destructor, propiedad, etc.). Además de esta definición de una clase en el lenguaje del método, no reflexivo orientado a objetos, o no reflexivo basado en objetos, la invocación dinámica también se implementa. En concreto, un compilador genera el código de inicialización para cada clase, código que se llama una vez (por el 55 módulo de clase nueva) para: 1) instanciar la estructura que describe la clase, llenar los punteros en funciones con las funciones estáticas efectivas, 2) registrar la instancia de esta estructura con un mapa de clases (la estructura de seguimiento de la clase) con una clave que corresponde al nombre de clase , y 3) registrar todos los punteros con funciones en un mapa de funciones (la estructura de seguimiento del método), con una clave correspondiente a la nombre de la función (junto con ArgumentDependencies, SequencingDependencies, FieldDependencies, upwardDependencies, WeaklyConstrainedDependencies, clave de salida de clase y anotaciones adiCionales). La asignación permite implementos en el entorno de ejecución de las funciones de invocación genérica capaces de: 1) instanciar una instancia de una clase por su nombre (por ejemplo, el módulo de instancia nueva) (en concreto, el entorno de ejecución: a) asigna la memoria en función del tamaño de la estructura de datos, y añade un encabezado al puntero para almacenar un puntero a la estructura que describe la clase, y por lo tanto, implementa punteros
65 inteligentes (por ejemplo, punteros que puedan consultar sus tipos), y b) invoca las funciones constructoras apropiadas después de la recuperación del correspondiente puntero en la función estática del mapa), y 2) invoca un método por el nombre previendo que todos los parámetros se pasan correctamente después de la recuperación del puntero correspondiente a la función estática del mapa. El paso correcto de los parámetros de las funciones señaladas por los punteros a las funciones se realiza a través del lenguaje ensamblador, empujando y haciendo estallar los elementos enfdesde la pila de los parámetros de entrada y de salida. El método descrito anteriormente
5 asume la existencia de la noción de las estructuras de datos y la existencia de la noción de punteros en funciones en el lenguaje del método, basado en objetos no reflexivo u orientado a objetos no reflexivo.
Sintaxis Código Fuente orientada a objetos de ejemplo
A. Código de cliente
En una realización de la invención, el código de cliente toma la siguiente sintaxis (que se muestra en forma de encabezado):
15 ProducerKey
New (String ClassKey, InstanceKey InstanceKey, String MethodKey); Runtime NewO AddProducerOflnterest (ProducerKey ProducerOflnterestKey);
SetProducerOutput (ProducerKey ProducerToOverndeKey, Object
ProducerOutpullnstance); Execute O; ProducerKey y Runtime son clases, mientras que New, AddProducerOflnterest, SetProducerOutput, y Execute son métodos. AddProducerOflnterest provoca la invocación del nuevo comando del productor con los valores apropiados para el productor de la situación de interés en la Tabla 2. ProducerOutpullnstance es una instancia de la clase de
25 salida del productor anulado. Asi pues, se instancia a través del constructor de la clase de salida del productor correspondiente.
B. Declaraciones
1. Sintaxis de la Declaración de Dependencia
argumentDependency = ~Argument1Dependency; Argument2Dependency;
fieldDependency =~FieldDependency1; FieldDependency2; ..~; sequencingDependency :
35 "SequencingDependencyl; SequencingDependency2; ...~; upwardDependency = ~UpwardDependencyl; UpwardDependency2; ..."; weeklyConstrainedDependency =
'WeeklyConstrainedDependency 1; WeeklyConstrainedDependency2; ... "; unConstrainedDependency = "unConstrainedDependency 1; unConstrainedDependency2;
2. Sintaxis de Dependencia
45 a. Sintaxis fieldDependencyX seguencingDependencyX upwardDependencyX weeklyConstrainedDependencyX unconstrainedDependencyX: # C: 'ClassKey'::# 1: 'InstanceKey'::# M: 'MethodKey'
b. Sintaxis araumentXDependency: ArgumentID::# C: 'ClassKey'::# 1: 'InstanceKey'::# M: 'MethodKey'
En una realización de la invención, el ArgumentlO se omite en la sintaxis, y el orden en que los argumentDependencies han declarado representa el ArgumentlD. El ArgumenllD se añade así para mejorar la legibi lidad.
55 3. Acceso directo y no acceso directo
La sintaxis es la misma que para un no acceso directo, pero el uso de # S : antes de la clave del productor indica un acceso directo.
a.
Sintaxis fieldDependencyX seguencingDependencyX upwardDependencyX weeklyConstrainedDependencyX la unConstrainedDependencyX: # S::# C: 'ClassKey'::# 1: 'InstanceKey'::# M: 'MethodKey'
b.
Sintaxis argumentXDependency: ArgumentID::# S::# C: 'ClassKey'::# 1: 'InstanceKey'::# M: 'MethodKey'
En este caso, la clave del productor indicada por la dependencia no es un productor determinación de dependencia.
Otras implementaciones de sintaxis pueden suponer que el acceso directo es la dependencia predeterminada para un tipo determinado de dependencia (tal como campo), y omitir el #S:: En ese caso, un # DDP puede utilizarse para
ind icar la presencia de un DDP.
4. Contingentes y no contingentes
Tal como ya se ha descrito, un <P> puede colocarse antes de un elemento contingente.
a. Ejemplo de clase y método contingente:
11 Sintaxis fieldDependencyX seguencingDependencyX weeklyConstrainedDependencyX unConstrainedDependencyX: # C: <P> 'ClassDeterminationMethodKey'::# 1: 'InstanceKey'::# M: <P> 'MethodDeterminationMethodKey' 2) Sintaxis argumentXDependency ArgumentID ::# C: <P> 'ClassDeterminationMethodKey'::# 1: 'InstanceKey'::# M: <P> 'MethodDeterminationMethodKey'
upwardDependencyX
b. Ejemplo de método contingente
11 Sintaxis fieldDependencyX seguencingDependencyX weeklyConstrainedDependencyX unConstrainedDependencvX: # C: 'ClassKey'::# 1: 'InstanceKey'::# M: <P> 'MethodDeterminationMethodKey' 2) Sintaxis argumentXDependency: ArgumentID ::# C: 'ClassKey': :# 1: 'InstanceKey'::# M: <P> 'MethodOeterminationMethodKey'
upwardDependencyX
c. Ejemplo de instancia contingentes
1) Sintaxis fieldOeoendencyX seguencingDependencyX weeklyConstrainedDependencyX unConstrainedDependencyX: # C: 'ClassKey'::# 1: <P> 'InstanceOeterminationMethodKey'::# M: 'MethodKey' 2) Sintaxis araumentXOependency ArgumentlO::# C: 'ClassKey'::# 1: <P> 'InstanceDeterminationMelhodKey' :# M: 'MethodKey'
upwardDependencyX
5. Técnica de abreviación
Los elementos tales como la clase, la instancia, o el método que se consideran que son idénticos a los elementos de los productores padre se omiten. Esto es típicamente el caso de los campos de acceso directo. Los ejemplos que figuran a continuación combinan la técnica de abreviación y una declaración de abreviación (el acceso directo se ilustra con un # S::)
a. Ejemplo en el gue se omiten la clase y la instancia
1) Sintaxis de fieldOependencyX, sequencingOependencyX, upwardOependencyX, weeklyConstrainedOependencyX, unConstrainedOependencyX: # S::# M: 'MethodKey' 2) Sintaxis de aroumentXOependency: ArgumentID ::# S::# M: 'MethodKey'
b. Ejemplo en el gue la clase se omite
11 Sintaxis de fieldDependencyX sequencingDependencyX upwardDependencyX weeklyConstrainedOependencyX unConstrainedOependencyX: # S::# 1: 'InstanceKey'::# M: 'MethodKey' 2) Sintaxis de argumentXOependency: ArgumentlD::# S::# 1: 'InstanceKey'::# M: 'MethodKey'
Realizaciones alternativas
Aunque los diagramas de flujo en las figuras muestran un orden particular de las operaciones realizadas por ciertas realizaciones de la invención, debe entenderse que tal orden es de ejemplo (por ejemplo, realizaciones altemativas pueden realizar las operaciones en un orden diferente, combinar ciertas operaciones, superponer ciertas operaciones, etc.).
Aunque la invención ha sido descrita en términos de varias realizaciones, los expertos en la materia reconocerán que la invención no se limita a las realizaciones descritas, ya se puede practicar con modificaciones y alteraciones
5 dentro del alcance de las reivindicaciones adjuntas. La descripción, por lo tanto, debe ser considerada como ilustrativa en lugar de limitativa. Varios ejemplos se indican en los siguientes párrafos numerados (NPs).
NP1 . Aparato para la ejecución de un código orientado a objetos, comprendiendo dicho aparato
un entorno de ejecución (355, 360, 1004) que interpreta las declaraciones de dependencia de los productores (320, 1016) para métodos en el código orientado a objetos, identificando dichas declaraciones de dependencia de los productores en un entorno de ejecución un conjunto de cero o más productores, donde un productor (110) es una construcción instanciable de un entomo de ejecución, que incluye al menos una instancia particular ( 108) y un
15 método (104) asociados con esa instancia (108), incluyendo el entorno de ejecución un módulo de generación automatizada de grafos del productor (340, 365, 1040) para recibir una designación de un productor de interés (325, 1025), para añadir el productor de interés como parte de un grafo del productor, y para generar automáticamente un resto del grafo del productor a través de la vinculación, e instanciación si es necesario, de otros productores sobre la base de las declaraciones de dependencia de los productores de los métodos de los productores que ya están en el grafo del productor; y un módulo de ejecución del grafo del productor (345, 370, 1070) para ejecutar los productores en el grafo del productor en el orden indicado por el grafo del productor, donde la ejecución de cada productor resulta en el método del productor que se ejecuta en la instancia del productor.
NP2. Aparato según el NP1, donde dicho módulo de generación automatizada del grafo del productor inicialmente
25 puede no ser capaz de completar la generación del grafo del productor hasta que algunos productores del grafo del productor se ejecutan, y donde dicho módulo de ejecución del grafo del productor puede invocar el módulo de generación automatizada del grafo del productor con las salidas de los productores necesarias durante la ejecución del grafo del productor para completar el resto no resuelto del grafo del productor.
NP3. Aparato según el NP1, donde el conjunto de productores que serón identificados en el entorno de ejecución mediante por lo menos una de dichas declaraciones de dependencia de los productores (106) incluye al menos un productor que se ejecuta antes de la ejecución del productor (112) que incluye el método de esa declaración de dependencia de los productores.
35 NP4. Aparato según el NP1, donde dicho grafo del productor representa una secuencia adecuada de ejecución identificada por las declaraciones de dependencia de los productores de los métodos de los productores en el grafo del productor.
NP5. Aparato según el NP1, donde el conjunto de productores que serón identificados en el entorno de ejecución mediante por lo menos una de dichas declaraciones de dependencia de los productores (106) para un determinado método incluye al menos un productor (112) con una salida que es una entrada directa para el método dado.
NP6. Aparato según el NP1, donde el grafo del productor representa la entrada directa a las dependencias de salida de los productores entre si desde el productor de interés a aquellos de los productores que son nodos de extremo
45 del grafo del productor.
NP7. Aparato según el NP1 , donde el entorno de ejecución también comprende:
un módulo de salida del productor de anulación (390, 1045) para recibir las modificaciones actuales a la salida de una o más de los productores de una versión actual del grafo del productor: una estructura del grafo del productor (380, 1060), acoplada al módulo de generación automática del grafo del productor, para almacenar la versión actual del grafo del productor y la salida actual de cada uno de los productores en el grafo del productor actual; y dicho módulo de ejecución del grafo del productor, acoplado al módulo de salida del productor de anulación y la estructura del grafo del productor, para realizar las modificaciones actuales, para realizar el seguimiento de los
55 productores en la versión actual del grafo del productor necesita ejecutarse porque están afectados indirectamente por cualquiera de las modificaciones actuales, y para ejecutar sólo los productores de la versión actual del grafo del productor que actualmente deben ser ejecutados para mantener la consistencia 65 de la versión actual del grafo del productor.
NP8. Aparato según el NP7, donde la estructura del grafo del prOductor también comprende:
una estructura de marcado de ejecución incremental (382, 1080) para ayudar al módulo de ejecución del grafo del productor con el seguimiento de los productores de la versión actual del grafo del productor que deben volverse a ejecutar, debido a cualquier modificación actual.
NP9. Aparato según el NP7, que también comprende: un registro de anulación (396, 1047), acoplado al módulo de salida del productor de anulación y al módulo de ejecución del grafo del productor, para recoger múltiples pasos para el procesamiento por lotes.
NP10. Aparato según el NP7, donde el módulo de salida del productor de anulación es también para recibir 5 indicaciones de que una o más salidas anuladas deben dejar de estar anuladas (1030).
NP11. Aparato según el NP1 , donde el entomo de ejecución también comprende:
un registro de comandos (665), acoplado al módulo de generación automática del grafo del productor, para recoger 10 múltiples comandos juntos para el procesamiento por lotes.
NP12. Aparato según el NP1, donde cada método del productor (112) es un método (104) de una clase (102) de esa instancia del productor (108).
15 NP13. Aparato según el NP12, donde las declaraciones de dependencia de los productores (106) son parte de las definiciones de clase (102) para las clases en el código orientado a objetos (100).
NP14. Aparato según el NP1 , donde cualquier método puede tener una de dichas declaraciones de dependencia de los productores.
20 NP15. Aparato según el NP1, donde el entorno de ejecución reemplaza la necesidad de un código de secuenciación de invocación manual, y donde el método de cada uno de los productores es un método de transformación y el entorno de ejecución descubre la secuenciación de estos métodos de transformación a partir de las declaraciones de dependencia de los productores.
25 NP16. Aparato según el NP1, donde los nodos de extremo del grafo del productor son productores independientes (PRODUCTOR 3).
NP17. Aparato según el NP1 , donde el entomo de ejecución también comprende:
una estructura de seguimiento de instancias (1065), acoplada al módulo de generación automática del grafo del productor y el módulo de ejecución del grafo del productor, para almacenar las referencias a las instancias de los productores; y una estructura de seguimiento del método (1058), acoplada al módulo de generación automática del grafo del productor y al módulo de ejecución del grafo del productor, para almacenar las referencias a los métodos
35 de los productores e información respecto a sus declaraciones de dependencia de los productores.
NP18. Aparato según el NP17, donde el entorno de ejecución también comprende: un módulo de instancia nuevas (1098), acoplado a dicha estructura de seguimiento de instancias, para recibir la designación de y para instanciar, si es necesario, el productor seleccionado actualmente de interés; una estructura
40 de seguimiento de clases (1092) para seguir las referencias a clases; y un módulo de clase nuevas (1095), acoplado a la estructura de seguimiento de las clases, para cargar y para la introspección de las definiciones de clase.
NP19. Aparato según el NP1 , donde el entomo de ejecución también comprende:
45 un módulo de visualización del grafo del productor (1062) para mostrar gráficamente una representación del grafo del productor actual.
NP2Q. Aparato según el NP1 , donde el entomo de ejecución también comprende:
50 un módulo de interfaz de usuario gráfica de disposición de salida del productor interactivo configurable (1085) para mostrar gráficamente las salidas desde y permitir la interacción con el grafo del productor.
NP21. Aparato según el NP1, donde el módulo de ejecución del grafo del productor incluye:
55 una módulo de dependencias dinámicas (1075) para resolver cualquier dependencia dinámica de los productores, donde cada declaración de dependencia de los productores puede inclu ir una dependencia 65 dinámica del productor, donde las dependencias dinámicas de los productores hacen que el entorno de ejecución seleccione dinámicamente el conjunto de cero o más productores que la declaración de dependencia del productor identifica durante el entorno de ejecución, y donde la selección dinámica puede causar la selección de diferentes productores
60 para el conjunto durante diferentes ejeCUCiOnes del grafo del productor.
NP22. Aparato según el NP21, donde las dependencias dinámicas de los productores incluyen dependencias contingentes de los productores, donde dependencias contingentes de los productores son dependencias de los productores de determinación de la dependencia (DDP6) que son en só mismos dependientes de la salida de uno o
65 más de los otros productores (S9).
NP23. Aparato según el NP21, donde las dependencias dinámicas de productores incluyen suscripciones, donde las suscripciones identifican criterios (1410) mediante los cuales los productores se comparan para determinar si son productores de activación, donde suscripciones identifican dependencias en productores de activación.
5 NP24. Aparato según el NP23, donde algunas de dichas suscripciones son suscripciones absorbentes, donde las suscripciones absorbentes hacen que el entorno de ejecuciÓn induya dinámicamente alguno de los productores de activación (1460) en el conjunto de cero o más productores que la declaración de dependencia del productor identifica durante el entorno de ejecución.
NP25. Aparato según el NP23, donde algunas de dichas suscripciones son suscripciones adherentes, donde las suscripciones adherentes también identifican las caracteristicas (1425, 1430, 1435) para los productores padre, y donde las suscripciones adherentes hacen que el entorno de ejecución, para cada productor de activaciÓn (1475) localizado, instancien un productor padre (1480) que cumple con las caracteristicas identificadas y lo incluye en el grafo del productor que tiene una dependencia del productor en ese productor de activación.
NP26. Aparato según el NP1, donde alguno de los cero o más productores son productores de determinación de dependencia (765) cuya ejecución devuelve las identificaciones de las dependencias de productores entre si.
NP27. Aparato según el NP26, donde la ejecución de algunos de los productores de determinación de la dependencia (772) devuelven las dependencias declaradas ascendentes.
NP28. Aparato según el NP1, donde al menos algunas de las dependencias representadas por el grafo del productor se designan como dependencias de argumento y dependencias de campo (705), donde las dependencias de argumento hacen que el entomo de ejecución asigne las salidas de los productores hijo (725) como parámetros de
25 entrada a los productores padre (720), y donde dependencias de campo indican usos de los campos de instancias.
NP29. Aparato según el NP1, donde al menos algunas de las dependencias representadas por el grafo del productor se designan como dependencias sOlo de secuenciación (705), donde las dependencias sólo de secuenciación requieren salidas que necesitan proporcionarse, en su caso, a partir de los productores hijo (746) a los productores padre (720) se producen a través del código en el método del productor descendiente para escribir la salida en un mecanismo dado y el código en el método del productor padre para leer esa salida a partir del mecanismo dado.
NP30. Aparato según el NP1, donde las claves del método (1190) se utilizan para distinguir los métodos, las claves de instancia (1120) se utilizan para distinguir las instancias, y las claves de los productores se utilizan para distinguir 35 los productores, donde la clave de los productores para cada productor se basa en al menos la clave de instancia y la dave del método de esa instancia del productor y el método.
NP31 . Aparato según el NP30, donde las instancias son instancias de una pluralidad de clases, donde las claves de clase (1090, 1110) se utilizan para distinguir dicha pluralidad de clases, y donde la clave del productor para cada productor se basa también en la clave de clase de la clase de esa instancia del productor.
NP32. Aparato según el NP30, donde la clave de instancia de al menos algunos productores contiene una referencia a la instancia del productor.
45 NP33. Aparato según el NP1, donde al menos algunas de dichas declaraciones de dependencia de los productores incluyen dependencias declaradas ascendentes (705).
NP34. Aparato según el NP1, donde al menos algunas de dichas declaraciones de dependencia de los productores incluyen dependencias dedaradas descendentes (705).
NP35. Aparato según el NP1 , donde al menos algunas de dichas declaraciones de dependencia de los productores incluyen dependencias declaradas ascendentes y descendentes (705).
NP36. Aparato según el NP1, donde dicho módulo de generación automatizada del grafo del productor es sensible a 55 los nuevos comandos de los productores (1025), y donde dicho módulo de ejecución del grafo del productor es sensible a ejecutar comandos (1035).
NP37. Un aparato para la ejecución de código orientado a objetos, comprendiendo dicho aparato:
un entomo de ejeCuCión (355, 360, 1004) que interpreta las declaraciones de dependenCias del productor (320, 1016) para los métodos en el código orientado a objetos, identificando dichas declaraciones de dependenCias del productor en un entorno de ejecución un conjunto de cero o más productores, cuando un productor (110) es un constructo instanciable de entomo de ejecución que incluye al menos una instancia (108) y un método (104) asociado con esa instanCia, donde el método de cada productor es un método de una clase (102) de esa instancia 65 del productor, donde las declaraciones de dependencias del productor (106) son parte de las definiciones de clase para las clases en el código orientado a objetos, y donde al menos algunas de dichas declaraciones de
dependencias del productor incluyen dependencias declaradas hacia abajo (705), incluyendo el entorno de ejecución, un módulo automatizado productor de generación de grafos (340, 365, 1040) para recibir una designación de un productor de interés, para añadir el productor de interés (325, 1025) como parle de un grafo de productores actual, y
5 para generar automáticamente un resto de la grafos productores actuales a través de vinculación , y creación de instancias como sea necesario, de otros productores sobre la base de las declaraciones de dependencias del productor de los métodos de los productores que ya están en el grafo de productores actual, una estructura de grafos de productores (380, 1060), acoplada al módulo de generación automatizada de grafos de productores, para el grafo de productores actual y una salida de corriente de cada uno de los productores en el grafo de productores actual, donde las claves del método (1190) se utilizan para distinguir el métodos, las claves de instancia (1120) se utilizan para distinguir los casos, y las claves de productores se utilizan para distinguir los productores, y donde la clave del productor para un productor determinado se basa en al menos la clave de instancia y la clave de método de instancia de ese productor y método; y un módulo de ejecución de grafos de productores (345, 370, 1070), acoplado a la estructura de grafos de productores, para ejecutar los productores del
15 grafo de productores actual en el orden indicado por el grafo de productores actual, donde el grafo de productores actual representa una secuencia apropiada de la ejecución identificada por las declaraciones de dependencias del productor de los métodos de los productores en el grafo de productores actual, y en la ejecución de cada uno de los resultados de productores en el método de producción que se está ejecutando en la instancia del productor, incluyendo dicho módulo de ejecución de grafos de productores, un módulo de dependencias dinámicas (1075) para resolver las dependencias del productor dinámicas, donde cada declaración de dependencias del productor puede incluir una dependencia del productor dinámico, donde las dependencias de productores dinámicas hacen que el entomo de ejecución seleccione dinámicamente el conjunto de cero o más productores, y la declaración de dependencias del productor se define durante el entomo de ejecución, donde la selección dinámica puede causar la selección de diferentes productores para el conjunto durante
25 las diferentes ejecuciones de los grafos de productores actual, donde las dependencias dinámicas del productor incluyen dependencias del productor contingentes, y donde las dependencias del productor contingentes son dependencias de los productores de determinación de dependencia (DDP6) que son en si mismos dependientes de la salida de uno o más de otros productores (S9).
NP38. El aparato de NP37, donde el entorno de ejecución comprende además:
un módulo visor de grafos de productores (1062) para mostrar gráficamente una representación del grafo de productores actual.
35 NP39. El aparato de NP37, donde el entomo de ejecución comprende además:
un módulo configurable interactivo de distribución de salidas del productor de la interfaz gráfica de usuario (1085) para mostrar gráficamente las salidas desde y pennitir la interacción con el grafo de productores actual.
NP40. El aparato de NP37, donde las dependencias dinámicas del productor incluye las suscripciones, donde las suscripciones identifican criterios (1410), mediante los cuales los productores se comparan para determinar si son productores de disparo, donde las suscripciones identifican las dependencias de productores de disparo.
NP41. El aparato de NP40, donde algunas de dichas suscripciones son suscripciones absorbentes, donde las
45 suscripciones absorbentes hacen que el entorno de ejecución incluya dinámicamente cualesquiera productores de disparo (1460) en el conjunto de cero o más productores de declaración de dependencias del productor identificados durante el entomo de ejecución.
NP42. El aparato de NP40, donde algunas de dichas suscripciones son suscripciones adherentes, donde suscripciones adherentes también identifican caracteristicas (1425, 1430, 1435) para los productores padre, y en donde las suscripciones adhesivas provocan el entomo de ejecución, para cada productor de disparo (1475) ubicado, a instancias de un productor padre (1480) de acuerdo con las caracteristicas identificadas y lo incluye en el grafo de productores actual.
55 NP43. El aparato de NP37, donde algunos de los productores son productores de detenninación de dependencia
(772) cuya ejecución devuelve identificaciones de las dependencias de los productores entre si.
NP44. El aparato de NP43, donde la ejecución de algunos de los productores de determinación de dependencia
(772) devuelve dependencias declaradas hacia arriba.
NP45. El aparato de NP37, donde al menos algunas de las declaraciones de dependencias del productor incluyen uno o más de una dependencia de argumento y una dependencia de campo (705), donde las dependencias de argumento hacen que el entomo de ejecución asigne salidas de productores hijo (725) como parámetros de entrada a los productores padre (720), y donde el campo de dependencias indica usos de los campos de instancias.
NP46. El aparato de NP37, donde las claves de clase (1090, 1110) se utilizan para distinguir las clases, y donde la
clave del productor para cada productor también se basa en la clave de clase de la dase de instancia de ese productor.
NP47. El aparato de NP37, donde la clave de instancia de al menos algunos productores contiene una referencia a la instancia del productor.
NP48. El aparato de NP37, donde dicho módulo de generación automatizada de grafos de productores recibe múltiples denominaciones de productores de interés y genera automáticamente múltiples grafos de productores actuales, y donde dicho módulo de ejecución de grafos de productores responde para ejecutar comandos globales (1035) que cada hace que se ejecuten todos los grafos de productor actuales.
NP49. Método para la ejecución de código orientado a objetos, comprendiendo dicho método:
instanciar un productor con una salida que es actualmente de interés (645), donde el código orientado a objetos incluye métodos (104) y declaraciones de dependencia de los productores (106), donde la declaración de dependencia del productor de un determinado método identifica un conjunto de cero o más productores, donde un productor (110) es una construcción de entorno de ejecución instanciable, que incluye al menos una instancia (108) y un método asociado con esa instancia; sensible a dicha instancia, añadir el productor de interés como parte de un grafo del productor actual (645); tratar de generar automáticamente un resto del grafo actual del productor a través de la vinculación y la instanciación como sea necesario, de otros productores sobre la base de las dedaraciones de dependencia de los productores de los métodos de productores que ya están en el grafo actual del proouctor. y ejecutar los productores en el grafo actual del proouctor para determinar la salida actual para dicho productor de interés (660).
NP50. Método según NP49, donde dicho intento de generación automática también comprende:
tratar de descubrir y construir de forma automática, a partir de declaraciones de dependencia de los productores en dicho código orientado a objetos, el gráfica actual del productor que representa las relaciones de la entrada a la salida directa de los productores necesarios para generar un valor actual del conjunto de una o más entradas al productor de interés, dOnde una salida actual de cada uno de los productores en el grafo del productor actual es una entrada directa a otro o más de los productores en el grafo del productor actual y/o el productor de interés.
NP51. Método según NP49, donde dicha ejecución de los productores en el grafo del productor actual también comprende: generar automáticamente partes adicionales del grafo del productor actual a través de la ejecución de algunos de los productores del grafo del productor actual que devuelven las identificaciones de las dependencias de otros productores en cada uno para ser añad ido al gráfica del productor actual.
NP52. Método según NP49, donde dicha ejecución incluye:
resolver cualesqu iera dependencias dinámicas de los productores (665), donde cada declaración de dependencia de los productores puede incluir una dependencia dinámica del productor, donde las dependencias dinámicas de los productores hacen que el entorno de ejecución seleccione dinámicamente el conjunto de cero o más proouctores que la declaración de dependencia del productor identifica durante el entorno de ejecución.
NP53. Método según NP52, donde las dependencias dinámicas de los productores incluyen dependencias contingentes de los productores, donde las dependencias contingentes de los productores son dependencias de los productores de determinación de la dependencia (OOP6) que por si mismos son dependientes de la salida de uno o más de los otros productores (89).
NP54. Método según NP52, donde las dependencias de los productores dinámicos incluyen suscripciones, donde las suscripciones identifican criterios (1410) mediante los cuales los productores se comparan para determinar si son productores de activaci6n, donde las suscripciones identifican las dependencias de los productores de activación.
NP55. Método según NP54, donde algunas de dichas suscripciones son suscripciones absorbentes, donde las suscripciones absorbentes provocan la inclusión dinámica de cualesquiera productores de activación (1460) en el conjunto de cero o más productores que identifica la declaración de dependencia del productor.
NP56. Método segun NP54, donde algunas de dichas suscripciones son suscripciones adherentes, donde las suscripciones adherentes también identifican las caracteristicas (1425, 1430, 1435) para los productores padre, y donde las suscripciones adherentes provocan, para cada uno de los productores de activación (1475) localizados, la instanciación de un productor padre (1480) que cumple con las características identificadas y la inclusión del mismo en el grafo actual del productor que tiene una dependencia del productor sobre ese productor de activación.
NP57. Método segun NP49, donde dicho intento de generación automática también comprende: instanciar cualquier instancia de los productores que aún no han sido instanciadas (645, 1560), e instanciar los productores que aún no han sido instanciados (645, 1625).
NP58. Método según NP49, donde dicho intento de generación automática también comprende:
cargar cualesquiera clases de las instancias de los productores que aún no han sido cargados (1540), y realizar la introspección de las definiciones de clase de las clases en las que aún no han sido realizada la introspección (1550), incluyendo las declaraciones de dependencia de los productores contenidas en la misma.
NP59. Método según NP58, donde dicho intento de generación automática incluye:
descubrir y construir en el grafo del productor actual uno de los productores para los que la clase de la instancia identificada por el productor ya se ha cargado y se ha realizado la introspección antes de dicho intento (1530), la instancia del productor ya se ha de instanciado antes de dicho intento (1520), y el productor ya fue instanciado antes de dicho intento (1605).
NP60. Método según NP49, que también comprende:
mostrar gráficamente una representación del grafo del productor actual.
NP61. Método según NP49, que también comprende:
mostrar gráficamente las salidas desde y permitir la interacción con el grafo del productor actual.
NP62. Método según NP49, que también comprende:
almacenar una salida actual de los productores del grafo actual del productor; anular la salida actual de uno o más de los productores del grafo del productor actual (625), y volver a ejecutar, de acuerdo con el grafo actual del productor y la anulación y la salida almacenada actual de aquellos de los productores que no están directamente o indirectamente afectados por dicha anulación, sólo aquellos de dichos productores que se ven afectados, directa o indirectamente, por dicha anulación para determinar su salida actual (660).
NP63. Método según NP62, donde aquellos de dichos productores que se ven afectados no son todos los productores en el grafo actual del productor.
NP64. Método según NP62 que también comprende:
invertir la anulación (1690); y volver a ejecutar, de acuerdo al grafo actual del productor, y anulación inversa y la salida almacenada actual de aquellos de los productores que no están directamente o indirectamente afectados por dicha anulación inversa (660), sólo aquellos de los productores que se ven afectados, directa o indirectamente, por dicha anulación inversa para determinar su salida actual.
NP65. Método según NP49, donde al menos algunas de las dependencias declaradas por las declaraciones de dependencia de los productores son designadas como dependencias de argumento y dependencias de campo (705), donde las dependencias de argumento causan la asignación de las salidas de los productores hijo (725) como parámetros de entrada a los productores padre (720), y donde las dependencias de campo indican los usos de los campos de las instancias.
NP66. Método según NP49, donde al menos algunas de las dependencias declaradas por las declaraciones de dependencia de los productores son designadas como dependencias sólo de secuenciación (705), donde las dependencias sólo de secuenciación requieren salidas que necesitan ser proporcionadas, en su caso, desde productores hijo (746) a los productores padre (720) que se producen a lravós de código en el método del productor descendiente para escribir la salida a un mecanismo dado y el código en el método del productor padre para leer esa salida desde el mecanismo dado.
NP67. Método según NP49, donde las claves del método (1190) se utilizan para distinguir los métodos, las claves de instancia (1120) se utilizan para distinguir las instancias, y las claves de los productores se utilizan para distinguir los productores, donde la clave del productor para un productor dado se basa en por lo menos la clave de la instancia y la clave del método de la instancia y el método del productor.
NP68. Método según NP67, donde las instancias son instancias de una pluralidad de clases, donde las claves de clase (1090, 1110) se utilizan para distinguir dicha pluralidad de clases, y donde la clave del productor para cada productor se basa también en la clave de clase de la clase de la instancia de ese productor.
NP69. Método según NP67, donde la clave de instancia de al menos algunos de los productores mantiene una referencia a la instancia del productor.
NP70. Método según NP49, donde al menos algunas de dichas declaraciones de dependencia de los productores incluyen dependencias dedaradas ascendentes (705).
NP71. Método según NP49, donde al menos algunas de dichas declaraciones de dependencia de los productores incluyen dependencias dedaradas descendentes (705).
NP72. Método según NP49, donde al menos algunas de dichas declaraciones de dependencia de los productores incluyen dependencias declaradas ascendentes y descendentes (705).
NP73. Método según NP49, donde dicha instancia se realiza sensible a un nuevo comando del productor (1025) y dicha ejecución se realiza sensible a un comando de ejecución global (1035).
NP74. Un método para la ejecución de código orientado a objetos, comprend iendo dicho método:
recibir una indicación de un productor de interés (615, S1), donde un productor (110) es una construcción instanciable de entorno de ejecución que incluye al menos una instancia (108) y un método (104) asociado con esa instancia; generar automáticamente y ejecutar un grafo de productores en base a dicho productor de interés y al productor de declaraciones de dependencias para los métodos (645), donde dicho grafo de productores incluye un subgrafo de destino (S1 , S2, S3, 84, S7, S8) que incluye dicho productor de interés y una pluralidad de niveles de otros productores, incluyendo dicha generación y ejecución realizar de manera iterativa lo siguiente hasta que se alcancen los productores de fuentes (S7, S8) de forma automática, descubrir, construir y ejecutar un subgrafo de decisión de productores (DDP1) basado en el establecimiento de declaraciones de dependencias del productor del método de uno de los productores en el subgrafo de destino (S1), Y añadir a dicho subgrafo de destino un conjunto de uno o más de los otros productores devueltos por dicho subgrafo de decisión (S2), y ejecutar los productores en el subgrafo de destino secuenciado como se indica por el subgrafo de destino (660), donde la ejecución de cada uno de los resultados de los productores en el método del productor se est6 ejecutando en la instancia del productor.
NP75. El método de NP74, donde al menos un productor (S10) es parte del sUbgrafo de destino y de uno de los subgrafos de decisión.
NP76. El método de NP74, donde un primero de los subgrafos de decisión incluye una raíz que es un productor de determinación de dependencia (DDP6) e incluye nodos, por lo menos algunos de los cuales son productores normalizados (S9) .
NP77. El método de NP74, donde el subgrafo de destino tiene una raíz que es un productor estándar (S1).
NP78. El método de NP74, donde al menos uno de los subgrafos de decisión devuelve una suscripción.
NP79. El método de NP78, donde la suscripción es una suscripción absorbente que indica la absorción de los criterios de suscripción (1410) para los productores de disparo (1460).
NP80. El método de NP78, donde la suscripción es una suscripción adherente (DDP9) que indica los criterios de suscripción adherente (1410) para los productores de disparo (1475) y las caracteristicas de suscripción adherente (1425, 1430, 1435) para un productor padre (1480) que se creará.
NP81. El método de NP74, donde al menos uno de los subgrafos de decisión devuelve una dependencia del productor declarada hacia arriba (DDP4).
NP82. El método de NP74, donde al menos algunas de las instrucciones de declaración de dependencias del productor identifican uno o más de una dependencia de argumento y una dependencia de campo (705), donde las dependencias de argumentos hacen la asignación de las salidas de productores hijo (725) como parámetros de entrada para los productores padre (720), y donde las dependencias de campo indican usos de los campos de instancias.
NP83. El método de NP74, donde las claves de método (1190) se utilizan para distinguir los métodos, claves de instancia (1120) se utilizan para distinguir los casos, y las claves de productores se utilizan para distinguir los productores, donde la clave del productor para cada productor se basa en al menos la dave de instancia y la tecla de método de instancia y el método de ese productor.
NP84. El método de NP83, donde las instancias son instancias de una pluralidad de clases, donde las claves de clase (1090, 1110) se utilizan para distinguir dicha pluralidad de clases, y donde la clave del productor para cada productor se basa también en la clave de clase de la clase de instancia de ese productor.
NP85. El método de NP83, donde la clave de instancia de al menos algunos productores contiene una referencia a la instancia del productor.
NP86. El método de la NP74, que comprende además:
mostrar gráficamente una representación del grafo de productores.
NP87. El método de NP74, que comprende además:
mostrar gráficamente salidas desde y pennitiendo la interacción con el grafo de productores.
NP88. El método de NP74, que comprende además:
la recepción de un comando de ejecución después de que dicho recibir la indicación del productor de interés y antes de dicha generación automática y la ejecución.
NP89. Un aparato para la ejecución de código orientado a objetos, comprendiendo dicho aparato:
un entorno de ejecución (355, 360, 1(04) para generar automáticamente y ejecutar un grafo de productor sobre la base de un productor de interés (325) y declaraciones de dependencias del productor para métodos (320), donde un productor (110) es una construcción instanciable de entorno de ejecución que incluye al menos una instancia (108) y un método (104) asociado con esa instancia, incluyendo dicho entorno de ejecución los siguientes módulos iterativamente relacionados, un módulo de generación de grafos de productor automatizado (340, 365, 1040) para recibir una designación de dicho productor de interés (325), para agregar dicho productor de interés a un subgrafo de destino (81) de dicho grafo de productores, y generar automáticamente una pluralidad de los niveles de otros productores (82, 87, S8) en dicho sUbgrafo de destino a través de descubrir de forma automática y construir subgrafos de decisión (DOP1, ODP 10) en base a las instrucciones de declaraciones de dependencia de productores de los métodos de los productores actualmente en el subgrafo de destino, y un módulo de ejeCUCiÓn de grafos de productores (345, 370, 1070) para ejecutar los productores en el grafo de productores, donde la ejecución de cada productor resulta en el método del productor que se está ejecutando en la instancia del productor, y donde la ejecución de cada uno de una pluralidad de los subgrafos de decisión añade al menos otro productor a dicho subgrafo de destino.
NP90. El aparato de NP89, donde al menos un productor (S 10) es parte de tanto el subgrafo de destino y de uno de los subgrafos de toma.
NP91. El aparato de NP89, donde un primero de los sUbgrafos de decisión incluye una raíz que es un productor de determinación de dependencia (OOP6) e incluye los nodos de por lo menos algunos de los que son productores nonnalizados (S9) .
NP92. El aparato de NP89, donde el sUbgrafo de destino tiene una raiz que es un productor normalizado (S1).
NP93. El aparato de NP89, donde al menos uno de los subgrafos de decisión devuelve una suscripción.
NP94. El aparato de NP93, donde la suscripción es una suscripción absorbente que indica la absorción de los criterios de suscripción (1410) para los productores de disparo (1460).
NP95. El aparato de NP93, donde la suscripción es una suscripción adherente que indica los criterios de suscripción adherente (1410) para los productores de disparo (1475) y las características de suscripción adherente (1425,1430, 1435) para ser creado un productor padre (1480 ).
NP96. El aparato de NP89, donde al menos uno de la pluralidad de subgrafos de decisión devuelve una dependencia del productor declarada hacia arriba (DDP4).
NP97. El aparato de NP89, donde al menos algunas de las instrucciones de declaración de dependencia del productor identifican una o más de una dependencia de argumento y una dependencia del campo (705) , donde las dependencias de argumentos hacen que el mapeo de las salidas de productores hijo (725) como parámetros de entrada para los productores padre (720), y donde las dependencias de campo indican usos de los campos de instancias.
NP98. El aparato de NP89, donde las claves de método (1190) se utilizan para distinguir los métodos, claves de instancia (1120) se utilizan para distinguir los casos, y las claves de productores se utilizan para distinguir los productores, donde la clave del productor para cada productor se basa en al menos la clave de instancia y la clave de método de instancia y el método de ese productor.
NP99. El aparato de NP98, donde las instancias son instancias de una pluralidad de clases, donde las claves de clase (1090, 1110) se utilizan para distinguir dicha pluralidad de clases, y donde la clave del productor para cada productor se basa también en la clave de clase de la clase de instancia de ese productor.
NP100. El aparato de NP98, donde la clave de instancia de al menos algunos productores contiene una referencia a la instancia del productor.
NP101. El aparato de NP89, donde el entorno de ejecución comprende además:
un módulo visor de grafos de productores (1062) para mostrar gráficamente una representación del grafo de productores actual.
NP102. El aparato de NP89, donde el entorno de ejecución comprende además:
un módulo de interfaz de usuario gráfica de distribución de salida del productor configurable interactivo (1085) para mostrar gráficamente las salidas desde y permitir la interacción con el grafo de productores.
NP103. El aparato de NP89, donde dicho módulo de generación automatizada de grafos de productores es sensible a los nuevos comandos de productores (1025), y donde dicho módulo de ejecución de grafos de productores es sensible a ejecutar comandos (1035).
NP104. Un medio de almacenamiento de máqUina que proporciona código orientado a objetos incluyendo: una pluralidad de definiciones de clase (102) incluyendo cada una, un conjunto de uno o más campos, un conjunto de uno o más métodos (104), y una declaración de dependencias del productor (106) para cada uno de dicho conjunto de métodos, donde la declaración de dependencias del productor para uno dado de dichos métodos se utiliza en entomo de ejecución para identificar un conjunto de cero o más productores, donde un productor (110) es una construcción de entamo de ejecución instanciable que incluye al menos una instancia (108) de una de la pluralidad de clases en entorno de ejecución y un método de esa clase; y donde un primer productor (PRODUCTOR 5) tiene una dependencia del productor contingente de la siguiente manera, un primer método (1340) de dichos conjuntos de métodos es un método de propiedad, un segundo método (1315) de dichos conjuntos de métodos tiene una declaración de dependencias del productor de declaración (1325) que identifica un productor de bienes (PRODUCTOR CX :: 12 :: GAMMA) en base a dicho método de propiedad, y tiene el código (1330) para seleccionar entre un segundo (PRODUCTOR 7A) Y tercer productor (PRODUCTOR 7B) sobre la base de la salida de dicho productor de propiedad, y un tercer método (1305) de dichos conjuntos de métodos tiene una instrucción de declaración de dependencia del productor (1300) que identifica un productor de determinación de dependencia (PRODUCTOR CW :: IY :: BETA) en base a dicho segundo método, donde dicho primer productor se basa en dicho tercer método y tiene una dependencia del productor (1390) donde dicho segundo y tercer productor del productor de determinación de dependencias actualmente está volviendo.
NP105 El medio de almacenamiento de la máquina de NP104, donde:
Un cuarto productor (1405, 1480) tiene una dependencia de suscripción en un productor de disparo (1460. 1475) de la siguiente manera, un cuarto método de dichos conjuntos de métodos, donde dicho cuarto productor se basa en dicho cuarto método, un quinto método de dichos conjuntos de métodos que tiene un código que indica un conjunto de criterios de suscripción (1410) para los productores de disparo, donde un productor de suscripción (1455, 1470) se basa en dicho quinto método, y un sexto método de dichos conjuntos de métodos, donde dicho productor de disparo se basa en dicho sexto método y se crea dicha dependencia de suscripción porque dicho productor de disparo cumple dicho conjunto de criterios de suscripción.
NP106. El medio de almacenamiento de la máquina de NP105, donde dicho conjunto de criterios de suscripción está absorbiendo criterios de suscripción, y donde dicho cuarto método tiene una declaración de dependencia del productor que identifica dicho productor de suscripción (1455).
NP107. El medio de almacenamiento de la máquina de NP105, en que dicho conjunto de criterios de suscripción es un criterio de suscripción adherente, donde dicho quinto método también incluye un códígo que indica un conjunto de características de suscripción adherente (1425. 1430, 1435) para los productores padres. en la que, dicho productor de disparo (1475) reune dichos criterios de suscripción adherente, y en donde dicho cuarto productor (1480) se encuentra con dicha características de suscripción adherente y se crean instancias como resultado de dicha dependencia de suscripción .
NP108. El medio de almacenamiento de la máqUina de NP104, donde al menos una de dichas declaraciones de dependencias del productor incluye una dependencia de argumento fuertemente restringida (705).
NP109. El medio de almacenamiento de la máqUina de NP104, donde al menos una de dichas declaraciones de dependencias del productor incluye una dependencia del campo fuertemente restringida (705).
NP110. El medio de almacenamiento de la máquina de NP104, donde:
un cuarlo productor (748) tiene una dependencia del productor en el quinto productor (720) de la siguiente manera, un cuarlo método de dichos conjuntos de métodos, donde dicho cuarto productor se basa en dicho cuarto método, un quinto método de dichos conjuntos de métodos que tiene código que declara hacia arriba una dependencia del productor, y un sexto método de dichos conjuntos de métodos que tiene una declaración de dependencias del productor que identifica un productor de determinación de dependencias (772) basado en dicho quinto método, donde dicho quinto productor está basado en dicho sexto método y tiene una dependencia del productor sobre dicho productor de determinación de dependencias que devuelve la dependencia del productor del cuarto productor en el quinto productor.
NP111. El medio de almacenamiento de la máquina de NP104, donde las claves de método (1190) se utilizan para distinguir dichos conjuntos de métodos, claves de instancia (1120) se utilizan para distinguir los casos de dicha pluralidad de definiciones de clases, y las claves de productores se utilizan para distinguir los productores, donde la clave del productor para cada productor se basa en al menos la clave de instancia y la clave de método de instancia y el método de ese productor.
NP112. El medio de almacenamiento de la máquina de NP111 , donde las claves de clase (1090, 1110) se utilizan para distinguir dicha plural idad de clases, y donde la clave del productor para cada productor también se basa en la clave de clase de la clase de que el productor de instancia.
NP113. El medio de almacenamiento de la máquina de NP111, donde la clave de instancia de al menos algunos productores contiene una referencia a la instancia del productor.
NP114 Un medio de almacenamiento de la máquina que proporciona código orientado a objetos incluyendo:
un programa que tiene una pluralidad de definiciones de dase (102) incluyendo cada una, un conjunto de uno o más campos, un conjunto de uno o más métodos (104), y una declaración dependencia del productor (106) para cada uno de dicho conjunto de métodos, donde la declaración de dependencias del productor para uno detenTIinado de dichos métodos se utiliza en un entorno de ejecución para identificar un conjunto de cero o más productores, donde un productor (110) es una construcción instanciable de entorno de ejecución que incluye al menos una instancia
(108) de una de la pluralidad de clases en entorno de ejecución y un método de esa clase; y donde el método de cada uno de los productores es un método de transformación y el programa no incluye cód igo de secuenciación de invocación manual, pero en su lugar se basa en un entorno de ejecución (355, 360, 1004) para descubrir automáticamente la secuenciación para los métodos de transformación de las declaraciones de dependencias del productor.
NP115. El medio de almacenamiento de la máquina de NP114, donde al menos algunas de dichas declaraciones de dependencias del productor incluyen una dependencia del productor dinámica (1300), donde las dependencias del productor dinámicas causan que el conjunto de cero o más productores sea seleccionado dinámicamente durante el entorno de ejecución.
NP116. El medio de almacenamiento de la máquina de NP115, donde las dependencias del productor dinámicas incluyen dependencias del productor contingentes, donde las dependencias del productor contingente son dependencias de los productores de determinación de dependencia (OOP6) que sí son dependientes de la salida de uno o más productores (59).
NP117. El medio de almacenamiento de la máquina de NP115, donde las dependencias dinámicas del productor incluyen las suscripciones, donde las suscripciones identifican criterios (1 410) por los cuales los productores se comparan para determinar si son productores de disparo, donde las suscripciones se identifican las dependencias de productores de disparo.
NP118. El medio de almacenamiento de la máquina de NP117, donde algunas de dichas suscripciones estón absorbiendo las suscripciones, donde las suscripciones absorbentes causan inclusión dinámica de los productores de disparo (1460) en el conjunto de cero o más productores que identifica la declaración de dependencia de los productores.
NP119. El medio de almacenamiento de la máquina de NP117, donde algunas de dichas suscripciones son suscripciones adherentes, en donde las suSCripCiones adherentes también identifican características (1425, 1430, 1435) para los productores padres, y en donde suscripciones adherentes causan, para cada productor de disparo (1475) situado, la creación de instancias de un productor padre (1480) que cumple las características y la inclusión del mismo en un grafo de productores identificados como de una dependencia del productor de ese productor de disparo.
NP120. El medio de almacenamiento de la máquina de NP114, donde al menos algunas de las dependencias declaradas por las declaraciones de dependencias del productor se designan como dependencias de argumentos y dependencias de campo (705), donde las dependencias de argumentos hacen que el mapeo de las salidas de productores hijo (725) como parámetros de entrada a los productores padre (720), y donde las dependencias de campo indican usos de los campos de instancias.
NP121. El medio de almacenamiento de la máqUina de NPl14, donde las claves de método (1190) se utilizan para distinguir los métodos, las claves de instancia (1120) se utilizan para distinguir los casos, y las claves de productores se utilizan para distinguir los productores, donde la clave del productor para un productor determinado se basa en al menos la clave de instancia y la clave de método de instancia y el método de ese productor.
NP122. El medio de almacenamiento de la máqUina NP121, donde las claves de clase (1090,1110) se utilizan para distinguir dicha pluralidad de clases, y donde la clave del productor para cada productor también se basa en la clave de clase de la clase de instancia del productor.
NP123. El medio de almacenamiento de la máquina de NP121, donde la clave de instancia de al menos algunos productores contiene una referencia a la instancia del productor.
NP124. El medio de almacenamiento de la máqUina de NP, 114, donde al menos algunas de dichas declaraciones de dependencias del productor incluyen dependencias declaradas hacia arriba (705).
NP125. Un medio de almacenamiento de la máqUina que tiene almacenado en el mismo:
un conjunto de una o más instancias (108, 1052) de un conjunto de una o más clases (102), donde cada clase incluye métodos (104) y declaraciones de dependencias del productor (106) para los métodos, donde cada uno del conjunto de instancias está asociado con todos los métodos de su clase, y donde las declaraciones de dependencias del productor identifican en entomo de ejecución un conjunto de una o más dependencias entre los productores (110); una estructura de grafos de productores (380, 1060) que tiene almacenado en el mismo, una pluralidad de productores que cada uno es una construcción de una instancia en entomo de ejecución y que incluye sólo uno de dicho conjunto de instancias y sólo uno de los métodos asociados con esa instancia, una pluralidad de enlaces (1160) que representa un grafo de nivel móltiple de la pluralidad de productores, donde la pluralidad de enlaces representan las dependencias entre los productores en el grafo de productores identificados por las declaraciones de dependencias del productor para los métodos incluidos en la pluralidad de los productores, una clave de productor para cada uno de dicha pluralidad de productores, donde cada clave de productor se basa en al menos una clave de instancia (1120) y una clave de método (1190) que identifican el uno de dicho conjunto de instancias y el uno de los métodos asociados con esa instancia, y una salida corriente (1170) de cada uno de la pluralidad de los productores en el grafo de productores; y una estructura de seguimiento de instancia (1065) que tiene almacenado en él una correspondencia entre las tedas de instancia y el conjunto de instancias.
NP126. El medio de almacenamiento de la máqUina de NP125, donde dicha estructura de grafos de productores representa una secuencia adecuada de la ejecución, señalada por las declaraciones de dependencias del productor de los métodos de los productores en el grafo de productores.
NP127. El medio de almacenamiento de la máqUina de NP125, donde la estructura de grafos de productores representa la entrada directa a las dependencias de salida de los productores sobre cada otro de un productor de interés a los de los productores que son nodos extremos del grafo de productores.
NP128. El medio de almacenamiento de la máquina de NP125, donde al menos algunas de las dependencias representadas por la estructura de grafos de productores se designan como dependencias de argumentos y dependencias de campo (705, 1160), donde las dependencias de argumentos hacen que el entamo de ejecución al mapa salidas de productores hijo (725) como parámetros de entrada a los productores padre (720), y donde las dependencias de campo indican usos de los campos de instancias.
NP129. El medio de almacenamiento de la máquina de NP125, donde al menos algunas de las dependencias representadas por la estructura de grafos de productores se designan como secuenciando sólo dependencias (705, 1160), donde la secuenciación sólo de dependencias requieren salidas que necesitan ser proporcionadas, si hubiere, de los productores hijos (746) a los productores padre (720) se producen a través del código en el método del productor hijo para escribir la salida a un mecanismo determinado y el código en el método del productor padre para leer esa salida desde el mecanismo determinado.
NP130. El medio de almacenamiento de la máquina de NP125, donde la estructura de grafos de productores incluye además:
anular las modificaciones de salida de producción (1170) que almacenan para cada una de dicha pluralidad de productores una indicación de si ese productor se anula y el valor de salida se anula.
NP131. El medio de almacenamiento de la máquina de NP125 adicional que tiene almacenado en el mismo:
un conjunto de definiciones de clases (1010) escrito en el código orientado a objetos para el conjunto de clases en que cada una de las declaraciones de dependencias del productor (1016) incluye una declaraciones de dependencias del productor ubicadas junto a las de los métodos para los que es.
NP132. El medio de almacenamiento de la máquina de NP125, donde la clave de instancia de al menos algunos productores contiene una referencia a la instancia del productor.
NP133. El medio de almacenamiento de la máquina de NP125, en el que cada clave de productor está también al menos basada en una clave de clase (1 110) que identifica la clase de la instancia del productor.
NP134. El medio de almacenamiento de la máquina de NP133 adicional que tiene almacenado en el mismo:
una representación de la pluralidad de clases de carga y la introspección durante el entamo de ejecución (1054), dicha representación incluyendo los resu ltados de la introspección de los métodos y de las declaraciones de dependencias del productor (1056); una estructura de seguimiento de clases (1092) que tiene almacenada en la misma una correspondencia entre claves de clase y la representación del conjunto de clases; y una estructura de seguimiento de métodos (1058) que tiene almacenada en la misma una correspondencia entre claves de métodos y los resultados de la introspección de los métodos, asó como información con respecto a los resultados de la introspección de las declaraciones de dependencias del productor.
NP135. Un medio de almacenamiento de la máquina que tiene almacenado en el mismo:
un código fuente orientado a objetos (100, 1002, 820) incluyendo código de cliente (824), dicho código de cliente, incluyendo, un comando de instancias de productor que tiene una clave de productor (1025) (824A) para un productor de interés, y que provoca un entamo de ejeCUCión (360, 1004, 810) para el código orientado a Objetos para descubrir de forma automática, construir, y, opcionalmente, resolver un grafo de productores actual a partir del productor de interés y que tiene múltiples niveles de los productores descubiertos, donde cada uno de los productores (110) es una construcción instanciable de entorno de ejecución que incluye al menos una instancia
(108) y un método (104) asociado con esa instancia, donde el entorno de ejecución crea una instancia de oficio ninguno de los productores de los grafos de productores actuales que aún no se crean instancias, donde las claves de producción se utilizan para distingu ir los productores, donde las claves de método (1190) se utilizan para distinguir los métodos, en claves de instancia (1120) se utilizan para distinguir las instancias, y donde la clave del productor para cada productor se basa en al menos la clave de instancia y la clave de método de instancia y el método del productor; ejecutar comandos (1035, 824C) que cada uno causa que el entorno de ejecución para código orientado a objetos ejecute el grafo de productores actual y almacene en memoria cachó una salida de corriente para cada uno de los productores ejecutados en el grafo de productores actual; y comandos de anulación de salidas del productor (1030,8248) que cada uno tiene una clave de productor y un valor de reemplazo, y que cada uno hacen que el entorno de ejecución de código orientado a objetos para anular la salida del productor designado por la clave del productor con el valor de reemplazo.
NP136. El medio de almacenamiento de máqUina de NP135, donde el cliente de ejecución incluye además:
comandos de anulación de la salida del productor (1030) que cada uno tiene la clave de productor de uno de los productores que se ha anulado y que cada uno causa el entorno de ejecución para el código orientado a objetos para anular la salida de ese productor.
NP137. El medio de almacenamiento de máquina de NP135, donde el comando de instancias del productor es un nuevo comando del productor (1600), y donde la salida del productor anula los comandos son conjuntos de comandos (8248).
NP138. El medio de almacenamiento de máquina de NP135, donde la relación de causalidad del comando de instancias del productor y los comandos de anulación de salida del productor es indirecta a través de un registro
(665) mantenido por el entorno de ejecución de código orientado a objetos.
NP139. El medio de almacenamiento de máquina de NP135, donde el primero de los comandos se ejecutan provoca una ejeCuciÓn inicial y de cada uno posterior de los comandos de ejeCUCiÓn causando una ejecución incremental.
NP140. El medio de almacenamiento de máquina de NP135, donde el cliente de ejecución incluye además:
un comando de instanciación de instancias (1025) que tiene la clave de instancia del productor de interés, y que hace que el entamo de ejecución de código orientado a objetos cree una instancia de la instancia del productor de interés.
NP141. El medio de almacenamiento de máquina de NP135, donde cada conjunto de uno o más de los comandos de anulación de salidas del productor es seguido por uno de los comandos que se ejecutan.
NP142. El medio de almacenamiento de máquina de NP135, donde las daves de clase (1090, 1110) se utilizan para distinguir una pluralidad de clases de las cuales las instancias son instancias, y donde la clave del productor para cada productor también se basa en la clave de clase de la clase de instancia de ese productor.
NP143. El medio de almacenamiento de máquina de NP142, donde el comando de instanciación de instancias hace que el entomo de ejecución de código o rientado a objetos cree una instancia del productor de interés mediante el acceso a la clase de los productores a través de una estructura de seguimiento de clases (1092), utilizando la clave de clase de la clave del productor del comando de instancias del productor, accediendo a la instancia del productor a través de una estructura de seguimiento de instancias (1065) usando la clave de instancia de la clave del productor del comando de instancias del productor, y accediendo a una declaración de dependencias del productor del método del productor a través de una estructura de seguimiento de métodos (1058) usando la clave de método de la clave de productor del comando de instancias del productor.
NP144. El medio de almacenamiento de máquina de NP135, donde la clave de instancia de al menos algunos productores contiene una referencia a la instancia del productor.
NP145. El medio de almacenamiento de máquina de NP135, donde dicho código de cliente incluye además:
comandos de instanciación de productor adicionales que hacen que el entomo de ejecución de código orientado a objetos descubra de forma automática, construya, y, opdonalmente, resuelva otros grafos de productores actuales, donde cada uno de dichos comandos de ejecución hacen que dicho entorno de ejecución de código orientado a objetos ejecute todos los grafos de productores actuales.
NP146. El medio de almacenamiento de máquina NP135, donde dicho código fuente orientado a objetos también incluye las definiciones de clase (102,1010,824), donde dichas definiciones de clase incluyen la lógica de negocio expresada en métodos con las deciaraciones de dependencias del productor.
NP147. El medio de almacenamiento de máquina NP146, donde las declaraciones de dependencias del productor definen la relación entre los productores durante la definición de las clases que incluyen la lógica de negocio, en lugar de después de crear las instancias de dichas clases.
NP148. Un método para la distribución de salidas de productor, comprendiendo dicho método:
mostrar una lista que incluye las ciases, con sus métodos de obtención de propiedad (852), de los productores (110) en un grafo de productores y de esas salidas de los productores, donde dicho grafo de productores se genera automáticamente y es ejecutado sobre la base de un productor de interés (325, 1025) Y declaraciones de dependencias del productor (320, 1016) para los métodos de clases, donde un productor es una construcción instanciable del entorno de ejecución que inciuye al menos una clase, una instancia (108) de esa clase, y un método
(104) de dicha clase que se asocia con esa instancia, en las declaraciones de dependencias del productor de los métodos de los productores en el grafo de productores, cada uno identificando un conjunto de cero o más de los otros productores en el grafo de productores, donde dicho grafo de productores incluye dicho productor de interés y una pluralidad de niveles de otros productores; visualizar de una hoja de cálculo que tiene celdas (854); recibir las asignaciones (856, 866) de una pluralidad de métodos de obtención de propiedades que se muestran de un conjunto de una o más de las clases que se muestran en las celdas de la hoja de cálculo; y poblar al menos las celdas de dichas asignaciones con las salidas de los métodos de obtención de propiedades correspondientes de un conjunto de una o más instancias (858, 868).
NP149. El método de NP148, que comprende además:
recibir un valor para una de las celdas automáticamente pobladas (860, 870, 625); anular la salida del productor cuya salida está poblando actualmente esa celda con dicho valor (860, 870, 650); ejecutar al menos de forma incremental el grafo de productores y la actualización de las celdas de dicha asignación cuando sea necesario (860, 870,660).
NP150. El método de NP148, donde dicha población comprende además:
recibir una indicación de selección del conjunto de una o más instancias (854).
NP151. El método de NP150, donde dicha recepción de una indicación de la selección del conjunto de una o más instancias incluye la recepción de al menos una indicación de una clave de instancia de una de la serie de instancias.
NP152. El método de NP148, donde dicha población comprende además:
recibir una indicación de selección de una de una pluralidad de filtros para ser aplicados para seleccionar instancias que son de por lo menos un primero de dicho conjunto de clases mostradas (858), donde cada uno de dicha pluralidad de filtros permite la selección de una manera diferente.
NP153. El método de NP152, donde dicha población comprende además:
antes de dicha recepción de la indicación de selección de una de la pluralidad de filtros, recibir una asignación de dicha primera clase (PERSONA) en una de las celdas de la hoja de cálculo.
NP154. El método de NP153, donde dicha recepción de la indicación de selección de una de la pluralidad de filtros se realiza a través de la celda de la hoja de cálculo a la que se asigllÓ dicha primera clase (858).
NP155. El método de NP154, donde dicha población comprende además:
después de dicha recepción de la indicación de selección de una de la pluralidad de filtros, recibir una indicación de selección de una de las instancias de la primera clase utilizando el filtro seleccionado a través de la celda de la hoja de cálculo para la que se asignó dicha primera clase (854).
NP156. El método de NP155, donde dicha recepción de la indicación de selección de una de las instancias de la primera clase comprende además:
recibir una indicación de la clave de instancia del uno del conjunto de instancias.
NP157. El método de NP148, donde dicha población comprende además:
recibir una indicación de una zona de la definición de una tabla (864), donde dicha tabla incluye una pluralidad de filas y columnas de celdas de la hoja de cálculo; donde dicha recepción de asignaciones (866) se realiza en un grupo de celdas en un borde de la tabla; poblar el grupo de celdas en el borde con las salidas de los métodos de obtención de propiedades correspondientes de una primera instancia de una primera de dicho conjunto de clases mostradas (868); y poblar iterativamente cada grupo adyacente de celdas que tienen una misma orientación hasta que se alcanza el borde opuesto de la tabla con las salidas de los métodos de obtención de propiedades correspondientes de otra instancia de dicha primera clase (868).
NP158. El método de NP148, donde al menos una de las declaraciones de dependencias del productor incluye una dependencia del productor dinámico (1300), donde las dependencias det productor dinámico causan una selección dinámica del conjunto de cero o más productores de la declaración de dependencias del productor identificado durante el entomo de ejecución.
NP159. El método de NP158, donde la dependencia dinámica del productor es una dependencia del productor contingente, donde las dependencias del productor contingentes son dependencias de los productores de determinación de dependencia (DDP6) que son en sí mismos dependientes de la salida de uno o más de otros productores (S9).
NP160. El método de NP158, donde el productor dinámico devuelve una suscripción.
NP161. El método de NP160, donde la suscripción es una suscripción absorbente que indica la absorción de los criterios de suscripción (1410) para los productores de disparo (1460 ).
NP162. El método de NP160, donde la suscripción es una suscripción adherente que indica los criterios de suscripción adherente (1410) para los productores de disparo (1475) y las caracteristicas de suscripción adherente (1425, 1430, 1435) para el productor padre (1480) a crear.
NP163. El método de NP148, donde al menos algunas de las declaraciones de dependencias del productor identifican una o más de una dependencia de argumentos y una dependencia de campo (705) , donde las dependencias de argumentos hacen que la asignación de las salidas de los productores hijo (725) como parámetros de entrada a los productores padre (720), y donde las dependencias de campo indican usos de los campos de instancias.
NP164. El método de NP148, donde las claves de clase (1090, 1110) se utilizan para distinguir las clases, dichas claves de método (1190) se utilizan para distinguir los métodos, las claves de instancia (1120) se utilizan para distinguir las instancias, y las claves de productores se utilizan para distinguir los productores, donde la clave del productor para cada productor se basa en al menos la clave de clase, la clave de instancia, y la clave de método de esa clase de productor, instancia y método.
NP165. El método de NP164, donde la dave de instancia de al menos algunos productores contiene una referencia a la instancia del productor.

Claims (11)

  1. REIVINDICACIONES
    1 Un sistema para la sustitución de salidas, comprendiendo el sistema:
    un procesador; un medio de almacenamiento de máquina, acoplado al procesador, que tiene almacenado en el mismo un CÓdigo orientado a objetos que incluye CÓdigo de cliente que tiene comandos a ejecutar mediante el procesador, incluyendo dicho código de cliente,
    un comando de instanciación de productor que tiene una clave de productor para un productor de interés y que causa un entorno de ejecución de código orientado a objetos para automáticamente, en base a las declaraciones de dependencia del productor, descubrir, construir, y, opcionalmente, resolver un grafo de productores a partir del productor de interés, donde cada uno de los productores en el grafo de productores es una construcción instanciada de entorno de ejecución, donde cada productor se instancia a partir de la respectiva combinación de una instancia particular de una clase y un método particular de esa clase e identifica dicha instancia particular y dicho método particular, donde el método identificado por cada productor tiene asociada con el mismo una declaraciÓn de dependencias del productor que identifica el entorno de ejecución de un conjunto de cero o más productores, donde el entorno de ejecución instancia automáticamente alguno de los productores del grafo de productores que aun no se ha instanciado, donde las claves de productores se utilizan para distinguir los productores, donde las claves de método se utilizan para distinguir los métodos, donde las claves de instancias se utilizan para distinguir las instancias, y donde la clave de productor para cada uno de los productores se basa en al menos la clave de instancia y la clave del método de la instancia y del método identificado por ese productor; ejecutar comandos, haciendo cada uno que el entorno de ejecución para el CÓdigo orientado a objetos ejecute el grafo de productores y guarde en caché una salida actual para cada uno de los productores ejecutados en el grafo de productores; y ejecutar comandos de sustitución de salidas del productor, que cada uno tiene una clave de productor y un valor de sustituciÓn y cada uno hace que el entorno de ejecución para el código orientado a objetos sustituya la salida del productor designada por la clave de productor con el valor de sustitución.
  2. 2.
    El sistema de la reivindicación 1, donde el CÓdigo de cliente también incluye:
    comandos de sustitución de la salida del productor, que cada uno tiene uno la clave de productor de los productores que han sido sustituidos y que cada uno hace que el entorno de ejecuciÓn para el código orientado a objetos sustituya a la salida sustituida de ese productor.
  3. 3.
    El sistema de cualquiera de las reivindicaciones 1 a 2, donde la causa del comando de instanciaciÓn del productor y los comandos de sustitución de las salidas del productor es indirecta a través del uso de un registro de comandos guardado por el entorno de ejecución para el código orientado a objetos.
  4. 4.
    El sistema de cualquiera de las reivindicaciones 1 a 3, donde el primero de los comandos de ejecución provoca una ejecución inicial y cada uno posterior de los comandos de ejecución provoca una ejecución incremental.
  5. 5.
    El sistema de cualquiera de las reivindicaciones 1 a 4, donde el código de cliente también incluye:
    un comando de instanciación de instancias que tiene la clave de instancia del productor de interés yeso hace que el entorno de ejecución de código orientado a objetos instancie la instancia identificada por el productor de interés.
  6. 6.
    El sistema de cualquiera de las reivindicaciones 1 a 5, donde un conjunto de uno o más de los comandos de sustituciÓn de salidas del productor es seguido por uno de los comandos que se ejecutan dicho código de cliente.
  7. 7.
    El sistema de cualquiera de las reivindicaciones 1 a 6, donde claves de clase se utilizan para distinguir una pluralidad de clases, cuyas instancias son instancias, y donde la clave de productor para cada uno de los productores también se basa en la clave de clase de la clase de la instancia identificada por ese productor.
  8. 8.
    El sistema de la reivindicación 7, donde el comando de instanciación del productor hace que el entorno de ejecución para código orientado a objetos para instanciar el productor de interés accediendo a la clase de la instancia identificada por el productor de interés a través de una estructura de seguimiento de clase utilizando la clase de clave de la clave del productor del comando de instanciación del productor, accediendo a la instancia identificada por el productor de interés a través de una estructura de seguimiento de instancia utilizando la clave de instancia de la clave del productor del comando de instanciación del productor, y accediendo a la declaración de dependencia del productor del método identificado por el productor de interés a través de una estructura de seguimiento de métodos usando la clave de método de la clave del productor del comando de instanciación del productor.
  9. 9.
    El sistema de cualquiera de las reivindicaciones 1 a 8, donde la clave de instanciación de al menos algunos de los productores mantiene una referencia a la instancia identificada mediante ese productor.
  10. 10.
    El sistema de cualquiera de las reivindicaciones 1 a 9, donde dicho código de cliente también incluye:
    comandos de instanciación del productor adicionales que hacen que el entorno de ejecución de código orientado a
    5 objetos automáticamente descubra, construya, y opcionalmente resuelva otros grafos de productores, donde cada uno de dichos comandos de ejecución hacen que dicho entorno de ejecución de código orientado a objetos ejecute todos los grafos de productor.
    11 El sistema de cualquiera de las reivindicaciones 1 a 10, donde dicho código orientado a objetos incluye
    10 definiciones de clases, donde dichas definiciones de clases incluyen métodos con las declaraciones de dependencias del productor.
  11. 12. El sistema de la reivindicación 11, donde las declaraciones de dependencias del productor definen los vinculos
    entre los productores como parte de la definición de las clases, más que en el momento de instanciación de las 15 instancias de esas clases.
ES11167918.9T 2006-12-01 2007-12-03 Salidas de sustitución en un sistema de programación y ejecución orientado por grafos de productor Active ES2497573T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US633098 2006-12-01
US11/633,098 US8191052B2 (en) 2006-12-01 2006-12-01 Producer graph oriented programming and execution

Publications (1)

Publication Number Publication Date
ES2497573T3 true ES2497573T3 (es) 2014-09-23

Family

ID=39350968

Family Applications (3)

Application Number Title Priority Date Filing Date
ES11167913.0T Active ES2471394T3 (es) 2006-12-01 2007-12-03 Programación y ejecución orientadas por gráficos de productor
ES11167918.9T Active ES2497573T3 (es) 2006-12-01 2007-12-03 Salidas de sustitución en un sistema de programación y ejecución orientado por grafos de productor
ES07254672T Active ES2381373T3 (es) 2006-12-01 2007-12-03 Programación y ejecución orientadas por gráficos de productor

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES11167913.0T Active ES2471394T3 (es) 2006-12-01 2007-12-03 Programación y ejecución orientadas por gráficos de productor

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES07254672T Active ES2381373T3 (es) 2006-12-01 2007-12-03 Programación y ejecución orientadas por gráficos de productor

Country Status (10)

Country Link
US (5) US8191052B2 (es)
EP (3) EP2365435B1 (es)
JP (1) JP5354602B2 (es)
CN (1) CN101617292B (es)
AT (1) ATE546775T1 (es)
BR (1) BRPI0719730A2 (es)
ES (3) ES2471394T3 (es)
HK (1) HK1139216A1 (es)
RU (1) RU2445682C2 (es)
WO (1) WO2008064901A2 (es)

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9715678B2 (en) 2003-06-26 2017-07-25 Microsoft Technology Licensing, Llc Side-by-side shared calendars
US8799808B2 (en) 2003-07-01 2014-08-05 Microsoft Corporation Adaptive multi-line view user interface
US7707255B2 (en) 2003-07-01 2010-04-27 Microsoft Corporation Automatic grouping of electronic mail
US7895531B2 (en) * 2004-08-16 2011-02-22 Microsoft Corporation Floating command object
US9015621B2 (en) 2004-08-16 2015-04-21 Microsoft Technology Licensing, Llc Command user interface for displaying multiple sections of software functionality controls
US8146016B2 (en) 2004-08-16 2012-03-27 Microsoft Corporation User interface for displaying a gallery of formatting options applicable to a selected object
US8117542B2 (en) 2004-08-16 2012-02-14 Microsoft Corporation User interface for displaying selectable software functionality controls that are contextually relevant to a selected object
US7703036B2 (en) 2004-08-16 2010-04-20 Microsoft Corporation User interface for displaying selectable software functionality controls that are relevant to a selected object
US8255828B2 (en) 2004-08-16 2012-08-28 Microsoft Corporation Command user interface for displaying selectable software functionality controls
US7747966B2 (en) 2004-09-30 2010-06-29 Microsoft Corporation User interface for providing task management and calendar information
US8239882B2 (en) 2005-08-30 2012-08-07 Microsoft Corporation Markup based extensibility for user interfaces
US8689137B2 (en) 2005-09-07 2014-04-01 Microsoft Corporation Command user interface for displaying selectable functionality controls in a database application
US9542667B2 (en) 2005-09-09 2017-01-10 Microsoft Technology Licensing, Llc Navigating messages within a thread
US8627222B2 (en) 2005-09-12 2014-01-07 Microsoft Corporation Expanded search and find user interface
US8605090B2 (en) 2006-06-01 2013-12-10 Microsoft Corporation Modifying and formatting a chart using pictorially provided chart elements
US9727989B2 (en) 2006-06-01 2017-08-08 Microsoft Technology Licensing, Llc Modifying and formatting a chart using pictorially provided chart elements
US8307337B2 (en) 2006-12-01 2012-11-06 Murex S.A.S. Parallelization and instrumentation in a producer graph oriented programming framework
US7865872B2 (en) * 2006-12-01 2011-01-04 Murex S.A.S. Producer graph oriented programming framework with undo, redo, and abort execution support
US8332827B2 (en) 2006-12-01 2012-12-11 Murex S.A.S. Produce graph oriented programming framework with scenario support
US8191052B2 (en) 2006-12-01 2012-05-29 Murex S.A.S. Producer graph oriented programming and execution
US9311082B2 (en) 2006-12-29 2016-04-12 Sap Se System and method for processing graph objects
US8640086B2 (en) * 2006-12-29 2014-01-28 Sap Ag Graphical user interface system and method for presenting objects
WO2008111048A2 (en) * 2007-03-09 2008-09-18 Ghost, Inc. System and method for browser within a web site and proxy server
US7865868B2 (en) * 2007-03-28 2011-01-04 Microsoft Corporation .NET ribbon model for a ribbon user interface
US8307372B2 (en) 2007-04-02 2012-11-06 International Business Machines Corporation Method for declarative semantic expression of user intent to enable goal-driven information processing
US8863102B2 (en) * 2007-04-02 2014-10-14 International Business Machines Corporation Method and system for assembling information processing applications based on declarative semantic specifications
US8370812B2 (en) * 2007-04-02 2013-02-05 International Business Machines Corporation Method and system for automatically assembling processing graphs in information processing systems
EP2153322A1 (en) * 2007-05-22 2010-02-17 Philips Intellectual Property & Standards GmbH Compiler and compiling method for a networked control system comprising a plurality of devices
US8484578B2 (en) 2007-06-29 2013-07-09 Microsoft Corporation Communication between a document editor in-space user interface and a document editor out-space user interface
US8762880B2 (en) 2007-06-29 2014-06-24 Microsoft Corporation Exposing non-authoring features through document status information in an out-space user interface
US8201103B2 (en) 2007-06-29 2012-06-12 Microsoft Corporation Accessing an out-space user interface for a document editor program
US8381174B2 (en) * 2007-10-31 2013-02-19 National Instruments Corporation Global variable structure in a graphical program
US10248915B2 (en) * 2008-03-07 2019-04-02 International Business Machines Corporation Risk profiling for enterprise risk management
US9588781B2 (en) 2008-03-31 2017-03-07 Microsoft Technology Licensing, Llc Associating command surfaces with multiple active components
US9665850B2 (en) 2008-06-20 2017-05-30 Microsoft Technology Licensing, Llc Synchronized conversation-centric message list and message reading pane
US8402096B2 (en) 2008-06-24 2013-03-19 Microsoft Corporation Automatic conversation techniques
US8341608B2 (en) * 2008-11-13 2012-12-25 Visicom Media, Inc. Cross-browser toolbar and method thereof for facilitating cross-browser interoperability
AU2010213618B9 (en) 2009-02-13 2015-07-30 Ab Initio Technology Llc Managing task execution
WO2010107476A1 (en) * 2009-03-19 2010-09-23 Duke University Inhibiting gsnor
US9046983B2 (en) 2009-05-12 2015-06-02 Microsoft Technology Licensing, Llc Hierarchically-organized control galleries
CA2691306A1 (en) * 2010-01-28 2011-07-28 Ibm Canada Limited - Ibm Canada Limitee Interdependent task management
WO2011159759A1 (en) 2010-06-15 2011-12-22 Ab Initio Technology Llc Dynamically loading graph-based computations
US9003362B2 (en) * 2011-09-02 2015-04-07 Vu Lam Systems and methods for processing software application metadata associated with a software application
US9038033B1 (en) * 2011-12-09 2015-05-19 Sencha, Inc. Techniques and mechanisms for web application minification
US8918881B2 (en) * 2012-02-24 2014-12-23 Appthority, Inc. Off-device anti-malware protection for mobile devices
US8713684B2 (en) 2012-02-24 2014-04-29 Appthority, Inc. Quantifying the risks of applications for mobile devices
CN102796873B (zh) 2012-03-05 2014-02-26 阳光凯迪新能源集团有限公司 从费托合成废催化剂Co-Ru/Al2O3中综合回收金属钴、钌和铝的方法
JP5273884B1 (ja) * 2012-04-09 2013-08-28 伸一 石田 構造解析装置及びプログラム
US10936591B2 (en) 2012-05-15 2021-03-02 Microsoft Technology Licensing, Llc Idempotent command execution
US9239868B2 (en) 2012-06-19 2016-01-19 Microsoft Technology Licensing, Llc Virtual session management and reestablishment
US8819772B2 (en) 2012-06-25 2014-08-26 Appthority, Inc. In-line filtering of insecure or unwanted mobile device software components or communications
US10002027B2 (en) * 2012-07-11 2018-06-19 Empire Technology Development Llc Network congestion reduction
US9251194B2 (en) 2012-07-26 2016-02-02 Microsoft Technology Licensing, Llc Automatic data request recovery after session failure
US8898109B2 (en) 2012-07-27 2014-11-25 Microsoft Corporation Automatic transaction retry after session failure
CN102831057B (zh) * 2012-08-13 2015-02-11 于秀山 一种用功能图分析软件功能变更及其影响的方法
US9324033B2 (en) * 2012-09-13 2016-04-26 Nokia Technologies Oy Method and apparatus for providing standard data processing model through machine learning
US9235464B2 (en) 2012-10-16 2016-01-12 Microsoft Technology Licensing, Llc Smart error recovery for database applications
EP2731023B1 (en) * 2012-11-12 2015-03-25 Software AG Method and system for processing graph queries
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9507682B2 (en) 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US8910134B2 (en) * 2013-01-03 2014-12-09 Oracle International Corporation System for applying transformation to improve graph analysis
US9785302B2 (en) * 2013-03-14 2017-10-10 Microsoft Technology Licensing, Llc Inline display and preview of related information for elements in a document
US9164740B2 (en) 2013-05-16 2015-10-20 Toshiba Global Commerce Solutions Holdings Corporation System and method for replacing java beans
US9146842B2 (en) * 2013-08-15 2015-09-29 Yahoo! Inc. Testing computer-implementable instructions
CA3114544A1 (en) 2013-12-05 2015-06-11 Ab Initio Technology Llc Managing interfaces for dataflow composed of sub-graphs
RU2586577C2 (ru) * 2014-01-15 2016-06-10 Общество с ограниченной ответственностью "Аби ИнфоПоиск" Фильтрация дуг в синтаксическом графе
US20150220310A1 (en) * 2014-02-03 2015-08-06 International Business Machines Corporation Object field optimization
US9864364B2 (en) * 2014-11-07 2018-01-09 Honeywell International Inc. Method and apparatus for retrieving time-based event data into unified activity hierarchy across process clusters
US9665849B2 (en) * 2015-02-26 2017-05-30 Red Hat, Inc. Employing dependency graph in software build projects
US9292315B1 (en) 2015-03-16 2016-03-22 International Business Machines Corporation Sharing of classes for modular programs in a multi-tenant environment
EP3086233B1 (en) * 2015-04-23 2020-05-06 CODESYS Holding GmbH Method and system for measuring a runtime by means of watchpoints
US10325014B2 (en) 2015-04-30 2019-06-18 Workiva Inc. System and method for convergent document collaboration
US10152488B2 (en) * 2015-05-13 2018-12-11 Samsung Electronics Co., Ltd. Static-analysis-assisted dynamic application crawling architecture
US9158832B1 (en) 2015-05-18 2015-10-13 Workiva Inc. Method and computing device for maintaining dependencies among reference elements
US10255263B2 (en) 2015-05-18 2019-04-09 Workiva Inc. Data storage and retrieval system and method for storing cell coordinates in a computer memory
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10496528B2 (en) 2015-08-31 2019-12-03 Microsoft Technology Licensing, Llc User directed partial graph execution
US9892029B2 (en) * 2015-09-29 2018-02-13 International Business Machines Corporation Apparatus and method for expanding the scope of systems management applications by runtime independence
US9355132B1 (en) * 2015-09-30 2016-05-31 Semmle Limited Tiered arrays
US9971570B2 (en) 2015-12-15 2018-05-15 Oracle International Corporation Automated generation of memory consumption aware code
EP3394739B1 (en) 2015-12-21 2020-11-11 AB Initio Technology LLC Sub-graph interface generation
US10127320B2 (en) 2015-12-29 2018-11-13 Samsung Electronics Co., Ltd. Computerized identification of app search functionality for search engine access
KR101886203B1 (ko) * 2016-07-19 2018-09-06 주식회사 스패로우 프로그램 분석 장치 및 방법
US10769180B2 (en) * 2017-02-02 2020-09-08 International Business Machines Corporation Efficient dataflow processing for objects
US20180275976A1 (en) * 2017-03-22 2018-09-27 Qualcomm Innovation Center, Inc. Link time optimization in presence of a linker script using path based rules
JP6850907B2 (ja) 2017-04-25 2021-03-31 マーレックス ソシエテ パール アクシオン サンプリフィエ テンポラル−リレーショナルデータベースを有するリレーショナルデータベース管理システムにおけるクエリプランの生成および実行
RU2681408C2 (ru) * 2017-08-22 2019-03-06 Александр Павлович Соколов Способ и система графо-ориентированного создания масштабируемых и сопровождаемых программных реализаций сложных вычислительных методов
US10303469B1 (en) * 2017-12-28 2019-05-28 Semmle Limited Commit graph generation
JP7031930B2 (ja) * 2018-03-19 2022-03-08 Necプラットフォームズ株式会社 プログラム生成部、情報処理装置、プログラム生成方法、及びプログラム
US10437572B1 (en) 2018-08-03 2019-10-08 King Fahd University Of Petroleum And Minerals Methods, computer readable media, and systems for compiling concise expressive design pattern source code
US10768904B2 (en) * 2018-10-26 2020-09-08 Fuji Xerox Co., Ltd. System and method for a computational notebook interface
US11755825B2 (en) 2019-09-12 2023-09-12 Workiva Inc. Method, system, and computing device for facilitating private drafting
US11741084B2 (en) * 2019-09-27 2023-08-29 Autodesk, Inc. High frequency data management (HFDM)
CN111104031B (zh) * 2019-12-09 2022-08-30 宁波吉利汽车研究开发有限公司 一种面向用户的数据更新方法、装置、电子设备及存储介质
US11113048B1 (en) * 2020-02-26 2021-09-07 Accenture Global Solutions Limited Utilizing artificial intelligence and machine learning models to reverse engineer an application from application artifacts
CN111399713B (zh) * 2020-03-11 2021-06-18 上海索辰信息科技股份有限公司 时序图处理系统及方法
US11443108B2 (en) 2020-08-17 2022-09-13 Workiva Inc. System and method for document management using branching
US11100281B1 (en) 2020-08-17 2021-08-24 Workiva Inc. System and method for maintaining links and revisions
US11100277B1 (en) 2021-02-15 2021-08-24 Workiva Inc. Systems, methods, and computer-readable media for flow-through formatting for links
US11354362B1 (en) 2021-05-06 2022-06-07 Workiva Inc. System and method for copying linked documents
US11640281B2 (en) * 2021-05-17 2023-05-02 International Business Machines Corporation Tool for introspection in object-oriented source code
US11640495B1 (en) 2021-10-15 2023-05-02 Workiva Inc. Systems and methods for translation comments flowback
CN114840265A (zh) * 2022-03-23 2022-08-02 阿里巴巴(中国)有限公司 一种基于可执行图的数据处理方法
CN116048480B (zh) * 2023-04-04 2023-06-09 青岛普瑞盛医药科技有限公司 一种基于代码工具自动生成图表的方法及装置

Family Cites Families (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558413A (en) 1983-11-21 1985-12-10 Xerox Corporation Software version management system
US5481741A (en) 1986-04-14 1996-01-02 National Instruments Corporation Method and apparatus for providing attribute nodes in a graphical data flow environment
US5497500A (en) 1986-04-14 1996-03-05 National Instruments Corporation Method and apparatus for more efficient function synchronization in a data flow program
US5481740A (en) 1986-04-14 1996-01-02 National Instruments Corporation Method and apparatus for providing autoprobe features in a graphical data flow diagram
US5504917A (en) 1986-04-14 1996-04-02 National Instruments Corporation Method and apparatus for providing picture generation and control features in a graphical data flow environment
US5155836A (en) 1987-01-27 1992-10-13 Jordan Dale A Block diagram system and method for controlling electronic instruments with simulated graphic display
JPS6432337A (en) 1987-07-29 1989-02-02 Hitachi Ltd Method for instructing influence of program change
US5371851A (en) 1989-04-26 1994-12-06 Credence Systems Corporation Graphical data base editor
US5313387A (en) 1989-06-30 1994-05-17 Digital Equipment Corporation Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers
EP0465018B1 (en) 1990-06-29 1997-05-14 Oracle Corporation Method and apparatus for optimizing undo log usage
EP0528631B1 (en) 1991-08-13 1998-05-20 Xerox Corporation Electronic image generation
JPH05265975A (ja) 1992-03-16 1993-10-15 Hitachi Ltd 並列計算処理装置
US5416895A (en) 1992-04-08 1995-05-16 Borland International, Inc. System and methods for improved spreadsheet interface with user-familiar objects
US5659747A (en) 1993-04-22 1997-08-19 Microsoft Corporation Multiple level undo/redo mechanism
JPH06332785A (ja) * 1993-05-25 1994-12-02 Fujitsu Ltd オブジェクト指向データ処理システム
JPH0713766A (ja) * 1993-06-14 1995-01-17 Internatl Business Mach Corp <Ibm> オブジェクト指向コンピュータ・システムおよびオブジェクト・クラス管理方法
US5758160A (en) 1993-06-28 1998-05-26 Object Technology Licensing Corporation Method and apparatus for building a software program using dependencies derived from software component interfaces
US5893123A (en) 1995-06-22 1999-04-06 Tuinenga; Paul W. System and method of integrating a spreadsheet and external program having output data calculated automatically in response to input data from the spreadsheet
US6003037A (en) 1995-11-14 1999-12-14 Progress Software Corporation Smart objects for development of object oriented software
US5838976A (en) 1995-11-28 1998-11-17 Hewlett-Packard Co. System and method for profiling code on symmetric multiprocessor architectures
US6067415A (en) 1995-12-26 2000-05-23 Kabushiki Kaisha Toshiba System for assisting a programmer find errors in concurrent programs
US7987427B1 (en) * 1996-05-10 2011-07-26 Apple Inc. Graphical editor for program files
US5819293A (en) 1996-06-06 1998-10-06 Microsoft Corporation Automatic Spreadsheet forms
US5966072A (en) * 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US5822593A (en) 1996-12-06 1998-10-13 Xerox Corporation High-level loop fusion
JP3730740B2 (ja) 1997-02-24 2006-01-05 株式会社日立製作所 並列ジョブ多重スケジューリング方法
US6145121A (en) 1997-04-17 2000-11-07 University Of Washington Trace based method for the analysis, benchmarking and tuning of object oriented databases and applications
US6026235A (en) 1997-05-20 2000-02-15 Inprise Corporation System and methods for monitoring functions in natively compiled software programs
US6209125B1 (en) 1997-06-03 2001-03-27 Sun Microsystems, Inc. Method and apparatus for software component analysis
US5990906A (en) 1997-06-25 1999-11-23 National Instruments Corporation Undo feature for a graphical programming system
US6219628B1 (en) * 1997-08-18 2001-04-17 National Instruments Corporation System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations
US6233733B1 (en) 1997-09-30 2001-05-15 Sun Microsystems, Inc. Method for generating a Java bytecode data flow graph
US6704927B1 (en) 1998-03-24 2004-03-09 Sun Microsystems, Inc. Static binding of dynamically-dispatched calls in the presence of dynamic linking and loading
US6427234B1 (en) 1998-06-11 2002-07-30 University Of Washington System and method for performing selective dynamic compilation using run-time information
US6223171B1 (en) 1998-08-25 2001-04-24 Microsoft Corporation What-if index analysis utility for database systems
US6111575A (en) 1998-09-24 2000-08-29 International Business Machines Corporation Graphical undo/redo manager and method
US6493868B1 (en) 1998-11-02 2002-12-10 Texas Instruments Incorporated Integrated development tool
US6826752B1 (en) 1998-12-17 2004-11-30 California Institute Of Technology Programming system and thread synchronization mechanisms for the development of selectively sequential and multithreaded computer programs
JP2000207223A (ja) 1999-01-12 2000-07-28 Matsushita Electric Ind Co Ltd 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体
US6385770B1 (en) 1999-01-29 2002-05-07 Telefonaktiebolaget Lm Ericsson (Publ) Software upgrade
US6957191B1 (en) 1999-02-05 2005-10-18 Babcock & Brown Lp Automated financial scenario modeling and analysis tool having an intelligent graphical user interface
US6571388B1 (en) 1999-03-09 2003-05-27 Hewlett-Packard Development Company, L.P. Building a custom software environment including pre-loaded classes
US6407753B1 (en) 1999-05-04 2002-06-18 International Business Machines Corporation System and method for integrating entities via user-interactive rule-based matching and difference reconciliation
US6665866B1 (en) 1999-05-28 2003-12-16 Microsoft Corporation Extensible compiler utilizing a plurality of question handlers
JP2001005678A (ja) * 1999-06-18 2001-01-12 Fujitsu Ltd ネットワーク型情報処理装置及び方法
WO2001001206A2 (en) 1999-06-30 2001-01-04 Strategic Simulation Systems, Inc. System dynamics model builder and simulator
US6618851B1 (en) 1999-08-31 2003-09-09 Autodesk, Inc. Method and apparatus for state-reversion
EP1290552A1 (en) * 2000-04-21 2003-03-12 Togethersoft Corporation Methods and systems for identifying dependencies between object-oriented elements
CA2346231A1 (en) 2000-05-08 2001-11-08 Internet Number Corporation Method and system for accessing information on a network using message aliasing functions having shadow callback functions
US6959429B1 (en) 2000-05-16 2005-10-25 Watterson-Prime Software, Inc. System for developing data collection software applications
US6763515B1 (en) 2000-06-05 2004-07-13 National Instruments Corporation System and method for automatically generating a graphical program to perform an image processing algorithm
US20030005407A1 (en) 2000-06-23 2003-01-02 Hines Kenneth J. System and method for coordination-centric design of software systems
US6889227B1 (en) 2000-07-21 2005-05-03 Sun Microsystems, Inc. Database access bridge system and process
RU2206119C2 (ru) 2000-09-22 2003-06-10 Закрытое акционерное общество "МЦСТ" Способ получения объектного кода
US7047518B2 (en) 2000-10-04 2006-05-16 Bea Systems, Inc. System for software application development and modeling
AU2002243335A1 (en) 2000-10-20 2002-06-18 Polexis, Inc. Extensible information system (xis)
US6826523B1 (en) 2000-11-01 2004-11-30 Sony Computer Entertainment America Inc. Application development interface for multi-user applications executable over communication networks
US6829572B2 (en) 2000-12-07 2004-12-07 Internatinal Business Machines Corporation Method and system for efficiently overriding array net values in a logic simulator machine
US6820256B2 (en) 2000-12-13 2004-11-16 Microsoft Corporation System and method for whole-system program analysis
US7200838B2 (en) 2000-12-20 2007-04-03 National Instruments Corporation System and method for automatically generating a graphical program in response to a state diagram
US6836884B1 (en) 2001-06-04 2004-12-28 Microsoft Corporation Method and system for editing software programs
US20020188616A1 (en) 2001-06-07 2002-12-12 Chinnici Roberto R. Database access bridge system and process
US7051339B2 (en) 2001-06-29 2006-05-23 Goldman, Sachs & Co. System and method to measure latency of transaction information flowing through a computer system
US6995765B2 (en) 2001-07-13 2006-02-07 Vicarious Visions, Inc. System, method, and computer program product for optimization of a scene graph
US6966013B2 (en) 2001-07-21 2005-11-15 International Business Machines Corporation Method and system for performing automated regression tests in a state-dependent data processing system
US7236915B2 (en) 2001-08-09 2007-06-26 Hewlett-Packard Development Company, L.P. Technique and interface for computer system resource assignment
US20040205524A1 (en) 2001-08-15 2004-10-14 F1F9 Spreadsheet data processing system
US7010779B2 (en) 2001-08-16 2006-03-07 Knowledge Dynamics, Inc. Parser, code generator, and data calculation and transformation engine for spreadsheet calculations
US7017084B2 (en) 2001-09-07 2006-03-21 Network Appliance Inc. Tracing method and apparatus for distributed environments
US8473922B2 (en) 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
US7194475B2 (en) 2001-10-30 2007-03-20 International Business Machines Corporation Method, system, and program for performing an impact analysis of program statements in at least one source code file
US7069547B2 (en) 2001-10-30 2006-06-27 International Business Machines Corporation Method, system, and program for utilizing impact analysis metadata of program statements in a development environment
CA2360650A1 (en) 2001-10-31 2003-04-30 Ibm Canada Limited-Ibm Canada Limitee Algorithm to create and compare debug scenarios of a computer process
JP2003157185A (ja) 2001-11-19 2003-05-30 Nec Corp 計算機の動作の解析・表示装置とその解析・表示方法及びコンピュータプログラム
US7203743B2 (en) 2001-12-28 2007-04-10 Nortel Networks Limited Hierarchical tree-based protection scheme for mesh networks
US7039923B2 (en) 2002-04-19 2006-05-02 Sun Microsystems, Inc. Class dependency graph-based class loading and reloading
US7159211B2 (en) 2002-08-29 2007-01-02 Indian Institute Of Information Technology Method for executing a sequential program in parallel with automatic fault tolerance
US7210128B2 (en) 2002-10-14 2007-04-24 Fujitsu Limited Event-driven observability enhanced coverage analysis
JP3925857B2 (ja) * 2002-11-07 2007-06-06 インターナショナル・ビジネス・マシーンズ・コーポレーション スケジュール作成方法、プログラム及びタスクスケジュール作成装置
US7272820B2 (en) 2002-12-12 2007-09-18 Extrapoles Pty Limited Graphical development of fully executable transactional workflow applications with adaptive high-performance capacity
TWI262383B (en) 2003-01-10 2006-09-21 Univ Nat Cheng Kung A generic software testing system and method
US7571431B2 (en) 2003-04-29 2009-08-04 Microsoft Corporation Processing macro information and displaying via GUI in different tools
US7299450B2 (en) 2003-06-17 2007-11-20 Microsoft Corporation Undoing changes in a software configuration management system
KR100513385B1 (ko) 2003-06-19 2005-09-07 삼성전자주식회사 선형 위상 검출기를 이용한 클럭 및 데이터 복원 장치 및 그 방법
US7559050B2 (en) 2003-06-30 2009-07-07 Microsoft Corporation Generating software development tools via target architecture specification
US7739252B2 (en) 2003-07-14 2010-06-15 Oracle America, Inc. Read/write lock transaction manager freezing
US7818718B2 (en) 2003-09-30 2010-10-19 Sap Ag Undoing user actions in a client program
US7454701B2 (en) 2003-10-30 2008-11-18 Sap Ag Systems and methods for implementing formulas
US7536678B2 (en) 2003-12-04 2009-05-19 International Business Machines Corporation System and method for determining the possibility of adverse effect arising from a code change in a computer program
US7792824B2 (en) 2004-01-08 2010-09-07 International Business Machines Corporation Apparatus and method for enabling parallel processing of a computer program using existing database parallelism
KR100643268B1 (ko) * 2004-01-17 2006-11-10 삼성전자주식회사 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템
US7917898B2 (en) 2004-02-02 2011-03-29 Intel Corporation Methods and apparatus to provide a modular native method invocation system
US7316001B2 (en) 2004-06-05 2008-01-01 Graphlogic Inc. Object process graph system
US7493335B2 (en) 2004-07-02 2009-02-17 Graphlogic Inc. Object process graph relational database interface
US7360209B2 (en) 2004-07-16 2008-04-15 Graphlogic Inc. Object process graph application controller-viewer
US7506320B2 (en) 2004-09-09 2009-03-17 International Business Machines Corporation Generating sequence diagrams using call trees
CA2578385A1 (en) 2004-09-10 2006-03-23 Graphlogic Inc. Object process graph application development system
US7933862B2 (en) 2004-09-27 2011-04-26 Microsoft Corporation One click conditional formatting method and system for software programs
US7458072B2 (en) 2004-10-06 2008-11-25 Microsoft Corporation Execution context infrastructure
US20060080660A1 (en) 2004-10-07 2006-04-13 Dell Products L.P. System and method for disabling the use of hyper-threading in the processor of a computer system
US7831956B2 (en) 2005-09-13 2010-11-09 Microsoft Corporation Using attributes to identify and filter pluggable functionality
US7779043B2 (en) * 2005-10-06 2010-08-17 Microsoft Corporation Extensible mechanism for object composition
US8032885B2 (en) * 2005-10-11 2011-10-04 Oracle International Corporation Method and medium for combining operation commands into database submission groups
US7376758B2 (en) * 2005-11-04 2008-05-20 Sun Microsystems, Inc. I/O dependency graphs
US7904892B2 (en) * 2006-01-06 2011-03-08 Northrop Grumman Corporation Systems and methods for identifying and displaying dependencies
US7882498B2 (en) 2006-03-31 2011-02-01 Intel Corporation Method, system, and program of a compiler to parallelize source code
US7844959B2 (en) * 2006-09-29 2010-11-30 Microsoft Corporation Runtime optimization of distributed execution graph
US8902231B2 (en) 2006-10-20 2014-12-02 Alcatel Lucent Method and apparatus for displaying graphical representations of graph layouts
US8191052B2 (en) 2006-12-01 2012-05-29 Murex S.A.S. Producer graph oriented programming and execution
US8307337B2 (en) 2006-12-01 2012-11-06 Murex S.A.S. Parallelization and instrumentation in a producer graph oriented programming framework
US8332827B2 (en) 2006-12-01 2012-12-11 Murex S.A.S. Produce graph oriented programming framework with scenario support
US7865872B2 (en) 2006-12-01 2011-01-04 Murex S.A.S. Producer graph oriented programming framework with undo, redo, and abort execution support

Also Published As

Publication number Publication date
ES2381373T3 (es) 2012-05-25
EP2365436A3 (en) 2011-12-07
JP5354602B2 (ja) 2013-11-27
ATE546775T1 (de) 2012-03-15
US20080134138A1 (en) 2008-06-05
US20130232475A1 (en) 2013-09-05
EP2365436B1 (en) 2014-07-30
EP2365435B1 (en) 2014-04-02
JP2010511234A (ja) 2010-04-08
WO2008064901A8 (en) 2009-11-05
RU2445682C2 (ru) 2012-03-20
EP1942411B1 (en) 2012-02-22
WO2008064901A3 (en) 2008-07-24
US8191052B2 (en) 2012-05-29
RU2009125013A (ru) 2011-01-10
US20120266146A1 (en) 2012-10-18
US8607207B2 (en) 2013-12-10
EP2365436A2 (en) 2011-09-14
CN101617292A (zh) 2009-12-30
EP1942411A3 (en) 2008-07-16
US20140137086A1 (en) 2014-05-15
HK1139216A1 (en) 2010-09-10
US10083013B2 (en) 2018-09-25
EP2365435A3 (en) 2011-11-23
CN101617292B (zh) 2014-09-24
US10481877B2 (en) 2019-11-19
ES2471394T3 (es) 2014-06-26
US8645929B2 (en) 2014-02-04
EP1942411A2 (en) 2008-07-09
WO2008064901A2 (en) 2008-06-05
US20180321920A1 (en) 2018-11-08
BRPI0719730A2 (pt) 2014-03-04
EP2365435A2 (en) 2011-09-14

Similar Documents

Publication Publication Date Title
ES2497573T3 (es) Salidas de sustitución en un sistema de programación y ejecución orientado por grafos de productor
ES2473765T3 (es) Paralelizaci�n e instrumentaci�n en un marco de programación orientado a grafos de productor
ES2327797T3 (es) Soporte de programacion orientado a graficos de productores con soporte de escenario.
US8201147B2 (en) Generic XAD processing model
Qian Software architecture and design illuminated
CN117355818A (zh) 防止最小运行时上的垃圾对象积累
Uhl et al. KaMPIng: Flexible and (near) zero-overhead C++ bindings for MPI
Touma et al. Capre: code-analysis based prefetching for persistent object stores
Gupta Java 11 and 12–New Features: Learn about Project Amber and the latest developments in the Java language and platform
Wingo OME: A Framework for Running Spatially Explicit System Dynamics Models
Horváth Search-based techniques in model-driven engineering
Hoare 6. System Design