FR2963126A1 - METHOD OF PARALLEL EXECUTION OF A PLURALITY OF ORDINATED TASKS ACCORDING TO A SCHEDULING TABLE - Google Patents

METHOD OF PARALLEL EXECUTION OF A PLURALITY OF ORDINATED TASKS ACCORDING TO A SCHEDULING TABLE Download PDF

Info

Publication number
FR2963126A1
FR2963126A1 FR1056108A FR1056108A FR2963126A1 FR 2963126 A1 FR2963126 A1 FR 2963126A1 FR 1056108 A FR1056108 A FR 1056108A FR 1056108 A FR1056108 A FR 1056108A FR 2963126 A1 FR2963126 A1 FR 2963126A1
Authority
FR
France
Prior art keywords
task
tasks
bus
application bus
scheduling table
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.)
Granted
Application number
FR1056108A
Other languages
French (fr)
Other versions
FR2963126B1 (en
Inventor
Yves Albrieux
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.)
YVES ALBRIEUX, FR
Original Assignee
TYMIS
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 TYMIS filed Critical TYMIS
Priority to FR1056108A priority Critical patent/FR2963126B1/en
Priority to PCT/EP2011/062004 priority patent/WO2012013504A1/en
Priority to EP11735635.2A priority patent/EP2599046A1/en
Publication of FR2963126A1 publication Critical patent/FR2963126A1/en
Application granted granted Critical
Publication of FR2963126B1 publication Critical patent/FR2963126B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Multi Processors (AREA)

Abstract

La présente invention concerne un procédé d'exécution parallèle d'une pluralité de tâches ordonnées selon une table d'ordonnancement, exécutées par au moins une unité de traitement de données connectée à un bus applicatif, à chaque tâche étant associé un coefficient de durée estimatif du temps de réalisation de ladite tâche, caractérisé en ce qu'un compte-rendu est fourni par le bus applicatif lors de l'exécution d'au moins une tâche, le coefficient de durée estimatif du temps de réalisation de ladite tâche étant mis à jour en fonction du contenu dudit compte-rendu. L'invention concerne également un système à cet effet.The present invention relates to a method for parallel execution of a plurality of scheduled tasks according to a scheduling table, performed by at least one data processing unit connected to an application bus, each task being associated with an estimated duration coefficient time of completion of said task, characterized in that a report is provided by the application bus during the execution of at least one task, the estimated duration coefficient of the time of completion of said task being set to day depending on the content of the said report. The invention also relates to a system for this purpose.

Description

DOMAINE TECHNIQUE GENERAL GENERAL TECHNICAL FIELD

La présente invention se rapporte au domaine des plateformes de développement et de mise en oeuvre de systèmes experts. The present invention relates to the field of development platforms and implementation of expert systems.

Plus précisément, elle concerne un procédé d'exécution parallèle d'une pluralité de tâches ordonnées selon une table d'ordonnancement. More specifically, it relates to a method of parallel execution of a plurality of tasks ordered according to a scheduling table.

ETAT DE L'ART La simplicité et la convivialité sont très loin d'être l'apanage des systèmes de développement informatiques actuels qui nécessitent le plus souvent l'intervention de spécialistes, qui sont de plus en plus difficiles à trouver. En outre, ces spécialistes ont des grandes compétences en informatique, mais n'ont pas le « savoir-faire métier », c'est-à-dire l'expérience qu'auront les professionnels auxquels sont destinés les outils, et ce dans des domaines qui peuvent être très variés. En particulier, les applications bureautiques sont extrêmement utilisées dans tous les secteurs de l'économie. Le développement pour une entreprise de services d'un outil qui par exemple créerait automatiquement des devis nécessite ainsi non seulement des compétences en développement informatique, mais aussi, et c'est le plus important, la connaissance des règles employées au quotidien lors de la création d'un devis par les personnes de l'entreprise dont c'est le métier. L'ambition des plateformes de développement est ainsi de se mettre à la portée « d'analystes métiers » capables d'exprimer un savoir faire métier pour l'exploiter par des automates logiciels qui permettront la réalisation de systèmes experts de très haut niveau. Des langages de script comme TCL (Tool Command Language) ou plus récemment les langages dédiés au web comme perl ou python, sont des langages multiplateformes, extensibles, faciles à apprendre. Ils sont définis comme des langages dédiés à « programming in the large », c'est-à-dire des projets de grande envergure. Leur but est de fournir le liant qui va 1 permettre à des exécutables existants d'être enchainés dans des chaines de traitement plus complexes, et donc des automatisations. Toutefois, si un langage de scripts s'avère très pratique dans le cas de l'exécution d'une séquence d'applications sur une machine, seul il n'est pas vraiment adapté à un fonctionnement collaboratif en entreprise, où de nombreuses machines sont connectées en réseau, certaines machines étant dédiées à certaines applications ou certaines fonctionnalités. Des composants de connexion logicielle appelés les bus applicatifs (BA), ou bus logiciels, permettent de réaliser les échanges de message et de données entre une pluralité d'acteurs d'une structure. Des architectures dites réparties comme Corba (Common Object Request Broker Architecture) utilisent ce type de bus applicatif. Corba gère des aspects d'interopérabilité multi-langages et multiplateformes. Toutefois, Corba se contente d'assembler des composants logiciels mais ne permet pas de programmer complètement une logique métier (qui est le plus souvent une séquence de commandes envoyée à différentes applications, en particulier de bureautique, mais peut être beaucoup plus riche que du simple assemblage). De surcroit Corba offre des solutions assez lourdes à mettre en place du fait de la cible multi-langages et multiplateformes. STATE OF THE ART Simplicity and user-friendliness are far from being the prerogative of current IT development systems, which most often require the intervention of specialists, who are increasingly difficult to find. In addition, these specialists have great computer skills, but do not have the "professional know-how", that is to say, the experience that will be the professionals to whom the tools are intended, and that in areas that can be very varied. In particular, office applications are widely used in all sectors of the economy. The development for a service company of a tool that for example would automatically create quotes thus requires not only computer development skills, but also, and most importantly, the knowledge of the rules used every day when creating an estimate by the people of the company whose job it is. The ambition of the development platforms is thus to reach the range of "business analysts" capable of expressing a business know-how to exploit it by software automata that will allow the realization of expert systems of very high level. Scripting languages such as Tool Command Language (TCL) or, more recently, web-based languages such as perl or python, are multiplatform, extensible, easy-to-learn languages. They are defined as languages dedicated to "programming in the large", that is to say large-scale projects. Their purpose is to provide the binder that will allow existing executables to be chained into more complex processing chains, and thus automations. However, if a scripting language proves very practical in the case of the execution of a sequence of applications on a machine, it is not really adapted to a collaborative operation in a company, where many machines are connected to a network, some machines being dedicated to certain applications or certain functionalities. Software connection components called application buses (BA), or software buses, make it possible to exchange messages and data between a plurality of actors of a structure. Distributed architectures such as Common Object Request Broker Architecture (Corba) use this type of application bus. Corba manages multi-language and multi-platform interoperability aspects. However, Corba is content to assemble software components but does not fully program business logic (which is most often a sequence of commands sent to different applications, especially office automation, but can be much richer than the simple assembly). In addition, Corba offers solutions that are quite burdensome to set up because of the multi-language and multiplatform target.

Les langages de processus métiers (généralement désignés sous la terminologie anglo-saxonne de business process) comme BPEL4WS (Business Process Execution Language for Web Services) ou XPDL (XML Process Definition Language) ou plus généralement les workflows ont été proposés pour automatiser un certain nombre de processus métiers complexes de l'entreprise. Ils proposent une description haut-niveau de ces processus à l'aide d'activités qui s'enchainent via des constructeurs comme la séquence, l'alternative, des opérations de synchronisation, etc. De façon plus pratique, le workflow décrit le circuit de validation, les tâches à accomplir entre les différents acteurs d'un processus, les délais, les modes de validation, et fournit à chacun des acteurs les informations nécessaires pour la réalisation de sa tâche. Il permet généralement un suivi et identifie les acteurs en précisant leur rôle et la manière de le remplir au mieux. Business process languages (BPPLs), such as Business Process Execution Language for Web Services (BPEL4WS) or XML Process Definition Language (XPDL), or more generally workflows, have been proposed to automate a number of business processes. complex business processes of the company. They provide a high-level description of these processes using activities that follow each other via constructors such as the sequence, the alternative, synchronization operations, and so on. In a more practical way, the workflow describes the validation circuit, the tasks to be performed between the various actors of a process, the deadlines, the validation methods, and provides each of the actors with the information necessary for carrying out their task. It generally allows monitoring and identifies actors by specifying their role and how to best fulfill it.

La description est de haut niveau et donc facilement compréhensible (même par des non-spécialistes) mais reste trop limitée dans les fonctionnalités. The description is high level and therefore easily understandable (even by non-specialists) but remains too limited in functionality.

Les solutions existantes se révèlent donc soit très lourdes à mettre en place, et donc peu intéressantes pour les entreprises qui recherchent en premier lieu la souplesse et l'agilité pour de tels outils, soit relativement limitées, et donc insuffisantes à moyen terme. En outre, aucune n'a de manière générale cherché à tirer parti du parallélisme. En effet, l'informatique actuelle touche aux limites de ses possibilités, et l'augmentation de performance des processeurs ne passe plus par une gravure plus fine, mais par une multiplication du nombre de coeurs. Face à ces nouvelles architectures, l'informatique actuelle reste en retrait, car il est nécessaire de repenser de nombreux paradigmes de programmation. Il y a un besoin de plateformes de développement de systèmes experts, adaptées au traitement massivement parallèle desquelles, puisse découler un gain sensible de productivité et de qualité. The existing solutions therefore prove to be very cumbersome to set up, and therefore unattractive for companies seeking first and foremost the flexibility and agility for such tools, which is relatively limited and therefore insufficient in the medium term. In addition, none has generally sought to take advantage of parallelism. Indeed, current computing touches the limits of its possibilities, and the increase in performance of processors no longer passes by a finer engraving, but by a multiplication of the number of hearts. Faced with these new architectures, current computing remains behind because it is necessary to rethink many programming paradigms. There is a need for expert systems development platforms, adapted to massively parallel processing, which can result in a significant gain in productivity and quality.

PRESENTATION DE L'INVENTION PRESENTATION OF THE INVENTION

La présente invention vise à résoudre ces difficultés en proposant un procédé de traitement massivement parallèle autour d'un bus applicatif. Grâce à ces nouvelles possibilités offertes par ce bus applicatif, le développement de systèmes s'affranchit des contraintes techniques nouvelles engendrées par la programmation de processus parallélisés, lesquels s'avèreront d'ici peu incontournables au vu de l'évolution actuelle des processeurs. En outre, maîtriser l'exécution parallèle d'une pluralité de tâches n'est pas simple. En effet il est nécessaire de prévoir comment les ressources matérielles du ou des processeurs vont être exploitées par telle ou telle tâche. Le procédé selon l'invention permet de s'affranchir de cette difficulté grâce à un mécanisme d'auto-apprentissage astucieux qui ne nécessite pas la moindre intervention d'un spécialiste. L'efficacité du traitement parallèle est poussée au maximum. De plus ce mécanisme introduit des contrôles de bon déroulement de l'exécution qui améliorent d'autant la qualité. La présente invention se rapporte donc d'après un premier aspect à un procédé d'exécution parallèle d'une pluralité de tâches ordonnées selon une table d'ordonnancement, exécutées par au moins une unité de traitement de données connectée à un bus applicatif, à chaque tâche étant associé un coefficient de durée estimatif du temps de réalisation de ladite tâche, caractérisé en ce qu'un compte-rendu est fourni par le bus applicatif lors de l'exécution d'au moins une tâche, le coefficient de durée estimatif du temps de réalisation de ladite tâche étant mis à jour en fonction contenu dudit compte-rendu. The present invention aims to solve these difficulties by proposing a massively parallel processing method around an application bus. Thanks to these new possibilities offered by this application bus, the development of systems is freed from the new technical constraints engendered by the programming of parallelized processes, which will soon prove unavoidable given the current evolution of the processors. In addition, mastering the parallel execution of a plurality of tasks is not simple. Indeed it is necessary to predict how the hardware resources of the processor (s) will be exploited by this or that task. The method according to the invention makes it possible to overcome this difficulty thanks to a clever self-learning mechanism that does not require the slightest intervention of a specialist. The efficiency of parallel processing is pushed to the maximum. In addition, this mechanism introduces smooth running checks that improve the quality. The present invention thus relates, according to a first aspect, to a method of parallel execution of a plurality of tasks ordered according to a scheduling table, executed by at least one data processing unit connected to an application bus, to each task being associated with an estimated duration coefficient of the time of completion of said task, characterized in that a report is provided by the application bus when performing at least one task, the estimated duration coefficient of the task time of completion of said task being updated as a function of said report.

Selon d'autres caractéristiques avantageuses et non limitatives de l'invention : - le compte-rendu fourni par le bus applicatif lors de l'exécution d'au moins une tâche comprend une information logique de bon déroulement ou non de ladite tâche, et une information temporelle de durée réelle de réalisation de ladite tâche ; - un compte-rendu est fourni pour toute tâche ayant au moins une contrainte d'ordonnancement ; - la pluralité de tâches ordonnées selon la table d'ordonnancement est obtenue à partir d'un processus en mettant en oeuvre les étapes suivantes : - écriture du processus sous la forme d'un automate ; - détermination d'un enchaînement de tâches qui permet la résolution de l'automate, chaque tâche étant une action élémentaire exécutable par une unité de traitement donnée à laquelle ledit bus applicatif est connecté ; - identification, pour chacune desdites tâches, d'éventuelles contraintes de dépendance vis-à-vis des autres tâches ; - génération de la table d'ordonnancement des tâches en fonction des éventuelles contraintes de dépendance identifiées. - la pluralité de tâches ordonnées selon la table d'ordonnancement est exécutée par cycles, une pluralité de tâches compatibles étant lancées de façon synchronisée à chaque cycle. - la synchronisation des tâches s'effectue en minimisant le temps total d'exécution à partir des coefficients de durée associés aux tâches exécutables. According to other advantageous and nonlimiting features of the invention: the report provided by the application bus during the execution of at least one task comprises logical information for the smooth running or not of said task, and a time information of actual duration of said task; - a report is provided for any task with at least one scheduling constraint; the plurality of tasks ordered according to the scheduling table is obtained from a process by implementing the following steps: writing the process in the form of an automaton; - Determining a sequence of tasks that allows the resolution of the controller, each task being an elementary action executable by a given processing unit to which said application bus is connected; - identification, for each of said tasks, of any dependency constraints vis-à-vis other tasks; - generation of the task scheduling table according to any dependency constraints identified. the plurality of tasks ordered according to the scheduling table is executed in cycles, a plurality of compatible tasks being started in synchronism with each cycle. - Synchronization of tasks is done by minimizing the total execution time from the duration coefficients associated with the executable tasks.

Selon un deuxième aspect, l'invention concerne un système comprenant au moins, une unité de traitement de données mettant en oeuvre le procédé selon le premier aspect de l'invention, une mémoire dans laquelle sont stockés lesdits coefficients de durée estimatifs du temps de réalisation de la pluralité de tâches, et une entrée recevant la pluralité de tâches ordonnées selon une table d'ordonnancement à exécuter. According to a second aspect, the invention relates to a system comprising at least one data processing unit implementing the method according to the first aspect of the invention, a memory in which are stored said estimated duration coefficients of the realization time. of the plurality of tasks, and an input receiving the plurality of ordered tasks according to a scheduling table to be executed.

PRESENTATION DES FIGURES D'autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description qui va suivre d'un mode de réalisation préférentiel. Cette description sera donnée en référence aux dessins annexés dans lesquels : - la figure 1 est un schéma d'une architecture du bus applicatif utilisé dans un mode de réalisation d'un procédé d'exécution parallèle selon l'invention ; - la figure 2 est un schéma d'une architecture du bus applicatif connecté à une station et un partenaire dans un mode de réalisation d'un procédé d'exécution parallèle selon l'invention ; - la figure 3 est un diagramme représentant les étapes d'un mode de réalisation d'un procédé d'exécution parallèle selon l'invention ; - la figure 4 est un schéma de l'architecture d'un interpréteur utilisé dans un mode de réalisation d'un procédé d'exécution parallèle selon l'invention ; - la figure 5 est un diagramme représentant une tâche élémentaire exécutable de façon parallélisée par un procédé d'exécution parallèle selon l'invention ; - la figure 6 est un schéma représentant une structure de plateforme pour un mode de réalisation d'un procédé d'exécution parallèle selon l'invention. PRESENTATION OF THE FIGURES Other features and advantages of the present invention will appear on reading the description which follows of a preferred embodiment. This description will be given with reference to the appended drawings in which: FIG. 1 is a diagram of an architecture of the application bus used in an embodiment of a parallel execution method according to the invention; FIG. 2 is a diagram of an architecture of the application bus connected to a station and a partner in an embodiment of a parallel execution method according to the invention; FIG. 3 is a diagram representing the steps of an embodiment of a parallel execution method according to the invention; FIG. 4 is a diagram of the architecture of an interpreter used in one embodiment of a parallel execution method according to the invention; FIG. 5 is a diagram representing an elementary task executable in a parallel manner by a parallel execution method according to the invention; FIG. 6 is a diagram showing a platform structure for an embodiment of a parallel execution method according to the invention.

DESCRIPTION DETAILLEE D'UN MODE DE REALISATION DETAILED DESCRIPTION OF AN EMBODIMENT

Les automates parallèles L'idée principale du procédé selon l'invention est que tout processus métier dont la gestion, en particulier la synchronisation, pourrait être demandée au bus applicatif peut être parcellisé en un ensemble de petits « automates ». Il faut comprendre qu'un « automate » correspond à un ensemble de consignes rassemblant le savoir-faire nécessaire à la réalisation d'un processus. En d'autres termes, en lisant l'automate via un programme appelé un interpréteur, on passe d'état en état jusqu'à avoir réalisé le processus. Le mot « automate » ici n'a pas le sens qu'il a en théorie des graphes, en l'occurrence un ensemble d'états et de transitions. Il s'agirait plutôt d'un « mot » du langage reconnu par un FSA (automate à états finis), lequel serait plutôt représenté par l'interpréteur. L'intérêt d'un interpréteur par rapport à un compilateur réside dans sa capacité à exécuter immédiatement un automate qui lui-même peut faire appel à d'autres automates, voire en écrire dynamiquement et les faire fonctionner. Parallel automata The main idea of the method according to the invention is that any business process whose management, in particular synchronization, could be requested from the application bus can be divided into a set of small "automata". It should be understood that an "automaton" corresponds to a set of instructions gathering the know-how necessary to carry out a process. In other words, by reading the PLC via a program called an interpreter, one goes from state to state until having realized the process. The word "automaton" here does not have the meaning it has in graph theory, in this case a set of states and transitions. It would be rather a "word" of the language recognized by an FSA (finite state machine), which would rather be represented by the interpreter. The advantage of an interpreter with respect to a compiler lies in its ability to immediately execute a PLC that itself can use other automata, or even write dynamically and make them work.

Prenons pour exemple un automate qui serait destiné à aider à la rédaction d'un courrier de réponse à une demande de prospect. - Il faut tout d'abord proposer au rédacteur (la personne pour laquelle l'automate agit) la liste des modèles de courriers de réponse à une demande, qu'il fasse un choix, que l'automate prépare le travail et lui présente pour contrôle final. - Il faut faire appel à une activité de lecture des titres des courriers disponibles à cette fin. - Il faut demander au rédacteur de choisir dans cette liste le courrier qui va convenir. - Il faut une activité permettant au rédacteur d'aller dans la base de données des prospects pour l'identifier. Ce travail peut être fait en parallèle avec le précédent suivant un ordre sans importance. L'automate attend d'être en possession des mémoires fournissant l'adresse du prospect et le courrier à élaborer. Il peut alors fusionner ces mémoires pour obtenir le document désiré. - Ce document est présenté au rédacteur via une nouvelle activité : le traitement de texte. Il y est contrôlé par le rédacteur et éventuellement corrigé. - Une nouvelle mémoire recueille le document produit et le compare à la mémoire de préparation de façon à en extraire les modifications à apporter éventuellement dans la base de données (rectification d'adresse par exemple) voire à réaliser la saisie d'un nouveau prospect à partir du prélèvement de son adresse et de son nom dans le courrier. Ce travail peut être fait parallèlement à la réédition du premier point pour un nouveau courrier. Ce processus, décrit ici en langue française, est le cahier d'analyse qui va être écrit en langage informatique pour le mettre à portée du système qui va l'exécuter. For example, consider a controller that would be used to help write a response mail to a prospect request. - It is first necessary to propose to the editor (the person for whom the automaton acts) the list of models of letters of response to a request, to make a choice, that the automat prepares the work and presents it for final test. - It is necessary to use an activity of reading the titles of the letters available for this purpose. - You must ask the editor to choose from this list the mail that will agree. - You need an activity that allows the writer to go to the prospect database to identify it. This work can be done in parallel with the previous one following an unimportant order. The automat waits to be in possession of the memories providing the address of the prospect and the mail to elaborate. He can then merge these memories to obtain the desired document. - This document is presented to the editor via a new activity: the word processor. It is checked by the editor and possibly corrected. - A new memory collects the document produced and compares it with the preparation memory so as to extract any changes to be made in the database (address correction for example) or even to enter a new prospect at from the collection of his address and his name in the mail. This work can be done in parallel with the republishing of the first point for a new mail. This process, described here in French, is the analysis book that will be written in computer language to bring it within reach of the system that will execute it.

Avantageusement, une véritable interface homme-machine permet à un automaticien (le spécialiste métier qui cherche à automatiser ses processus) de décrire facilement voire graphiquement son processus à l'aide d'outils élaborant mémoires et activités à volonté. Un automate peut lui-même devenir une nouvelle activité disponible dans la palette des outils. L'homme du métier saura adapter l'invention à toute interface homme-machine de son choix, des interfaces extrêmement ergonomiques étant connues. Il reste que le pivot de la plateforme de l'automaticien est le langage dont la connaissance de la syntaxe permet à l'automaticien d'intervenir directement. L'homme du métier saura également utiliser le langage de son choix, mais avantageusement un langage très simple décrit en une seule ligne la progression d'un processus élémentaire, d'un émetteur (ou encore serveur) vers un destinataire (ou encore récepteur). L'émetteur va produire une information pour le destinataire et au passage lui appliquer une valeur ajoutée (le traitement). Ceci se fait à l'aide de consignes éventuelles et la réception par le destinataire est accompagnée d'un compte-rendu du travail effectué afin de pouvoir éventuellement décider de la suite du processus. Ces briques élémentaires (cf. figure 5) sont enchaînées pour former le processus général, l'automate. Advantageously, a real man-machine interface allows an automation engineer (the specialist who seeks to automate its processes) to easily describe or even graphically its process using tools developing memories and activities at will. A PLC can itself become a new activity available in the tool palette. Those skilled in the art will be able to adapt the invention to any human-machine interface of their choice, with extremely ergonomic interfaces being known. It remains that the pivot of the platform of the automation engineer is the language whose knowledge of the syntax allows the automation engineer to intervene directly. The skilled person will also be able to use the language of his choice, but advantageously a very simple language describes in a single line the progress of a basic process, a transmitter (or server) to a recipient (or receiver) . The issuer will produce information for the recipient and in passing to apply an added value (the treatment). This is done with the help of possible instructions and the reception by the recipient is accompanied by a report of the work carried out in order to be able to possibly decide on the continuation of the process. These elementary bricks (see Figure 5) are chained to form the general process, the automaton.

Architecture générale General Architecture

En référence à la figure 1, le procédé d'exécution parallèle selon l'invention se fait via un bus applicatif 1. A l'instar des ESB (bus de services d'entreprise), ce bus a avant tout pour fonction de permettre la communication des applications qui à la base ne sont pas pensées pour fonctionner ensemble. Ce bus fonctionne par exemple sous protocole standard (TCP/IP, ...) avantageusement via des ports facilement admis par les pare-feu, serveurs de domaines et passerelles classiques, sous procédure hautement sécurisée. Ceci forme le canal 2 d'échange du bus. Avantageusement, les données circulant dans le bus 1 sont cryptées. Il est connecté à au moins une unité de traitement de données (éventuellement à distance), cette unité assurant son fonctionnement. Des applications récentes et/ou adaptées à un bus applicatif 1 peuvent communiquer avec lui en direct au niveau d'un terminal de bus. With reference to FIG. 1, the parallel execution method according to the invention is carried out via an application bus 1. Like the ESBs (enterprise service bus), this bus is primarily intended to enable the Communication applications that basically are not designed to work together. This bus operates for example under standard protocol (TCP / IP, ...) advantageously via ports easily accepted by firewalls, domain servers and conventional gateways, under highly secure procedure. This forms the bus exchange channel 2. Advantageously, the data flowing in the bus 1 are encrypted. It is connected to at least one data processing unit (possibly remote), this unit ensuring its operation. Recent applications and / or adapted to an application bus 1 can communicate with him live at a bus terminal.

Les anciennes applications qui ne connaissent pas ce bus 1 sont avantageusement prises en charge par des interfaces 3 spécifiques de chacune de ces applications, chargées de leur offrir l'adaptation spécifique leur permettant d'intégrer un terminal de bus (TB) : les CIA (communication interactive par automate). Un CIA est une sorte de pilote d'accueil disposant des ressources nécessaires aux applications connectées aux terminaux de bus. Les unes comme les autres de ces applications peuvent soit être gérées par l'unité de traitement qui gère le bus applicatif 1, mais peuvent aussi bien être gérées par d'autres unités de traitement auxquelles le bus est connecté. Une configuration avantageuse comprend ainsi une machine dite « Station », sur laquelle un utilisateur intervient, et une machine « Partenaire » sur laquelle le bus applicatif est géré. Cette architecture est représentée sur la figure 2. Le composant ISP est une « Interface Station Partenaire ». Il fait le lien entre l'utilisateur de la station (via des IHM en tout genre comme des boites de dialogue, et le bus applicatif 1 dont l'unité de traitement est sur le partenaire. L'interpréteur, décrit précédemment, est le programme qui permet la lecture des automates. Les différents composants TB sont les terminaux de bus à travers lesquels une pluralité de tâches seront lancées vers les applications, exécutées sur la station comme sur le partenaire. Le multiplexage/démultiplexage permet de faire circuler en parallèle sur le canal 2 des données destinées à des applications ou des utilisateurs différents. Pour faire fonctionner ce bus applicatif 1, on commence par l'alimenter avec un ou plusieurs automates 4, accompagnés de règles de liaison et de fonctionnement. The old applications which do not know this bus 1 are advantageously supported by specific interfaces 3 of each of these applications, responsible for offering them the specific adaptation allowing them to integrate a bus terminal (TB): the CIAs ( interactive communication by PLC). A CIA is a kind of host driver with the resources needed for applications connected to bus terminals. Both of these applications can be managed by the processing unit that manages the application bus 1, but can also be managed by other processing units to which the bus is connected. An advantageous configuration thus comprises a machine called "Station", on which a user intervenes, and a machine "Partner" on which the application bus is managed. This architecture is shown in Figure 2. The ISP component is an "Interface Station Partner". It is the link between the user of the station (via HMIs of any kind as dialog boxes, and the application bus 1 whose processing unit is on the partner.) The interpreter, described above, is the program. The various TB components are the bus terminals through which a plurality of tasks will be launched to the applications, executed on the station as on the partner.The multiplexing / demultiplexing allows to circulate in parallel on the terminal. channel 2 data intended for different applications or users To operate this application bus 1, it begins by feeding it with one or more controllers 4, accompanied by connection rules and operation.

Etapes du procédé La première étape lors de l'exécution d'un processus métier est donc comme l'on voit sur la figure 3 une étape 100 d'écriture de ce processus sous la forme d'un automate, soit manuellement de toutes pièces par l'automaticien, soit à partir d'autres automates déjà connus. Dans le cas manuel, l'utilisateur travaille avantageusement sur une station de travail comportant une interface homme-machine, qui lui permet de manipuler intuitivement les automates comme expliqué précédemment, et fait le lien avec le bus applicatif 1. Ces automates sont stockés sous un nom unique pour utilisation ultérieure. En effet, l'utilisateur n'est bien entendu pas obligé de développer un nouveau processus à chaque fois, et peut réutiliser un automate déjà écrit. Dans un cas comme dans l'autre, la commande d'exécution est envoyée au bus via l'ISP, et d'éventuelles tâches nécessitant l'intervention de l'utilisateur lors de l'exécution (une saisie...) repasseront vers l'ISP. Il ne faut toutefois pas confondre les IHM de l'ISP, qui sont divers menus et boites de dialogue, avec l'IHM de développement qui permet de créer un automate. Process Steps The first step during the execution of a business process is therefore as we see in FIG. 3 a step 100 of writing this process in the form of a PLC, either manually from scratch by the automation engineer, or from other PLCs already known. In the manual case, the user works advantageously on a workstation comprising a human-machine interface, which allows him to intuitively manipulate the PLCs as explained above, and makes the link with the application bus 1. These PLCs are stored under a unique name for later use. Indeed, the user is of course not obliged to develop a new process each time, and can reuse a PLC already written. In either case, the execution command is sent to the bus via the ISP, and any tasks requiring the intervention of the user during execution (an entry ...) will return to the ISP. However, do not confuse the HMIs of the ISP, which are various menus and dialogs, with the development HMI that allows you to create a PLC.

L'automate est alors traité par l'interpréteur au cours d'une étape 200. Il faut noter que même si l'automate a été réalisé sur une station de travail par un utilisateur, des unités de traitement autres que celle (ou celles) de cette station de travail peuvent réaliser ce traitement. En effet, comme expliqué précédemment le bus applicatif interconnecte d'éventuelles machines partenaires et stations concernées, et l'interpréteur utilise nativement le bus applicatif. Dans l'un ou l'autre de ces cas, l'étape 200 commence par une sous-étape 210 d'analyse syntaxique effectuée par un module nommé l'analyseur 5 durant laquelle l'automate est tout d'abord résolu en une table représentant les tâches à réaliser (avantageusement une par ligne) a priori parallèles mais dont certaines ont des contraintes. Ainsi un client qui devient service plus loin devra attendre d'être servi avant de pouvoir lui-même servir un autre client. C'est l'analyse de l'automate. Chaque tâche est une action élémentaire exécutable par une unité de traitement donnée à laquelle le bus applicatif est connecté. Les tâches seront décrites plus en détail plus loin dans cette description. Durant cette analyse, la syntaxe de chaque ligne est simplement vérifiée. Les réservations des tables de mémoire sont effectuées. Dans une étape optionnelle 220, les tables de tâches et leurs descripteurs associés sont « chargées » par l'analyseur 5, ce qui consiste en la mise à disposition d'un moteur d'exécution (un runtime, en terminologie anglo-saxonne), compressé, en lieu et place de l'automate. The automaton is then processed by the interpreter during a step 200. It should be noted that even if the automaton was realized on a workstation by a user, processing units other than that (or those) of this workstation can perform this processing. Indeed, as explained above, the application bus interconnects any partner machines and stations concerned, and the interpreter uses the application bus natively. In either of these cases, step 200 begins with a parser sub-step 210 performed by a module named parser 5 during which the automaton is first resolved into a table. representing the tasks to be performed (advantageously one per line) a priori parallel but some of which have constraints. Thus a customer who becomes service later will have to wait to be served before he can serve another customer himself. This is the analysis of the automaton. Each task is an elementary action executable by a given processing unit to which the application bus is connected. Tasks will be described in more detail later in this description. During this analysis, the syntax of each line is simply checked. The reservations of the memory tables are made. In an optional step 220, the task tables and their associated descriptors are "loaded" by the analyzer 5, which consists in providing an execution engine (a runtime, in English terminology), compressed, instead of the automaton.

Les performances en sont d'autant améliorées, et surtout cela permet une grande souplesse si l'ordonnancement évolue en cours d'exécution du processus, comme il sera expliqué plus loin. La figure 4 montre cette séparation en deux blocs, le premier étant le bloc de l'analyseur 5, fonctionnant sur les automates, et le bloc en run-time. The performance is all the better, and above all it allows great flexibility if the scheduling changes during the execution of the process, as will be explained later. Figure 4 shows this separation in two blocks, the first being the block of the analyzer 5, operating on the automata, and the block in run-time.

Le DSP 6 (Découpeur en séquences parallélisées) est un autre module qui effectue la sous-étape suivante 230. C'est la première étape du second bloc de traitement, en run-time. Le DSP 6 rassemble les séquences monolithiques éventuelles (pour alléger le travail d'ordonnancement du bus) et prépare les descriptifs d'ordonnancement qu'il soumet au bus, puis lance une tâche spécialisée de sa bibliothèque comportant la mise en place d'un sémaphore qui permettra l'ordonnancement et les méthodes de transferts de fichiers, commandes CIA, etc. Les consignes associées se présenteront comme des commandes particulières internes au terminal de bus qui pilote une éventuelle CIA. Par exemple une demande de lecture de fichier est universelle mais n'est pas réalisée de la même façon via le CIA d'un traitement de texte ou le CIA d'un tableur. Les sémaphores identifient, pour chacune des tâches, d'éventuelles contraintes de dépendance, c'est-à-dire la nécessité que d'autres tâches soient exécutées préalablement. Il s'agit de lister les antécédents de chaque tâche. Le travail qui consiste à trouver une logique d'enchaînement qui respecte ces contraintes est l'ordonnancement. Les tâches qui n'ont pas de telles contraintes n'ont pas de sémaphore bloquant et se terminent hors contrôle du bus applicatif. Toutes les autres sont ordonnancées grâce à leur sémaphore qui permet de les débloquer à l'instant voulu et d'en connaître la terminaison. En se basant sur la méthode PERT (« project evaluation and review technique », signifiant en français « technique d'évaluation et d'examen de projets »), une méthode de planification et d'ordonnancement découlant de la théorie des graphes, le DSP 6 génère lors d'une quatrième sous-partie 240 une table d'ordonnancement (TO) pour chaque tâche en fonction des éventuelles contraintes de dépendance identifiées. Ces tables donnent, en particulier, les instants optimaux de déclenchement des tâches. En effet, en théorie, pour une grande partie, ces tâches peuvent être exécutées simultanément. Sur des processus comprenant des milliers de tâches, le gain de temps peut être colossal. Le procédé selon l'invention exploite au maximum les capacités de parallélisation massive de l'informatique actuelle et permet grâce aux tables d'ordonnancement de traiter le plus possible de tâches différentes en même temps tout en respectant les contraintes de dépendance. Le DSP 6 fournit chaque table d'ordonnancement au reste du bus applicatif 1. L'ensemble des sémaphores est géré directement dans le canal 2. Ces sémaphores peuvent être soit bloqués soit passant lors du lancement des tâches. Un module appelé l'exécuteur 7 soumet la tâche au scheduling du système, c'est-à-dire le travail à faire pour organiser l'utilisation des ressources de la machine (disque, mémoire, unité centrale, etc.) par les applications qui lui sont confiées. Le scheduling se réalise normalement et sans aucune intervention même au niveau du threading (mot d'origine anglaise signifiant enfilage, correspondant à une manière de gérer l'exécution d'un ensemble d'instructions en langage machine au niveau processeur) qui est du ressort du système d'exploitation hôte. Ce threading éventuel est réalisé par les méthodes de la bibliothèque de la plateforme et n'est donc pas vu de l'analyste automaticien. The DSP 6 (split in parallel sequences) is another module that performs the next substep 230. This is the first step of the second processing block, in run-time. The DSP 6 collects possible monolithic sequences (to lighten the bus scheduling work) and prepares the scheduling documents that it submits to the bus, then launches a specialized task from its library including the setting up of a semaphore which will allow scheduling and methods of file transfers, CIA commands, etc. The associated instructions will be presented as special commands internal to the bus terminal which controls a possible CIA. For example, a file read request is universal but is not done in the same way via the CIA of a word processor or the CIA of a spreadsheet. The semaphores identify, for each task, any dependency constraints, that is to say the need for other tasks to be executed beforehand. This is to list the antecedents of each task. The job of finding a flow logic that respects these constraints is scheduling. Tasks that do not have such constraints do not have a blocking semaphore and terminate outside the application bus control. All the others are scheduled thanks to their semaphore which allows to unlock them at the desired moment and to know the termination. Based on the PERT method ("project evaluation and review technique"), a planning and scheduling method derived from graph theory, the DSP 6 generates in a fourth sub-part 240 a scheduling table (TO) for each task as a function of any identified dependency constraints. These tables give, in particular, the optimal moments of triggering tasks. In theory, for the most part, these tasks can be performed simultaneously. On processes with thousands of tasks, saving time can be huge. The method according to the invention makes maximum use of the massive parallelization capabilities of current computing and makes it possible, thanks to the scheduling tables, to handle as many different tasks as possible at the same time while respecting the constraints of dependence. The DSP 6 provides each scheduling table to the rest of the application bus 1. The set of semaphores is managed directly in the channel 2. These semaphores can be either blocked or passing when starting tasks. A module called the executor 7 submits the task to the scheduling of the system, that is to say the work to be done to organize the use of the resources of the machine (disk, memory, CPU, etc.) by the applications. which are entrusted to him. The scheduling is carried out normally and without any intervention even at the level of the threading (word of English origin meaning threading, corresponding to a way of managing the execution of a set of instructions in machine language at the processor level) which is the responsibility of the host operating system. This possible threading is carried out by the methods of the library of the platform and is therefore not seen by the automation analyst.

De même l'automaticien n'a pas à se soucier de l'ordonnancement automatiquement mis en place par le découpeur et réalisé par le bus applicatif 1. Ce dernier fait finalement l'acquisition en temps quasi réel des tables 5 d'ordonnancement de chaque tâche pour élaborer et gérer une table générale d'ordonnancement. L'étape 300 consiste en l'exécution à proprement parler des tâches par la ou les unités de traitement connectées au bus applicatif en respectant l'ordre imposé par la table générale d'ordonnancement du BA. 10 Les tâches sont soit libres dans leur fonctionnement et au niveau de leurs instants d'exécution, soit avantageusement encadrées par une description des synchronisations à effectuer. Ces synchronisations sont tout simplement des processus vides reliant entre eux des automates parallélisés. Ainsi, les tâches sont exécutées par cycles, une pluralité de 15 tâches compatibles étant lancées de façon synchronisée à chaque cycle. Une telle gestion facilite le contrôle du bon déroulement du processus. On peut également noter que les différents modules utilisés, à savoir l'analyseur 5, le DSP 6 et l'exécuteur 7 fonctionnent eux-mêmes en parallèle. 20 Les tâches Similarly, the automation engineer does not have to worry about the scheduling automatically set up by the chopper and realized by the application bus 1. The latter finally makes the acquisition in near real time of the scheduling tables of each task to develop and manage a general scheduling table. Step 300 consists of the actual execution of the tasks by the processing unit or units connected to the application bus in accordance with the order imposed by the general scheduling table of the BA. The tasks are either free in their operation and at their execution times, or advantageously framed by a description of the synchronizations to be performed. These synchronizations are simply empty processes interconnecting parallelized automata. Thus, the tasks are executed in cycles, a plurality of compatible tasks being started synchronously at each cycle. Such management facilitates the control of the smooth running of the process. It can also be noted that the various modules used, namely the analyzer 5, the DSP 6 and the executor 7 operate themselves in parallel. 20 The tasks

Chaque ligne du code qui compose l'automate constitue avantageusement une tâche élémentaire, comme expliqué précédemment. 25 Une ligne se décompose en diverses parties standardisées qui permettent de spécifier un destinataire (la sortie) et son traitement préalable, un émetteur (l'entrée) et ses consignes de traitement. On peut la représenter de manière graphique (voir figure 5). Chaque destinataire et chaque émetteur est un pointeur qui référencie toute sorte 30 d'objet en mémoire accessibles de façon partagée. Each line of the code that makes up the automaton advantageously constitutes an elementary task, as explained above. A line is broken down into various standardized parts which make it possible to specify a recipient (the output) and its prior processing, a transmitter (the input) and its processing instructions. It can be represented graphically (see Figure 5). Each recipient and transmitter is a pointer that references any sort of shared memory object.

La difficulté due au parallélisme des tâches est que chaque tâche va lire des données, appliquer un traitement et rendre des données. On comprend que la sortie d'une tâche peut devenir l'entrée d'une autre. Ainsi, si les deux tâches se déroulent en parallèle il est nécessaire d'attendre que les données soient traitées par la première avant d'être lues par la seconde : The difficulty due to the parallelism of the tasks is that each task will read data, apply a processing and render data. It is understandable that the output of one task can become the input of another. Thus, if the two tasks take place in parallel, it is necessary to wait for the data to be processed by the first before being read by the second:

Objet initial 4 Ti 4 Objet modifié 4 T2 4 Objet remodifié Il est donc très avantageux d'avoir l'état de l'objet dans une table à accès parallèle (mécanisme IPC, « communication inter processus ») ou accès par guichet (un pointeur multi-accès vers la tâche), et une description des modifications à effectuer par la tâche. On peut donc systématiquement créer les objets (dans la mémoire) avec des valeurs par défaut correspondant à leur nature, mais l'on peut également créer pour chaque tâche une table de destinataires et une autre d'émetteurs avec des valeurs par défaut correspondant aux traitements par défaut. Initial object 4 Ti 4 Modified object 4 T2 4 Remodified object It is therefore very advantageous to have the state of the object in a parallel access table (IPC mechanism, "inter-process communication") or access by window (a pointer multi-access to the task), and a description of the changes to be made by the task. We can therefore systematically create the objects (in the memory) with default values corresponding to their nature, but we can also create for each task a table of recipients and another of emitters with default values corresponding to the processing by default.

L'automate comporte avantageusement des blocs de traitement facilement identifiables par des étiquettes. Ainsi on peut découper de façon plus optimisée que le brutal "ligne à ligne" en demandant à une tâche élémentaire de réaliser plusieurs lignes. Il suffit de lui passer une sous-table de couples destinataire / émetteur à exécuter séquentiellement. On simplifie par là-même le travail du bus applicatif et on optimise beaucoup l'ensemble. Le DSP a alors également la charge d'exploitation des blocs et de réalisation du suivi de leurs séquences. The automaton advantageously comprises processing blocks easily identifiable by tags. Thus one can cut in a more optimized way than the brutal "line to line" by asking an elementary task to realize several lines. It suffices to pass a sub-table of recipient / sender pairs to be executed sequentially. This simplifies the work of the application bus and optimizes the whole lot. The DSP then also has the responsibility of operating the blocks and performing the monitoring of their sequences.

Comptes-rendus et Apprentissage30 Le bus possède par ailleurs son propre système d'évaluation de ses performances. Outre l'objectif de qualité il permet un ordonnancement prédictif capable d'apprentissage. Un coefficient de durée estimatif du temps de réalisation peut être associé à chaque tâche. Ce coefficient est une durée prévisionnelle, fournie au DSP 6 et utilisé pour la génération des tables d'ordonnancement via la méthode PERT. Toutefois, plutôt qu'une valeur précise en unité de temps, c'est un chiffre proportionnel à la quantité d'information traitée et dépendant du type de traitement. On remarquera par exemple qu'un traitement en mémoire vive est très rapide alors qu'un traitement nécessitant des accès disques est bien plus long. De même, on constate qu'il y a plusieurs ordres de grandeur entre les temps nécessités par une saisie humaine (quelques secondes) et une saisie par automate (quelques microsecondes). Ce chiffre n'aura donc pas besoin d'une précision extrême car il sera essentiellement destiné à l'opération d'ordonnancement automatisé. Il n'y aura pas lieu le plus souvent de préciser ce coefficient qui sera automatiquement évalué. On peut en effet classer en cinq grandes catégories les temps de traitement : - en registres et en cache (très rapide) - en RAM (rapide) - nécessitant des accès disque - Nécessitant des accès réseau - Nécessitant une activité humaine (IHM). Reports and Learning30 The bus also has its own performance evaluation system. In addition to the objective of quality it allows predictive scheduling capable of learning. An estimated duration coefficient of the completion time may be associated with each task. This coefficient is a predicted duration, supplied to the DSP 6 and used for the generation of the scheduling tables via the PERT method. However, rather than a precise value in unit of time, it is a number proportional to the amount of information processed and depending on the type of treatment. It will be noted for example that a processing in RAM is very fast while a treatment requiring disk access is much longer. Similarly, we can see that there are several orders of magnitude between the times required by a human input (a few seconds) and a PLC input (a few microseconds). This figure will therefore not need extreme precision because it will be mainly for the automated scheduling operation. It will not be necessary most often to specify this coefficient which will be automatically evaluated. We can indeed classify in five major categories processing times: - in registers and cache (very fast) - in RAM (fast) - requiring disk access - Requiring network access - Requiring human activity (HMI).

Lors de son ordonnancement des tâches, le bus applicatif sera ainsi en mesure de planifier rapidement ses ressources et de mettre en place les mécanismes de synchronisation de toute façon nécessaires pour palier à toute éventualité. Comme l'on voit sur la figure 5, un compte-rendu (CR) est émis une fois la tâche accomplie, au cours d'une étape 400 (voir figure 3). Ce compte-rendu, fourni également par le bus applicatif 1, peut ne concerner que certaines tâches, mais avantageusement est fourni pour toute tâche ayant au moins une contrainte d'ordonnancement, voire pour toutes les tâches. Ce compte-rendu permet en effet tout d'abord de contrôler le bon déroulement du processus, mais il permet surtout un feed-back. Un module optionnel, lui-même exécuté en parallèle, récupère de façon préférentielle ces données pour mettre à jour les coefficients de durée estimatifs des nouvelles tables en acquisition. Pour cela le compte-rendu comprend avantageusement au moins deux informations : une information logique de bon déroulement ou non de la tâche, par exemple une variable booléenne, et une information temporelle de durée réelle de réalisation de ladite tâche. Grâce à l'information logique, le bus applicatif 1 s'assure soit de la terminaison de la tâche et donc d'un enchaînement correct des tâches dépendantes, soit de sa poursuite. Une table de décisions permet de traiter les cas programmés suivant le code de terminaison de chaque tâche. Grâce à l'information temporelle, la durée réelle est comparée avec la durée estimative, et cette dernière est ainsi corrigée si nécessaire. La boucle de feed-back est particulièrement visible sur la figure 4 : en cas de correction, l'ordonnancement est réeffectué. Si avantageusement le bloc DSP-exécuteur est en run-time, il n'y a pas besoin de revenir à l'automate, les tables et les descripteurs de chacune des tâches étant déjà chargées. Le réordonnancement se fait ainsi très rapidement. Un tableau de bord est tenu en temps quasi réel ainsi que des indicateurs d'alerte en cas d'anomalie réseau. When scheduling tasks, the application bus will be able to quickly plan its resources and set up the synchronization mechanisms anyway necessary to mitigate any eventuality. As can be seen in FIG. 5, a report (CR) is issued once the task has been completed, during a step 400 (see FIG. 3). This report, also provided by the application bus 1, may concern only certain tasks, but advantageously is provided for any task having at least one scheduling constraint, or even for all the tasks. This report allows first of all to control the smooth running of the process, but it allows above all a feedback. An optional module, itself executed in parallel, preferentially retrieves these data to update the estimated duration coefficients of the new tables in acquisition. For this purpose the report advantageously comprises at least two pieces of information: logical information about whether or not the task is running smoothly, for example a Boolean variable, and time information of actual duration of completion of said task. With the logic information, the application bus 1 ensures either the termination of the task and therefore a correct sequence of dependent tasks, or its continuation. A decision table is used to process the programmed cases according to the termination code of each task. Thanks to the temporal information, the actual duration is compared with the estimated duration, and the latter is thus corrected if necessary. The feedback loop is particularly visible in Figure 4: in case of correction, the scheduling is re-performed. If the DSP-executor block is advantageously in run-time, there is no need to return to the PLC, the tables and descriptors of each task being already loaded. Reordering is done very quickly. A dashboard is kept in near real time as well as warning indicators in the event of a network anomaly.

Exemple de communication par le bus applicatif Example of communication via the application bus

Voici un exemple d'une utilisation du bus dans le cas de la figure 2 d'une station et d'une machine partenaire. Les flèches désignent l'enchaînement des actions dans la table 1, certaines sont simultanées. Here is an example of a bus use in the case of Figure 2 of a station and a partner machine. The arrows indicate the sequence of actions in table 1, some are simultaneous.

Station Partenaire ISP actif : Demande d'un service -> Initialisation. Active IHM <- Propose un menu Remplissage guide par usager 1 -> Stockage pour réemploi futur éventuel .J Désactive IHM. Choix du CIA adapté. 1 Activation CIA + application 1 <- Envoi des consignes de montage Montage de l'original ; stock local. -> Stockage pour réemploi futur éventuel 1 Insertion des variables 1 <- Fourniture des variables Modifications usager ; stock local. -> Stockage pour réemploi futur éventuel 1 Réactivation CIA. +application 1 Envoi consignes démontage Démontage/comparaison stocks. -> M.à j. memdos ; m. à j. hors standard ; Stockage compte rendu CIA Ferme appli +Désactivation CIA. <- Fin service Table 1 Active ISP Partner Station: Service Request -> Initialization. Active HMI <- Offers a menu Filling guide by user 1 -> Storage for possible future use. J Disables HMI. Choice of the adapted CIA. 1 CIA activation + application 1 <- Sending installation instructions Mounting the original; local stock. -> Storage for possible future reuse 1 Insert variables 1 <- Provision of variables User modifications; local stock. -> Storage for possible future reuse 1 CIA Reactivation. + application 1 Shipping instructions dismantling Dismantling / comparison stocks. -> M. to j. memdos; m. to j. out of standard; Storage report CIA Firm app + Disable CIA. <- End Service Table 1

La demande de service implique que l'ISP soit actif. L'activation IHM signifie l'activation d'une boîte de dialogue chargée des échanges concernant le lancement de la phase du processus métier concernée. The service request implies that the ISP is active. HMI activation means the activation of a dialog box responsible for the exchanges concerning the launch of the phase of the business process concerned.

Le guide rempli est retourné au partenaire qui le stocke pendant que l'ISP termine l'IHM (bordereau par exemple). Le partenaire demande ensuite à l'ISP d'activer un CIA adapté au traitement qui va suivre ainsi que l'application bureautique visée. Il envoie les consignes de montage qui comportent : 1) les clauses à monter, c'est-à-dire l'ensemble des données prédéfinies pour l'objet en cours de réalisation, un modèle (par exemple, s'il s'agit d'un contrat, cela correspondra à un texte de base avec des trous aux endroits où il faudra rajouter les noms des sociétés, la date, les noms des participants...). Les clauses peuvent être standard, ou hors standard si des modifications forcées ont été faites (modifications du modèle) et stockées ; 2) Les variables existantes dans la mémoire dossier (« memdos ») ; 3) Des actions connexes pour demander au CIA de s'acquitter d'une série de tâches simples standardisées. The completed guide is returned to the partner who stores it while the ISP completes the HMI (slip for example). The partner then asks the ISP to activate an adapted CIA for the following treatment as well as the intended office application. It sends the assembly instructions which include: 1) the clauses to be assembled, that is to say the set of predefined data for the object in progress, a model (for example, if it is of a contract, this will correspond to a basic text with holes in places where it will be necessary to add the names of the companies, the date, the names of the participants ...). Clauses can be standard, or off-standard if forced changes have been made (model changes) and stored; 2) Existing variables in the folder memory ("memdos"); 3) Related actions to request the CIA to perform a series of standardized simple tasks.

Systèmes systems

L'invention propose selon un deuxième aspect des systèmes pouvant mettre en oeuvre un procédé selon le premier aspect de l'invention. According to a second aspect, the invention proposes systems that can implement a method according to the first aspect of the invention.

La première fonctionnalité demandée au bus applicatif est d'assurer l'acheminement de toutes les données entre tous les acteurs de toutes les configurations interconnectées. Tous les acteurs peuvent être rassemblés dans une seule station, l'unité de traitement du bus applicatif étant celle de la station. Dans ce cas là, le système selon l'invention comprend la station de travail, celle-ci comprenant tout d'abord des moyens d'affichage de données et des moyens de saisie de données. Il peut s'agir classiquement d'un écran et d'un clavier avec une souris. Ce matériel sert tout simplement à mettre en oeuvre une ou plusieurs interfaces homme-machine permettant à un utilisateur de composer ses automates ou d'en utiliser, et d'interagir avec l'ISP. Le système selon l'invention comprend alors également une unité de traitement de données, qui est l'unité reliée au bus applicatif, et une mémoire. Pour que le système ait un intérêt, l'unité de traitement doit être de préférence un processeur multicoeur, c'est-à-dire un processeur qui pourra tirer parti de l'exécution parallèle. Alternativement le système selon l'invention peut ne pas se contenter d'une seule station de travail, mais comprendre comme expliqué précédemment au moins une machine partenaire. Il peut en outre y avoir plusieurs stations de travail contrôlées par des utilisateurs, les différentes stations ayant chacune une unité de traitement et utilisant les mêmes machines partenaires autour d'un bus applicatif unique, comme l'on voit sur la figure 6. Le bus applicatif sert de Multiples Stations (usagers) et de Multiples Partenaires (automates) en configuration dite MSMP. Il fonctionne en diverses configurations dites « dégradées » Simple/Multiple Station/Partenaire SSSP, SSMP, MSSP et MSMP. Enfin, le bus applicatif est capable dans toute la mesure du possible de prendre en charge les 18 liaisons du type temps réel nécessaires à certains dispositifs (périphériques, commande de chaînes de production, ...). Il offre ainsi une passerelle entre le monde industriel et le monde du bureau par exemple pour obtenir un tableau temps réel de la production. The first functionality requested from the application bus is to ensure the routing of all data between all the actors of all the interconnected configurations. All the actors can be gathered in a single station, the processing unit of the application bus being that of the station. In this case, the system according to the invention comprises the workstation, the latter comprising first of all data display means and data acquisition means. It can be classically a screen and a keyboard with a mouse. This equipment is simply used to implement one or more human-machine interfaces allowing a user to compose his PLCs or to use them, and to interact with the ISP. The system according to the invention then also comprises a data processing unit, which is the unit connected to the application bus, and a memory. For the system to be of interest, the processing unit should preferably be a multicore processor, i.e., a processor that can take advantage of parallel execution. Alternatively the system according to the invention may not be content with a single workstation, but understand as explained above at least one partner machine. There may also be several workstations controlled by users, the different stations each having a processing unit and using the same partner machines around a single application bus, as can be seen in Figure 6. The bus The application serves as multiple stations (users) and multiple partners (PLCs) in MSMP configuration. It operates in various configurations called "degraded" Simple / Multiple Station / Partner SSSP, SSMP, MSSP and MSMP. Finally, the application bus is capable as far as possible of supporting the 18 links of the real-time type required for certain devices (peripherals, control of production lines, etc.). It thus provides a bridge between the industrial world and the office world for example to obtain a real-time picture of the production.

Le bus utilise la connectique et les supports physiques existants entre les machines de types habituellement utilisés (serveur de fichiers, serveur Web, Serveur d'applications, etc.). En particulier, deux ports TCP/IP peuvent lui être réservés (12 et 14 ou 3012 et 3014) pour ses communications à débit maximum et optimisé. Les communications sont multiplexées et chaque segment possède une priorité. Les messages de synchronisation des tâches sont les plus prioritaires ainsi que les éventuelles liaisons temps réel. Les opérations d'ordonnancement du bus applicatif peuvent être dans ce cas traitées par un calculateur, idéalement vectoriel, qui est une unité de traitement de l'une des machines partenaires, qui peut être dédié. Sur de moyennes configurations, une carte graphique située sur un partenaire est utilisée comme GPGPU (General-Purpose computation on Graphics Processing Units). En effet une carte graphique est un calculateur vectoriel complet. The bus uses the connections and the existing physical media between the usual types of machines (file server, web server, application server, etc.). In particular, two TCP / IP ports can be reserved for it (12 and 14 or 3012 and 3014) for its maximum throughput and optimized communications. The communications are multiplexed and each segment has a priority. The task synchronization messages are the highest priorities as well as any real-time links. In this case, the scheduling operations of the application bus can be processed by a calculator, ideally vector, which is a processing unit of one of the partner machines, which can be dedicated. On average configurations, a graphics card located on a partner is used as GPGPU (General-Purpose Computation on Graphics Processing Units). Indeed a graphics card is a complete vector calculator.

Etant a priori réparti, le bus applicatif fonctionne préférentiellement dans un cadre sécurisé. Le multiplexeur/démultiplexeur est donc muni d'une solide fonction de cryptage. Le système utilisé est un cryptage par clefs aléatoires de longueurs variables et rafraîchies automatiquement. Ainsi toute attaque est déjouée par un changement de clef en un temps plus court que celui demandé par la recherche de clef. Il y a une clef par port et par sens de transmission. La transmission de la nouvelle clef aléatoirement calculée est elle-même sécurisée par la clef précédente. Ainsi, même si la clef initiale (utilisée une unique fois lors du login) est connue, il ne peut être question de pénétrer la suite des échanges. Being distributed a priori, the application bus preferably operates in a secure environment. The multiplexer / demultiplexer is thus provided with a strong encryption function. The system used is random key encryption of variable lengths and automatically refreshed. Thus any attack is thwarted by a key change in a shorter time than that requested by the key search. There is a key by port and by direction of transmission. The transmission of the new randomly calculated key is itself secured by the previous key. Thus, even if the initial key (used once during the login) is known, there can be no question of penetrating further exchanges.

La solidité de l'ensemble est soumise à un objectif de qualité qui fait que le bus applicatif réalise de façon particulièrement avantageuse un traçage de ses opérations et des transactions. Ce traçage n'est bien entendu pas prioritaire et n'impacte pas les performances de l'ensemble. Il est traité comme une acquisition de données stockées en cache puis sauvegardées dans les temps de plus faible priorité. Un outil annexe peut permettre d'exploiter ces données à la demande et à loisir pour y rechercher l'historique de tout évènement ou en extraire toute statistique utile, ou encore permettre le réglage plus précis des paramètres du bus applicatif de façon à en optimiser le fonctionnement pour une configuration donnée. The strength of the whole is subject to a quality objective that makes the application bus performs particularly advantageously a tracing of its operations and transactions. This tracing is of course not a priority and does not impact the performance of the whole. It is treated as an acquisition of data stored in cache and then saved in times of lower priority. An additional tool can make it possible to use these data on demand and at leisure to search the history of any event or extract any useful statistics, or allow more precise adjustment of the parameters of the application bus so as to optimize it. operation for a given configuration.

L'invention apporte donc une architecture parfaite pour être mis dans les mains d'un expert dans son métier sans avoir besoin d'être assisté d'un informaticien. Ses interfaces homme-machine associées permettent d'une part de décrire une scène, les acteurs dans la scène et les actions menées dans le cadre d'un processus métier, et d'autre part de conserver un savoir- faire pour le mettre à disposition de tous, d'ordonnancer l'ensemble des tâches qui le constituent, et surtout de paralléliser automatiquement sans effort Ses fonctions d'apprentissage lui assurent une évolutivité et la garantie d'amélioration constante de ses performances, et ce sans qu'un utilisateur ait à intervenir. Il rend les services de sécurisation des échanges, de traduction des langages, d'acheminement des données et des fichiers et de compte rendu du fonctionnement. Il sait dialoguer et piloter des applications hétérogènes intégrées au processus métier, et en particulier les applications bureautiques. The invention thus provides a perfect architecture to be put in the hands of an expert in his profession without needing to be assisted by a computer scientist. Its associated human-machine interfaces allow on the one hand to describe a scene, the actors in the scene and the actions carried out as part of a business process, and on the other hand to keep a know-how to make it available. of all, to schedule all the tasks that constitute it, and especially to automatically parallelize effortlessly Its learning functions ensure scalability and the guarantee of continuous improvement of its performance, and this without a user has to intervene. It renders the services of exchange security, language translation, data and file routing and operation reporting. He knows how to dialogue and pilot heterogeneous applications integrated in the business process, and in particular the office applications.

Claims (7)

REVENDICATIONS1. Procédé d'exécution parallèle d'une pluralité de tâches ordonnées selon une table d'ordonnancement, exécutées par au moins une unité de traitement de données connectée à un bus applicatif, à chaque tâche étant associé un coefficient de durée estimatif du temps de réalisation de ladite tâche, caractérisé en ce qu'un compte-rendu est fourni par le bus applicatif lors de l'exécution d'au moins une tâche, le coefficient de durée estimatif du temps de réalisation de ladite tâche étant mis à jour en fonction du contenu dudit compte-rendu. REVENDICATIONS1. A method of parallel execution of a plurality of scheduled tasks according to a scheduling table executed by at least one data processing unit connected to an application bus, each task being associated with an estimated duration coefficient of the execution time of said task, characterized in that a report is provided by the application bus when performing at least one task, the estimated duration coefficient of the completion time of said task being updated according to the content said report. 2. Procédé selon la revendication 1, dans lequel le compte-rendu fourni par le bus applicatif lors de l'exécution d'au moins une tâche comprend une information logique de bon déroulement ou non de ladite tâche, et une information temporelle de durée réelle de réalisation de ladite tâche. 2. Method according to claim 1, wherein the report provided by the application bus during the execution of at least one task comprises logical information of whether or not the task is performed correctly, and time information of real duration. performing said task. 3. Procédé selon l'une des revendications 1 à 2, dans lequel un compte-rendu est fourni pour toute tâche ayant au moins une contrainte d'ordonnancement. 3. Method according to one of claims 1 to 2, wherein a report is provided for any task having at least one scheduling constraint. 4. Procédé selon l'une des revendications 1 à 3, dans lequel la pluralité de tâches ordonnées selon la table d'ordonnancement est obtenue à partir d'un processus en mettant en oeuvre les étapes suivantes : - écriture du processus sous la forme d'un automate ; - détermination d'un enchaînement de tâches qui permet la résolution de l'automate, chaque tâche étant une action élémentaire exécutable par une unité de traitement donnée à laquelle ledit bus applicatif est connecté ; - identification, pour chacune desdites tâches, d'éventuelles contraintes de dépendance vis-à-vis des autres tâches ;- génération de la table d'ordonnancement des tâches en fonction des éventuelles contraintes de dépendance identifiées. 4. Method according to one of claims 1 to 3, wherein the plurality of tasks ordered according to the scheduling table is obtained from a process by implementing the following steps: - writing the process in the form of 'an automat ; - Determining a sequence of tasks that allows the resolution of the controller, each task being an elementary action executable by a given processing unit to which said application bus is connected; identification, for each of said tasks, of any constraints of dependence on the other tasks, generation of the task scheduling table as a function of any identified dependency constraints. 5. Procédé selon l'une des revendications 1 à 4, dans lequel la pluralité de tâches ordonnées selon la table d'ordonnancement est exécutée par cycles, une pluralité de tâches compatibles étant lancées de façon synchronisée à chaque cycle. 5. Method according to one of claims 1 to 4, wherein the plurality of tasks ordered according to the scheduling table is executed in cycles, a plurality of compatible tasks being started synchronously each cycle. 6. Procédé selon la revendication 5, dans lequel la synchronisation des tâches s'effectue en minimisant le temps total d'exécution à partir des coefficients de durée associés aux tâches exécutables. The method of claim 5, wherein the synchronization of the tasks is performed by minimizing the total execution time from the time coefficients associated with the executable tasks. 7. Système comprenant au moins, une unité de traitement de données mettant en oeuvre le procédé selon l'une des revendications 1 à 6, une mémoire dans laquelle sont stockés lesdits coefficients de durée estimatifs du temps de réalisation de la pluralité de tâches, et une entrée recevant la pluralité de tâches ordonnées selon une table d'ordonnancement à exécuter. 7. System comprising at least one data processing unit implementing the method according to one of claims 1 to 6, a memory in which are stored said estimated duration coefficients of the time of completion of the plurality of tasks, and an input receiving the plurality of ordered tasks according to a scheduling table to be executed.
FR1056108A 2010-07-26 2010-07-26 METHOD OF PARALLEL EXECUTION OF A PLURALITY OF ORDINATED TASKS ACCORDING TO A SCHEDULING TABLE Expired - Fee Related FR2963126B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
FR1056108A FR2963126B1 (en) 2010-07-26 2010-07-26 METHOD OF PARALLEL EXECUTION OF A PLURALITY OF ORDINATED TASKS ACCORDING TO A SCHEDULING TABLE
PCT/EP2011/062004 WO2012013504A1 (en) 2010-07-26 2011-07-13 Method for the parallel execution of a plurality of tasks arranged according to a schedule table
EP11735635.2A EP2599046A1 (en) 2010-07-26 2011-07-13 Method for the parallel execution of a plurality of tasks arranged according to a schedule table

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1056108A FR2963126B1 (en) 2010-07-26 2010-07-26 METHOD OF PARALLEL EXECUTION OF A PLURALITY OF ORDINATED TASKS ACCORDING TO A SCHEDULING TABLE

Publications (2)

Publication Number Publication Date
FR2963126A1 true FR2963126A1 (en) 2012-01-27
FR2963126B1 FR2963126B1 (en) 2012-10-12

Family

ID=43768974

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1056108A Expired - Fee Related FR2963126B1 (en) 2010-07-26 2010-07-26 METHOD OF PARALLEL EXECUTION OF A PLURALITY OF ORDINATED TASKS ACCORDING TO A SCHEDULING TABLE

Country Status (3)

Country Link
EP (1) EP2599046A1 (en)
FR (1) FR2963126B1 (en)
WO (1) WO2012013504A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013110816A2 (en) 2012-01-27 2013-08-01 Tymis Method of using a shared memory
WO2013110819A1 (en) 2012-01-27 2013-08-01 Tymis Method of parallel execution of a plurality of computing tasks

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006061630A2 (en) * 2004-12-10 2006-06-15 British Telecommunications Public Limited Company Workflow scheduler
US20070112610A1 (en) * 2005-11-15 2007-05-17 General Electric Company System and method for clinical process decisioning
US20090171706A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Computer pattern system environment supporting business resiliency

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006061630A2 (en) * 2004-12-10 2006-06-15 British Telecommunications Public Limited Company Workflow scheduler
US20070112610A1 (en) * 2005-11-15 2007-05-17 General Electric Company System and method for clinical process decisioning
US20090171706A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Computer pattern system environment supporting business resiliency

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"The BPMS Report: TIBCO iProcess Suite 10.6", July 2007 (2007-07-01), XP002630376, Retrieved from the Internet <URL:http://www.fr.tibco.com/multimedia/analyst-bruce-silver-reviews-tibco-bpms_tcm18-2376.pdf> [retrieved on 20110328] *
DANIEL F ET AL: "Business Compliance Governance in Service-Oriented Architectures", ADVANCED INFORMATION NETWORKING AND APPLICATIONS, 2009. AINA '09. INTERNATIONAL CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, 26 May 2009 (2009-05-26), pages 113 - 120, XP031476090, ISBN: 978-1-4244-4000-9 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013110816A2 (en) 2012-01-27 2013-08-01 Tymis Method of using a shared memory
WO2013110819A1 (en) 2012-01-27 2013-08-01 Tymis Method of parallel execution of a plurality of computing tasks

Also Published As

Publication number Publication date
FR2963126B1 (en) 2012-10-12
WO2012013504A1 (en) 2012-02-02
EP2599046A1 (en) 2013-06-05

Similar Documents

Publication Publication Date Title
US11429433B2 (en) Process discovery and automatic robotic scripts generation for distributed computing resources
Van der Aalst Business process management: a comprehensive survey
Rasheed et al. Requirement engineering challenges in agile software development
Sheth et al. Processes driving the networked economy
US20190138961A1 (en) System and method for project management using artificial intelligence
US8032635B2 (en) Grid processing in a trading network
US20070179822A1 (en) Method and apparatus for business process transformation wizard
FR2869698A1 (en) METHOD FOR MONITORING AND DIAGNOSING MACHINES
Vaisman An introduction to business process modeling
CN110991984A (en) Digital operation analysis platform and method based on enterprise information heterogeneous system
Piccinelli et al. Web service interfaces for inter-organisational business processes an infrastructure for automated reconciliation
WO2009147310A1 (en) Method for data management in a collaborative service-oriented workshop
CN115719207A (en) Super-automation platform system
Fleischmann et al. A primer to subject-oriented business process modeling
EP2599045A1 (en) Method for the parallel execution of a computer process by an application bus
Camarinha-Matos et al. Hierarchical coordination in virtual enterprise infrastructures
FR2963126A1 (en) METHOD OF PARALLEL EXECUTION OF A PLURALITY OF ORDINATED TASKS ACCORDING TO A SCHEDULING TABLE
Lee-Klenz et al. A requirements elicitation framework and tool for sourcing business-IT aligned e-services
Matejaš et al. Building a BPM application in an SOA-based legacy environment
Murguzur et al. Process flexibility in service orchestration: A systematic literature review
Liu Integration of model driven engineering and ontology approaches for solving interoperability issues
CN117289916B (en) Digital intelligent PaaS platform system
Rabelo et al. For a smart coordination of distributed business processes
Angelov et al. Supporting the diversity of B2B e-contracting processes
Gorton Policy-driven Reconfiguration of Service-targeted Business Processes

Legal Events

Date Code Title Description
TP Transmission of property

Owner name: YVES ALBRIEUX, FR

Effective date: 20141031

ST Notification of lapse

Effective date: 20160331