[go: up one dir, main page]

DE102005018864B4 - Method and system for generating a source code for a computer program - Google Patents

Method and system for generating a source code for a computer program Download PDF

Info

Publication number
DE102005018864B4
DE102005018864B4 DE102005018864.8A DE102005018864A DE102005018864B4 DE 102005018864 B4 DE102005018864 B4 DE 102005018864B4 DE 102005018864 A DE102005018864 A DE 102005018864A DE 102005018864 B4 DE102005018864 B4 DE 102005018864B4
Authority
DE
Germany
Prior art keywords
source code
subject
subjects
file
data
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.)
Expired - Lifetime
Application number
DE102005018864.8A
Other languages
German (de)
Other versions
DE102005018864A1 (en
Inventor
Dr. Fleischmann Albert
Nils Meyer
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.)
Allgeier It Solutions De GmbH
Original Assignee
Metasonic AG
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 Metasonic AG filed Critical Metasonic AG
Priority to DE102005018864.8A priority Critical patent/DE102005018864B4/en
Publication of DE102005018864A1 publication Critical patent/DE102005018864A1/en
Application granted granted Critical
Publication of DE102005018864B4 publication Critical patent/DE102005018864B4/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Verfahren zum Erzeugen eines Quellcodes für ein Computerprogramm zur Ausführung bzw. Simulation eines Geschäftsprozesses, umfassend folgende Schritte: – Festlegen von natürlichen Personen und/oder Geräten und/oder Teilen von Geräten des Geschäftsprozesses als Subjekte, wobei die Subjekte im Geschäftsprozess miteinander kommunizieren und/oder Handlungen ausführen, – Beschreiben des Geschäftsprozesses mit einem graphischen Diagramm als Blockschaltbild, wobei ein jedes Subjekt durch einen Block und die Kommunikation zwischen den Subjekten als Pfeile zwischen den Blöcken dargestellt werden, wodurch ein jedes Subjekt, die Kommunikation zwischen den Subjekten und die Art der Tätigkeit der einzelnen Subjekte definiert werden, – Speichern des so definierten Geschäftsprozesses in einer Prozessdatei, – automatisches Erzeugen eines Quellcodes für ein Computerprogramm aus der Prozessdatei, wobei für ein jedes Subjekt eine separate Quellcodedatei erzeugt wird, die jeweils Befehle zum Austausch von Daten mit Quellcodedateien weiterer Subjekte gemäß den in der Prozessdatei enthaltenen Informationen umfasst, wobei der Quellcode eines jeden Subjektes ein separates, ausführbares Programm darstellt, wobei jedes Subjekt einen Puffer zum Empfangen von Nachrichten aufweist, wobei der Quellcode derart ausgebildet ist, dass als Befehle zum Austausch von Daten Kommunikationsbefehle verwendet werden, die auf dem Monitorkonzept beruhen, so dass ein aktives Warten (busy waiting) vermieden wird.A method for generating a source code for a computer program for executing or simulating a business process, comprising the following steps: Defining natural persons and / or devices and / or parts of devices of the business process as subjects, the subjects communicating with one another and / or in the business process Performing actions, - Describing the business process with a graphic diagram as a block diagram, where each subject is represented by a block and the communication between the subjects as arrows between the blocks, whereby each subject, the communication between the subjects and the nature of the activity of the individual subjects are defined, - Saving the business process thus defined in a process file, - Automatic generation of a source code for a computer program from the process file, with a separate source code file being generated for each subject, each containing commands for exchanging Data with source code files of further subjects according to the information contained in the process file, the source code of each subject representing a separate, executable program, each subject having a buffer for receiving messages, the source code being designed such that as commands for exchange communication commands based on the monitor concept are used for data, so that active waiting (busy waiting) is avoided.

Description

Die Erfindung betrifft ein Verfahren und System zum Erzeugen eines Quellcodes für ein Computerprogramm zur Ausführung bzw. Simulation eines Prozesses, bei dem mehrere Subjekte miteinander kommunizieren. Insbesondere ist das erfindungsgemäße Verfahren zum Erzeugen eines Quellcodes für ein Computerprogramm zur Ausführung bzw. Simulation eines komplexen Prozesses, mit einer Vielzahl von Subjekten vorgesehen, die miteinander kommunizieren.The invention relates to a method and system for generating a source code for a computer program for executing a process in which a plurality of subjects communicate with each other. In particular, the method according to the invention for generating a source code for a computer program for executing or simulating a complex process is provided, with a large number of subjects communicating with one another.

Verfahren zum automatischen Erzeugen eines Quellcodes sind hinlänglich bekannt. So ist in der WO 98/39698 ein Verfahren zum Erstellen eines einen betriebswirtschaftlichen Prozess steuernden Computerprogramms beschrieben, bei dem zunächst mehrere Diagramme erzeugt werden, um mit Hilfe dieser Diagramme automatisch das Computerprogramm erzeugt wird.Methods for automatically generating a source code are well known. So is in the WO 98/39698 describe a method for creating a computer program controlling a business process, in which first several diagrams are generated in order to automatically generate the computer program with the aid of these diagrams.

Ein weiteres derartiges Verfahren ist in der DE 100 08 632 B4 beschrieben, bei der auch aus speziellen Diagrammen automatisch ein Quellcode erzeugt wird.Another such method is in DE 100 08 632 B4 described in which even from special diagrams automatically generates a source code.

Mit bekannten Verfahren zum automatischen Erzeugen eines Quellcodes können sowohl für technische als auch betriebswirtschaftliche Prozesse Computerprogramme automatisch erzeugt werden. Jedoch ist es mit diesen bekannten Verfahren schwierig, komplexe Prozesse in einem Computerprogramm umzusetzen. Komplexe Prozesse werden oftmals von einem bekannten Verfahren nicht bewältigt. Sollten die bekannten Verfahren es jedoch schaffen, für komplexe Prozesse auch einen Quellcode automatisch zu erzeugen, dann ist der Quellcode zum einen sehr umfangreich und zum anderen aufgrund der Komplexität des zugrunde liegenden Prozesses oftmals fehlerbehaftet und langsam in der Ausführung.With known methods for automatically generating a source code computer programs can be generated automatically for both technical and business processes. However, with these known methods, it is difficult to implement complex processes in a computer program. Complex processes are often not overcome by a known method. However, if the known methods manage to automatically generate source code for complex processes as well, then the source code is very extensive and, due to the complexity of the underlying process, often erroneous and slow to execute.

In der Master-Thesis ”Mission-flow Constructor; A Workflow Management System Using Mobile Agents”, V. S. Sundaram, 2000 wird ein als Mission-flow Constructor (MfC) beschriebenes workflow management System beschrieben, das einen grafisch dargestellten Prozess (workflow) durch eine Vielzahl mobiler Agenten darstellt. Es wird unter anderem vorgeschlagen, für jede Aufgabe einen separaten Agenten vorzusehen. Alternativ kann auch für jeden Ort, an welchem der Prozess ausgeführt wird, lediglich ein Agent vorgesehen werden, der die an diesem Ort auszuführenden Aufgaben übernimmt.In the master's thesis "Mission-flow Constructor; A Workflow Management System Using Mobile Agents ", V. S. Sundaram, 2000 describes a workflow management system described as a Mission-Flow Constructor (MfC), which is a graphically represented workflow through a variety of mobile agents. It is proposed, inter alia, to provide a separate agent for each task. Alternatively, for each location where the process is performed, only one agent can be provided to perform the tasks to be performed at that location.

Aus der US 2004/0078420 A1 geht ein System für die Organisation eines verteilten Prozesse (distributed process management) hervor, das eine Vielzahl von Software-Einheiten umfasst, die auf einer Computerplattform ausgeführt werden. Es ist eine weitere Software zum Steuern des Betriebes der vielen Software-Einheiten vorgesehen. Mittels einer grafischen Benutzerschnittstelle kann ein Benutzer mit dem System interagieren.From the US 2004/0078420 A1 shows a system for the organization of a distributed process (distributed process management), which includes a variety of software units that are executed on a computer platform. There is another software for controlling the operation of the many software units. A graphical user interface allows a user to interact with the system.

Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren und ein System zum Erzeugen eines Quellcodes für ein Computerprogramm zur Ausführung bzw. Simulation eines komplexen Prozesses zu schaffen, das sofort ausführbar ist. Die Aufgabe wird durch ein Verfahren mit den Merkmalen des Anspruchs 1 und durch ein System mit den Merkmalen des Anspruchs 10 und einen Datenträger mit den Merkmalen des Anspruchs 12 gelöst.The invention has for its object to provide a method and a system for generating a source code for a computer program for the execution or simulation of a complex process that is immediately executable. The object is achieved by a method having the features of claim 1 and by a system having the features of claim 10 and a data carrier having the features of claim 12.

Vorteilhafte Ausgestaltungen der Erfindung sind in den jeweiligen Unteransprüchen angegeben.Advantageous embodiments of the invention are specified in the respective subclaims.

Durch das automatische Erzeugen einer Quellcodedatei für jedes Subjekt, das einen Quellcode enthält, in dem Befehle zum Austausch von Daten mit Quellcodedateien weiterer Subjekte enthalten sind, können selbst beliebig komplexe Prozesse einfach und strukturiert automatisch in einen Quellcode umgesetzt werden. Je komplexer ein Prozess ist, desto mehr Quellcodedateien erzeugt das erfindungsgemäße Verfahren, wobei die einzelnen Quellcodedateien nicht komplexer werden. Es hat sich gezeigt, dass bei komplexen Prozessen mit vielen Quellcodedateien jede einzelne Quellcodedatei lediglich mit einer begrenzten Anzahl von weiteren Quellcodedateien kommuniziert, so dass die Struktur einer jeden einzelnen Quellcodedatei einfach und daher wenig fehleranfällig ist. Zur Speicherung und Verwaltung einer Vielzahl von Quellcodedateien muss lediglich eine ausreichend große Speicherkapazität vorgesehen sein. Prinzipielle Probleme werden hierdurch nicht erzeugt.By automatically generating a source code file for each subject containing a source code containing instructions for exchanging data with source code files of other subjects, even arbitrarily complex processes can be automatically and simply automatically translated into source code. The more complex a process, the more source code files the method of the present invention produces, and the individual source code files do not become more complex. It has been found that in complex processes with many source code files, each individual source code file only communicates with a limited number of other source code files, so that the structure of each individual source code file is simple and therefore less error prone. For storage and management of a variety of source code files, only a sufficiently large storage capacity must be provided. Principal problems are not generated by this.

Der mit dem erfindungsgemäßen Verfahren hergestellte Quellcode kann entweder von einem herkömmlichen Compiler in ein lauffähiges Programm umgesetzt werden oder von einem Interpreter direkt ausgeführt werden. Das Programm ist sofort ohne weitere Bearbeitung ausführbar. Eine manuelle Bearbeitung des automatisch erzeugten Quellcodes ist nicht notwendig. Der Quellcode ist somit sofort ausführbar.The source code produced by the method according to the invention can either be converted by a conventional compiler into an executable program or executed directly by an interpreter. The program can be executed immediately without further processing. Manual processing of the automatically generated source code is not necessary. The source code is thus immediately executable.

Dass aus einer allgemeinen Prozessbeschreibung automatisch ein ausführbarer Quellcode generiert wird, stellt eine wesentliche Neuerung gegenüber bekannten Verfahren dar.The fact that an executable source code is automatically generated from a general process description represents a significant innovation over known methods.

Ein weiterer Vorteil der Erzeugung einer separaten Quellcodedatei für jedes Subjekt liegt darin, dass die einzelnen Quellcodedateien auf unterschiedlichen Computern in einem Netzwerk ausführbar sind. Die zur Kommunikation zwischen den einzelnen Subjekten verwendeten Funktionen (SENDEN, EMPFANGEN) sind derart ausgebildet, dass auch eine Netzwerk übergreifende Kommunikation ausführbar ist. Mit dem erfindungsgemäßen Verfahren können somit Computerprogramme erzeugt werden, die auf einem Netzwerk verteilt ausführbar sind, wobei die Art des Netzwerkes beliebig sein kann. Es können lokale Netzwerke (LAN), Intranets oder das Internet, sowie Netzwerke mit gemischter Topologie sein.Another advantage of creating a separate source code file for each subject is that the individual source code files are executable on different computers in a network. The communication between the Functions used in individual subjects (SEND, RECEIVE) are designed in such a way that communication across networks is also possible. With the method according to the invention computer programs can thus be generated which can be executed distributed on a network, wherein the type of network can be arbitrary. These can be local area networks (LANs), intranets or the Internet, as well as mixed topology networks.

Nach einer bevorzugten Ausführungsform der Erfindung ist die Quellcodedatei mit Verweisen auf Daten der Prozessdatei versehen, so dass beim Ausführen des Quellcodes die entsprechenden Daten der Prozessdatei ausgelesen werden und in Abhängigkeit dieser Daten Befehle aufgerufen werden. Hierdurch werden die Daten der Prozessdatei zur unmittelbaren Steuerung des Quellcodes herangezogen. Dies hat zur Folge, dass beim Erstellen der Prozessdatei automatisch ein wesentlicher Teil des auszuführenden Computerprogramms erzeugt wird und der automatisch zu erzeugende Quellcode sehr kompakt gehalten werden kann.According to a preferred embodiment of the invention, the source code file is provided with references to data of the process file, so that when executing the source code, the corresponding data of the process file are read out and commands are called in response to these data. This will use the data from the process file to directly control the source code. This has the consequence that when creating the process file automatically a substantial part of the computer program to be executed is generated and the automatically generated source code can be kept very compact.

Vorteilhaft werden mit der Quellcodedatei lediglich drei unterschiedliche Typen von Funktionen, nämlich SENDEN, EMPFANGEN und TUN aufgerufen. Die Verwendung von lediglich drei Typen von Funktionen macht die automatische Erzeugung eines Quellcodes einfach, wobei durch die Funktionen SENDEN und EMPFANGEN die Kommunikation zwischen den Subjekten vollständig geregelt werden kann, auch wenn es sich um einen komplexen Prozess handeln sollte.Advantageously, the source code file only calls three different types of functions, namely SEND, RECEIVE, and TUN. The use of only three types of functions makes the automatic generation of a source code simple, whereby the SEND and RECEIVE functions can fully control the communication between the subjects, even if it is a complex process.

Die Erfindung wird nachfolgend beispielhaft anhand der Zeichnungen erläutert. In den Zeichnungen zeigen:The invention will be explained below by way of example with reference to the drawings. In the drawings show:

1 schematisch in einem Flussdiagramm das Verfahren zum Erzeugen eines Prozessorcodes für ein Subjekt aus einer vorab eingegebenen Prozessdatei, 1 1 is a schematic flowchart illustrating the process of generating a processor code for a subject from a pre-entered process file;

2 schematisch in einem Flussdiagramm die Teilschritte des in 1 gezeigten Schrittes „Quellcode erzeugen”. 2 schematically in a flow chart the sub-steps of in 1 shown step "generate source code".

3 schematisch in einem Flussdiagramm die Teilschritte des in 2 gezeigten Schrittes „Quellcode für Subjekt erzeugen”, 3 schematically in a flow chart the sub-steps of in 2 shown step "generate source code for subject",

4 den Ablauf eines automatisch erzeugten Quellcodes für ein Subjekt, wobei der Quellcode keine Refinements enthält, 4 the expiration of an automatically generated source code for a subject, the source code containing no refinements,

5 schematisch die Struktur einer Prozessdatei, 5 schematically the structure of a process file,

6 ein Prozessdiagramm eines Beispielprozesses, 6 a process diagram of an example process,

7 einen Ausschnitt aus einer Prozessdatei, die die Daten zum Subjekt OBU-Fahren (on board unit) zeigt, 7 a section of a process file that shows the data on the subject OBU-driving (on board unit),

8 den Ablauf eines automatisch erzeugten Quellcodes, dem manuell programmierte Programmabschnitte (Refinements) hinzugefügt sind in einem Flussdiagramm, 8th the sequence of an automatically generated source code to which manually programmed program sections (refinements) are added in a flow chart,

9 eine Bildschirmdarstellung eines Prozessmanagers zum Eingeben eines Prozesses, 9 a screen shot of a process manager for entering a process,

10 eine Bildschirmdarstellung eines Subjektmanagers zum Eingeben der Funktionen eines Subjekts, 10 a screen representation of a subject manager for inputting the functions of a subject,

11 eine Bildschirmdarstellung, die ein Fenster zum Aufrufen der einzelnen Quellcodes zum Validieren derselben zeigt, 11 a screen showing a window for calling each source code to validate it,

12, 13 und 14 jeweils Bildschirmdarstellungen, die das Validierungsverfahren während unterschiedlicher Zustände zeigen, 12 . 13 and 14 screen displays showing the validation process during different states,

15 schematisch in einem Blockschaltbild ein System zum Ausführen des erfindungsgemäßen Verfahrens, 15 schematically in a block diagram a system for carrying out the method according to the invention,

16, 17 Bildschirmdarstellung jeweils eines Fensters zum Eingeben von Inputpool-Definitionen. 16 . 17 Screen display of a window for entering input pool definitions.

Bei dem erfindungsgemäßen Verfahren wird ein in einer Prozessdatei dargestellter Prozess automatisch in einen Quellcode für ein Computerprogramm umgesetzt. Der Prozess kann sowohl technischer als auch betriebswirtschaftlicher Art sein oder sowohl technische als auch betriebswirtschaftliche Komponenten umfassen. Wesentlich für die Erfindung ist, dass in dem Prozess einzelne Akteure festlegbar sind, die natürliche Personen als auch bestimmte Geräte oder Teile von Geräten oder sonstige Stationen im Prozess sein können, die entweder mit weiteren Akteuren kommunizieren und/oder Handlungen ausführen. Diese Akteure werden im folgenden als Subjekte bezeichnet.In the method according to the invention, a process represented in a process file is automatically converted into a source code for a computer program. The process can be both technical and business-related or include both technical and business components. Essential to the invention is that in the process individual actors can be defined, which may be natural persons as well as certain devices or parts of devices or other stations in the process that either communicate with other actors and / or perform actions. These actors are referred to below as subjects.

Zur Erläuterung der Erfindung ist in 6 ein Diagramm eines vereinfachten Prozesses zur automatischen Erfassung der Lkw-Maut auf deutschen Autobahnen dargestellt. Das erfindungsgemäße Verfahren ist jedoch für wesentlich komplexere Prozesse vorgesehen.To explain the invention is in 6 a diagram of a simplified process for the automatic registration of the truck toll on German highways shown. However, the method according to the invention is intended for much more complex processes.

Der in 6 dargestellte Prozess umfasst neun Subjekte 1, die jeweils durch ein rechteckiges Kästchen dargestellt sind. In der ersten Zeile eines jeden Kästchens der Subjekte 1 ist jeweils der Name des Subjektes angegeben. Die Subjekte heißen:
Lkw-Fahrer, GPS, OBU_Position, OBU_Fahren, OBU_Kontrolle, Toll_Collection_Center, Billing_Center, BAG_Kontrolle und Transport_Firma.
The in 6 The process illustrated involves nine subjects 1 , each represented by a rectangular box. In the first line of a every box of subjects 1 in each case the name of the subject is indicated. The subjects are called:
Truck driver, GPS, OBU_Position, OBU_Fahren, OBU_Kontrolle, Toll_Collection_Center, Billing_Center, BAG_Kontrolle and Transport_Firma.

Das Subjekt Lkw-Fahrer stellt die natürlich Person des Lkw-Fahrers dar, der zur Erfassung der Lkw-Maut an einer sogenannten On-board-unit (OBU) die Daten seines Lkws, wie z. B. Achszahl, Schadstoffklasse, Kostenstelle einzugeben hat. Die On-board-unit ist in diesem Prozess durch drei Subjekte dargestellt, nämlich OBU_Fahren 1/2, OBU_Position 1/3 und OBU_Kontrolle 1/4. Das Subjekt OBU_Position 1/3 steht in Verbindung mit dem Subjekt GPS 1/5, das einen GPS-Empfänger zur Erfassung der aktuellen Position des Lastkraftwagens darstellt. Aus der aktuellen Position des Subjektes GPS 1/5 erzeugt das Subjekt OBU_Position 1/3 eine Nachricht, dass die kostenpflichtige Mautstrecke beginnt (Beginn_Mautstrecke) bzw. endet (Ende_Mautstrecke), die an das Subjekt OBU_Fahren 1/2 gesendet wird. Nach dem vollständigen Abfahren einer Mautstrecke sendet das Subjekt OBU_Fahren 1/2 die aktuellen Fahrdaten an das Subjekt Toll_Collection_Center 1/6, das die Zentrale der mit der Mauterfassung beauftragten Firma darstellt. Hier wird eine Qualitätssicherung der empfangenen Daten durchgeführt, insbesondere Plausibilitätsprüfungen vorgenommen, um eventuelle Missbräuche aufzudecken. Die derartig qualitätsgesicherten Mautdaten werden von dem Subjekt Toll_Collection_Center 1/6 an das Subjekt Billing_Center 1/7 weitergeleitet. Das Subjekt Billing_Center 1/7 erzeugt eine Rechnung und schickt diese an die Transportfirma, die in diesem Prozess durch das Subjekt Transport_Firma 1/8 dargestellt ist. Auf einer mautpflichtigen Autobahn befindliche Lkws werden von der Bundesautobahngesellschaft kontrolliert, indem ein Fahrzeug der Bundesautobahngesellschaft neben einem Lkw fährt und mittels eines Funkgerätes eine Kommunikation zur On-board-unit aufbaut und dessen Zustand und Daten abfragt. Diese Kontrolleinheit ist in einem vorliegenden Diagramm für das Subjekt BAG_Kontrolle 1/9 dargestellt, die mit dem Subjekt OBU_Kontrolle 1/4 kommunizieren kann, das Bestandteil der On-board-unit ist.The subject Truck Driver represents, of course, the person of the truck driver, who records the truck toll on a so-called on-board unit (OBU), the data of his truck, such. B. number of axles, pollutant class, cost center has to enter. The on-board unit is represented by three subjects in this process, namely OBU_drive 1/2, OBU_position 1/3 and OBU_control 1/4. The subject OBU_Position 1/3 is associated with the subject GPS 1/5, which represents a GPS receiver for detecting the current position of the truck. From the current position of the subject GPS 1/5, the subject OBU_Position 1/3 generates a message that the toll road starts (start_mobile route) or ends (end_automated route), which is sent to the subject OBU_Cycle 1/2. After the complete departure of a toll road, the subject OBU_Fahren 1/2 sends the current driving data to the subject Toll_Collection_Center 1/6, which represents the headquarters of the toll collection company. Here, a quality assurance of the received data is carried out, in particular plausibility checks made in order to detect possible abuses. The thus quality-assured toll data is forwarded by the subject Toll_Collection_Center 1/6 to the subject Billing_Center 1/7. The subject Billing_Center 1/7 generates an invoice and sends it to the transport company, which in this process is represented by the subject Transport_Company 1/8. Trucks located on a tolled motorway are controlled by the Federal Highway Authority by a vehicle of the Federal Motorway Company next to a truck drives and establishes a communication with the on-board unit by means of a radio device and queries its state and data. This control unit is shown in a present diagram for the subject BAG_Control 1/9, which can communicate with the subject OBU_Control 1/4, which is part of the on-board unit.

Die Erzeugung eines solchen Diagramms wird von einem Prozess-Manager unterstützt (9), der auf einen Doppelklick an einer Taste der Computermaus eine Funktion „neues Subjekt” bereitstellt, bei deren Aufruf ein neues Subjekt 1 erzeugt wird, wobei in einem zusätzlichen Fenster 22 der Benutzer einige Parameter, wie z. B. den Namen des Subjektes, eingeben kann. Hat der Benutzer die entsprechenden Parameter eingegeben, dann kann er das Subjekt am Bildschirm mittels einer Computermaus an eine beliebige Stelle verschieben. Die Kommunikation zwischen den einzelnen Subjekten wird einfach durch Zeichnen eines Pfeils 2 von einem Subjekt zu einem weiteren Subjekt eingegeben, in dem mit der Computermaus zunächst das Subjekt 1 durch gleichzeitiges Drücken zweier Tasten der Computermaus angeklickt wird, von dem die Nachricht gesendet wird, und der Mauszeiger auf dem Subjekt bewegt wird, das die Nachricht empfängt. Wird nun eine Maustaste angeklickt, wird der entsprechende Pfeil zwischen den beiden Subjekten automatisch am Bildschirm gezeichnet und ein kleines Kästchen 3 geöffnet, in das der Benutzer den Namen der Nachricht einzutragen hat, wie z. B. Lkw_Daten oder aktuelle_Fahrdaten (6, 9).The generation of such a diagram is supported by a process manager ( 9 ), which provides a "new subject" function when double-clicked on a key on the computer mouse, when it is called a new subject 1 is generated, wherein in an additional window 22 the user some parameters, such. B. the name of the subject can enter. If the user has entered the appropriate parameters, then he can move the subject on the screen by means of a computer mouse at any point. The communication between the individual subjects becomes easy by drawing an arrow 2 entered from a subject to another subject, in which with the computer mouse first the subject 1 by simultaneously pressing two keys of the computer mouse from which the message is sent and moving the mouse pointer on the subject receiving the message. If a mouse button is clicked, the corresponding arrow between the two subjects is automatically drawn on the screen and a small box 3 opened, in which the user has to enter the name of the message, such. Eg truck_data or current_data ( 6 . 9 ).

Durch ein Doppelklicken an einem Subjekt wird ein Subjektmanager 4 (10: Subjektmanager für OBU_Fahren) gestartet, der in einem Fenster einzelne von einem bestimmten Subjekt auszuführende Funktionen 5 zeigt. Diese Funktionen 5 können in diesem Fenster eingegeben und editiert werden. Diese Funktionen 5 sind ausschließlich SENDEN, EMPFANGEN und TUN. Durch Doppelklick wird eine neue Funktion eingeführt und ein entsprechendes Fenster 4 dargestellt. Gleichzeitig öffnet sich ein entsprechendes Eingabefenster 6, in welchem der Name der Funktion, der Typ der Funktion und weitere Parameter festgelegt werden können. In 11 ist das entsprechende Eingabefenster 6 zur Funktion Fahrdaten geöffnet, wobei diese Funktion 5 eine SENDE-Funktion ist, wie es bei „state type”: mit „send” angegeben ist. Die weiteren hier angegebenen Funktionen 5 „Parametereingabe”, „Beginn” und „Ende” sind EMPFANGS-Funktionen. Die Kommunikation zwischen den einzelnen Funktionen kann wiederum durch Pfeile 7 wie im Prozessdiagramm dargestellt werden, wobei jeweils ein kleines Kästchen geöffnet wird, in dem bei SENDE-Funktionen der Name und der Empfänger der zu übertragenden Nachricht eingetragen ist und bei EMPFANGS-Funktionen der Name des entsprechenden Senders und der Nachricht eingetragen ist, auf welche die EMPFANGS-Funktion wartet. Es ist auch möglich, dass eine EMPFANGS-Funktion Nachrichten von unterschiedlichen Sendern empfangen kann, wie z. B. die Funktion „Parametereingabe”, die sowohl die Lkw_Daten vom Lkw-Fahrer als auch die Nachricht Beginn_Mautstrecke von der OBU_Position empfangen kann.Double clicking on a subject becomes a subject manager 4 ( 10 : Subject Manager for OBU_Fahren) starts, which in a window individual functions to be performed by a certain subject 5 shows. These functions 5 can be entered and edited in this window. These functions 5 are only SEND, RECEIVE and DO. By double-clicking a new function is introduced and a corresponding window 4 shown. At the same time, a corresponding input window opens 6 in which the name of the function, the type of function and other parameters can be specified. In 11 is the corresponding input window 6 to the function Driving data opened, this function 5 A SEND function is as it is specified in "state type": with "send". The other functions specified here 5 "Parameter input", "Start" and "End" are RECEPTION functions. The communication between the individual functions can in turn be indicated by arrows 7 As shown in the process diagram, a small box is opened in each case in which the name and the recipient of the message to be transmitted is entered for SEND functions and the name of the corresponding sender and the message to which the RECEIVE function waits. It is also possible that a RECEIVE function can receive messages from different senders, such as: For example, the function "parameter input" which can receive both the truck_data from the truck driver and the message start_mobile_track from the OBU_Position.

Durch Betätigen der Schaltfläche „Inputpool” im Subjektmanager wird ein Fenster zum Eingeben von Inputpool Definitionen geöffnet (16). Der Inputpool ist auf eine Empfangskapazität von 1000 Nachrichten voreingestellt (Default-Wert). Mit diesem Fenster kann die maximale Anzahl der empfangbaren Nachrichten eingestellt werden.Pressing the Input Pool button in the Subject Manager will open a window for entering Input Pool Definitions ( 16 ). The input pool is preset to a receive capacity of 1000 messages (default value). With this window the maximum number of receivable messages can be set.

Durch Betätigen der Schaltfläche „New” wird ein weiteres Fenster (17) zum Eingeben von Inputpool-Restriktionen geöffnet. Hier kann für einen jeden Sender (hier: LKW-Fahrer bzw. OBU_Position) bzw. einen jeden Nachrichtentyp (hier: LKW_Daten bzw. Beginn_Mautstrecke) eine Empfangskapazität reserviert werden. Hierzu werden in den Feldern „Sending Subject” und ggfs. „MessageType” der Sender bzw. der Nachrichtentyp und die Anzahl der Nachrichten, die im Inputpool für diesen Sender bzw. diesen Nachrichtentyp reserviert sind, eingegeben. Hierbei ist wichtig, dass in einem Inputpool für unterschiedliche Sender bzw. unterschiedliche Nachrichtentypen gleichzeitig unterschiedliche Anzahlen von empfangbaren Nachrichten festlegbar sind. Hierdurch wird für einen jeden Sender bzw. einen jeden Nachrichtentyp eine separate Empfangskapazität im Inputpool reserviert. Diese Empfangskapazitäten bilden somit voneinander unabhängige Partitionen des Inputpools. Dadurch ist sichergestellt, dass ein bestimmter Sender den Inputpool nicht alleine vollständig füllen kann, sondern für bestimmte Sender bzw. bestimmte Nachrichtentypen eine vorbestimmte Partition unabhängig vom Nachrichtenaufkommen anderer Sender zur Verfügung steht.Press the "New" button to open another window ( 17 ) to enter input pool restrictions. Here can for each transmitter (here: truck driver or OBU_ Position) or each message type (here: LKW_Daten bzw. Anfang_Mautstrecke) a receiving capacity can be reserved. For this purpose, the sender or message type and the number of messages reserved in the input pool for this sender or message type are entered in the "Sending Subject" and, if applicable, "MessageType" fields. It is important here that different numbers of receivable messages can be defined simultaneously in an input pool for different transmitters or different message types. As a result, a separate receiving capacity in the input pool is reserved for each transmitter or each type of message. These receiving capacities thus form independent partitions of the input pool. This ensures that a particular sender can not fill the input pool completely on its own, but for certain sender or specific message types a predetermined partition is available independently of the message volume of other sender.

Weiterhin kann in dem Feld „Rule” festgelegt werden, wie neue Nachrichten dieser Partition behandelt werden sollen, falls die jeweilige Partition voll ist. Als voreingestellter Standardwert ist „blocked” eingegeben, d. h., neue Nachrichten werden nicht angenommen, wenn diese Partition voll ist. Alternativ können die Werte „discard arriving”, „replace newest” oder „replace oldest” eingegeben werden. Bei „discard arriving” werden die neu eingehenden Nachrichten gelöscht, wenn die Partition voll ist. Bei „replace oldest” wird die jeweils älteste Nachricht dieser Partition durch die neue Nachricht ersetzt, wenn die Partition voll ist. Bei „replace newest” wird die jeweils jüngste Nachricht dieser Partition durch die neue Nachricht ersetzt, wenn die Partition voll ist.Furthermore, the "Rule" field can be used to specify how new messages of this partition should be handled if the respective partition is full. The default value is "blocked". h., new messages will not be accepted if this partition is full. Alternatively, the values "discard arriving", "replace newest" or "replace oldest" can be entered. With "discard arriving", the new incoming messages are deleted when the partition is full. With "replace oldest", the oldest message of this partition is replaced by the new message when the partition is full. With "replace newest", the most recent message of this partition is replaced by the new message when the partition is full.

Zu jedem Subjekt können mit dem Subjektmanager die in dem Subjekt auszuführenden Funktionen in entsprechender Weise festgelegt werden. Das vollständige Subjektdiagramm zum Subjekt OBU_Fahren ist im Subjekt-Manager in 10 dargestellt.For each subject, the subject manager can be used to set the functions to be performed in the subject in a corresponding manner. The complete subject diagram for the subject OBU_Fahren is in the subject manager in 10 shown.

Beim Erzeugen des Prozessdiagramms und der einzelnen Subjektdiagramme wird automatisch eine Prozessdatei in einer Metasprache erzeugt.When creating the process diagram and the individual subject diagrams, a process file is automatically generated in a metalanguage.

7 zeigt einen Ausschnitt der Prozessdatei für das Beispiel der automatischen Mauterfassung. Diese Prozessdatei hat den Namen „Automatic_Log_in.jpp”. Diese Datei enthält die Daten zum Subjekt OBU_Fahren. In der Prozessdatei ist für jedes Subjekt ein entsprechender Datensatz vorgesehen. Ein solcher Datensatz umfasst den Namen des Subjekts („OBU_Fahren”, eine Subjektnummer („subject 1081921986090”), Angaben zu dem Computer, an dem das Subjekt zur Ausführung gebracht werden soll, mit statischer oder dynamischer IP-Adresse, gegebenenfalls die IP-Adresse des Servers), optionale Angaben wie den Namen des Entwicklers und der Version. Des weiteren kann das Subjekt vom internen (internal) und externen (external) Typ sein, wobei ein Subjekt des internen Typs bedeutet, dass es Gegenstand des Prozesses ist, mit dem es kommuniziert und vom externen Typ bedeutet, dass aus einem anderen Prozess zu diesem Subjekt eine Datenverbindung aufgenommen wird, zu dem das Subjekt nicht gehört. 7 shows a section of the process file for the example of automatic toll collection. This process file is named "Automatic_Log_in.jpp". This file contains the data for the subject OBU_Fahren. In the process file, a corresponding record is provided for each subject. Such a record includes the name of the subject ("OBU_Fahren", a subject number ("subject 1081921986090"), information about the computer on which the subject is to be executed, with a static or dynamic IP address, if necessary, the IP address of the server), optional information such as the name of the developer and the version. Furthermore, the subject may be of the internal (internal) and external (external) type, with a subject of the internal type meaning that it is the subject of the process with which it communicates and of the external type means that of another process to that Subject a data connection is added to the subject does not belong.

Das externe Subjekt kann Bestandteil eines weiteren Prozesses sein, der wiederum mehrere Subjekte umfasst, die miteinander kommunizieren. Mit einem solchen externen Subjekt ist es deshalb möglich, mehrere bestehende Prozesse aneinander zu koppeln.The external subject may be part of another process, which in turn includes several subjects communicating with each other. With such an external subject, it is therefore possible to couple several existing processes together.

Wenn ein bestimmter Prozess mit einem weiteren Prozess kommuniziert, kann auch im Rahmen der Simulation der weitere Prozess lediglich durch ein einzelnes externes Subjekt simuliert werden. D. h., dass von dem weiteren Prozess nur das externe Subjekt besteht. Für den Prozess, der mit dem weiteren Prozess kommuniziert, simuliert dieses externe Subjekt die Kommunikation zu und von dem weiteren Prozess, wodurch für den ursprünglichen Prozess der weitere Prozess alleine durch ein einzelnes externes Subjekt simuliert wird. Hiermit kann die Kommunikation zwischen unterschiedlichen Prozessen simuliert werden, ohne dass alle Prozesse vollständig erstellt werden müssen.If a certain process communicates with another process, the further process can only be simulated within the scope of the simulation by a single external subject. That is to say that of the further process only the external subject exists. For the process communicating with the further process, this external subject simulates the communication to and from the rest of the process, simulating for the original process the further process by a single external subject alone. This allows the communication between different processes to be simulated without having to completely create all the processes.

Weiterhin kann der Typ des Subjektes durch selbständig lauffähig (pure Java) bzw. als nicht selbständig lauffähig (interface) gekennzeichnet sein. Falls das Subjekt nicht selbständig lauffähig ist, wird eine Schnittstelle erzeugt, die von anderen Programmen verwendet werden kann, um mit dem Subjekt zu kommunizieren.Furthermore, the type of the subject can be characterized by independently executable (pure Java) or as non-independently executable (interface). If the subject is not self-sufficient, an interface is created that can be used by other programs to communicate with the subject.

Ein Subjekt kann Bestandteil eines Clusters sein, wie z. B. in einem Prozess, bei dem mehrere an board units zu berücksichtigen sind. Hier wird das Subjekt OBU_Fahren z. B. einmal erstellt und mehrfach kopiert, wobei alle Subjekte OBU_Fahren dann ein Cluster bilden.A subject can be part of a cluster, such. For example, in a process involving multiple board units. Here the subject OBU_Fahren z. Once created and copied multiple times, with all subjects OBU_Fahren then form a cluster.

Weiterhin sind die zu versendenden Nachrichten durch Angabe des Nachrichtenempfängers, durch den Namen der Nachricht und durch den Namen der einzelnen Nachricht enthaltenden Parameter definiert, von welchen optional der Datentyp und Dateninhalt angegeben werden kann. Für jedes Subjekt wird ein Eingangspuffer und dessen Größe festgelegt. Der Eingangspuffer wird als Inputpool bezeichnet und dessen Größe beträgt standardmäßig 1.000 Nachrichten.Furthermore, the messages to be sent are defined by specifying the message recipient, by the name of the message and by the name of each message containing parameters, from which optionally the data type and data content can be specified. For each subject, an input buffer and its size are specified. The input buffer is called an input pool and its size is 1,000 messages by default.

In der Prozessdatei sind die einzelnen Funktionen der Subjekte (7, 10: Fahrdaten, Parametereingabe, Beginn und Ende) als states mit ihrer Typbeschreibung (SENDEN, EMPFANGEN, TUN = SEND, RECEIVE, DO) sowie der Angabe, ob beim Aufrufen dieser Funktion ein bestimmtes Bild einer bestimmten Bildquelle (image source) dargestellt werden soll, aufgeführt. Eine der Funktionen (in 7: Parametereingabe) ist in der Prozessdatei als Startfunktion angegeben, d. h., diese Funktion ist die erste Funktion, die beim Aufrufen des Subjekts ausgeführt wird. Das Vorsehen einer Startfunktion erlaubt beim Editieren von Funktionen eines Subjekts einfach den Beginn der Ausführungen von einer Funktion auf eine weitere Funktion zu verändern. Hierzu muss lediglich die entsprechende Funktion im Subjektmanager angeklickt und der Befehl „Start State” (siehe 10 unten) betätigt werden. In the process file, the individual functions of the subjects ( 7 . 10 : Driving data, parameter input, start and end) as states with their type description (SEND, RECEIVE, TUN = SEND, RECEIVE, DO) as well as the specification, if a specific image of a certain image source should be displayed when calling this function, listed. One of the functions (in 7 : Parameter input) is specified in the process file as a start function, ie this function is the first function that is executed when the subject is called. The provision of a start function, when editing functions of a subject, allows to easily change the beginning of executions from one function to another function. All you have to do is click on the corresponding function in the subject manager and the command "Start State" (see 10 below).

5 zeigt schematisch vereinfacht den Aufbau einer derartigen Prozessdatei für zwei Subjekte, Subjekt 1 und Subjekt 2, die jeweils zwei Funktionen, nämlich Funktion 1.1 und Funktion 1.2 bzw. Funktion 2.1 und Funktion 2.2 aufweisen. Die Funktionen 1.1 und 2.2 sind vom Typ EMPFANGEN und die Funktionen 1.2 und 2.1 sind vom Typ SENDEN. Mit diesen Funktionen werden die Nachrichten Nachricht 1 und Nachricht 2 ausgetauscht. 5 shows schematically simplified the structure of such a process file for two subjects, subject 1 and subject 2 , each having two functions, namely function 1.1 and function 1.2 or function 2.1 and function 2.2 exhibit. The functions 1.1 and 2.2 are of the type RECEIVE and the functions 1.2 and 2.1 are of type SEND. With these functions, the messages become message 1 and message 2 replaced.

Nachfolgend wird an einem Beispiel das erfindungsgemäße Verfahren erläutert, bei dem ein Quellcode in der Programmiersprache Java® erzeugt wird. Ein Benutzer kann das Verfahren durch den Befehl „Make Classes” starten (Schritt S1 in 1). Danach wird im Schritt S2 eine Methode zum Erzeugen des Quellcodes aufgerufen, die unten näher erläutert wird.The method according to the invention, in which a source code is generated in the Java programming language, will be explained below using an example. A user can start the process by the command "Make Classes" (step S1 in FIG 1 ). Thereafter, in step S2, a method for generating the source code is called, which will be explained in more detail below.

Der erzeugte Quellcode wird in einem Prozessorcode compiliert (S3). Wenn der Prozessorcode für ein Subjekt vorliegt, dann ist dieser Verfahrensabschnitt beendet (S4).The generated source code is compiled in a processor code (S3). If the processor code is for a subject, then this process section is completed (S4).

Erfindungsgemäß wird für jedes Subjekt ein separater Quellcode erzeugt. Hierdurch werden sehr komplexe Prozesse in einzelne Teilprozesse zerlegt, für welche einfach ein Quellcode erzeugbar ist.According to the invention, a separate source code is generated for each subject. As a result, very complex processes are broken down into individual sub-processes, for which a source code can easily be generated.

Nachfolgend wird anhand von 2 der Verfahrensschritt S2 (Quellcode erzeugen) näher erläutert. Die Methode Quellcode erzeugen kann entweder durch Aufruf in der Methode Prozessorcode erzeugen (S5a) oder durch den Benutzer durch Aufrufen des Befehls „Make Sources” (S5b) gestartet werden. Im Schritt S6 wird die Methode „Quellcode für Subjekt erzeugen” aufgerufen, mit welcher der Quellcode für ein Subjekt erzeugt wird. Diese Methode wird unten näher erläutert. Die in 2 darauf folgenden Schritte S7 und S8 sind optional, wobei der Schritt S7 das Erzeugen eines Quellcodes für ein Refinement-Interface betrifft und der Schritt S8 den Quellcode für ein Refinement betrifft. Als Refinement werden manuell programmierte Programmabschnitte bezeichnet, die den automatisch erzeugten Programmabschnitten hinzugefügt werden. Hierzu wird ein Interface vorgesehen (S7), mit welchem der manuell erzeugte Programmabschnitt an den automatisch erzeugten Programmabschnitt gekoppelt wird.The following is based on 2 the method step S2 (generate source code) explained in more detail. The Generate Source Code method can be started either by calling in the method Create Processor Code (S5a) or by the user by calling the command "Make Sources" (S5b). In step S6, the method "generate source code for subject" is called, with which the source code for a subject is generated. This method is explained in more detail below. In the 2 subsequent steps S7 and S8 are optional, wherein step S7 relates to generating a source code for a refinement interface and step S8 concerns the source code for a refinement. Refinement refers to manually programmed program sections that are added to the automatically generated program sections. For this purpose, an interface is provided (S7), with which the manually generated program section is coupled to the automatically generated program section.

Im Schritt S9 wird die Prozessdatei, bzw. eine Kopie davon, zu dem jeweiligen Subjekt gespeichert, für das der Quellcode erzeugt wird. Hiermit ist das Verfahren zum Erzeugen des Quellcodes beendet (S10).In step S9, the process file, or a copy thereof, is stored to the respective subject for which the source code is generated. This completes the process of generating the source code (S10).

Die einzelnen Verfahrensschritte der Methode „Quellcode für Subjekt erzeugen” sind in 3 dargestellt. Diese Methode beginnt mit dem Schritt S11.The individual process steps of the method "Create source code for subject" are in 3 shown. This method starts with step S11.

Im Schritt S12 wird eine Java®-Klasse für ein Subjekt angelegt. Dieser Java®-Klasse werden die Methoden einer vorprogrammierten Standardklasse vererbt, die durch eine Reihe von Methoden ergänzt ist. Diese Klasse wird als „subject” bezeichnet und ist in der Anlage A dargestellt.In step S12, a Java® class is created for a subject. This Java ® class inherits the methods of a preprogrammed standard class, which is supplemented by a number of methods. This class is called "subject" and is shown in Appendix A.

Im Schritt S13 wird eine Quellcodedatei initialisiert, d. h., dass eine Methode zur Initialisierung der Klasse in den Quellcode geschrieben wird. Diese Methode wird in Java® als Konstruktor bezeichnet. In diesem Konstruktor werden der Prozessdateiname und die Subjekt-ID eingetragen.In step S13, a source code file is initialized, that is, a method for initializing the class is written in the source code. This method is called in Java ® as a constructor. The process file name and the subject ID are entered in this constructor.

Im Schritt S14 wird in den Quellcode die Java®-Methode „main” eingetragen. In dieser main-Methode ist ein Aufruf einer run-Methode enthalten, die von der in Anlage A dargestellten Klasse ererbt worden ist. Optional können auch Methodenaufrufe für Refinement-Funktionen in den Quellcode geschrieben werden (S15). Mit dem Schritt S16 ist dieser Verfahrensabschnitt beendet.In step S14, the Java® method "main" is entered into the source code. This main method contains a call to a run method inherited from the class shown in Appendix A. Optionally, method calls for refinement functions can also be written to the source code (S15). With the step S16, this process section is finished.

Nachfolgend wird der Programmablauf beim Aufrufen des oben erläuterten und automatisch erzeugten Quellcodes für ein Subjekt ohne Refinements anhand des Flussdiagramms aus 4 erläutert. Das Programm wird mit dem Schritt S17 gestartet. Im Schritt S18 werden Subjektdaten aus der Prozessdatei gelesen.In the following, the program flow when calling up the above-mentioned automatically generated source code for a subject without refining will be explained with reference to the flowchart 4 explained. The program is started with step S17. In step S18, subject data is read from the process file.

Im Schritt S19 wird ein Inputpool und Verbindungen zu entfernten Partnersubjekten initialisiert. Der Inputpool ist ein Puffer. Dieser Puffer wird für jedes Subjekt angelegt und dient zum Empfangen von Daten. Die Initialisierung der Verbindungen zu Partnersubjekten erfolgt durch Anlegen eines Remote-Subjekts für das entsprechende Subjekt, das lediglich zum Senden der Daten zu einem anderen, bestimmten Subjekt dient. Das Remote-Subjekt schreibt somit zu übertragende Daten in den Inputpool eines weiteren Subjektes.In step S19, an input pool and connections to remote partner subjects are initialized. The input pool is a buffer. This buffer is created for each subject and is used to receive data. The initialization of the connections to partner subjects is done by creating a remote subject for the corresponding subject, which serves only to send the data to another, specific subject. The remote subject thus writes to be transferred data in the input pool of another subject.

Alle folgenden Verfahrensschritte werden von der oben angegebenen Methode „run” ausgeführt.All the following steps are performed by the "run" method above.

Im Schritt S20 werden zunächst aus der Prozessdatei die Daten der Startfunktion gelesen und das Programm auf die Startfunktion gesetzt.In step S20, the data of the start function are first read from the process file and the program is set to the start function.

Im Schritt S21 werden mögliche Funktionsübergänge zu weiteren Funktionen ermittelt. In einer Abfrage (S22) wird geprüft, ob derartige Funktionsübergänge vorhanden sind. Sind keine Funktionsübergänge vorhanden, wird das Programm beendet (S23). Sind Funktionsübergänge vorhanden, so wird in der Abfrage S24 der Funktionstyp bestimmt. Es gibt lediglich drei Funktionstypen, nämlich TUN, SENDEN und EMPFANGEN. Ist die Funktion eine TUN-Funktion, so geht der Verfahrensablauf auf den Schritt S25 über. Im Schritt S25 wird ein Standardfenster für die TUN-Funktion geöffnet. In diesem Standardfenster wird der Nutzer beim Vorliegen von mehreren Funktionsübergängen gefragt, welche Funktion folgen soll (S26). Hierdurch wird somit die Handlung des Subjekts durch eine Abfrage bzw. eine Entscheidung des Benutzers ersetzt.In step S21 possible function transitions to further functions are determined. In a query (S22) it is checked whether such function transitions are present. If there are no function transitions, the program is ended (S23). If function transitions are present, the function type is determined in query S24. There are only three types of functions, namely TUN, SEND and RECEIVE. If the function is a TUN function, the procedure goes to step S25. In step S25, a standard window for the TUN function is opened. In this standard window, the user is asked which function should follow when there are several function transitions (S26). As a result, the action of the subject is thus replaced by a query or a decision of the user.

Vom Schritt S26 geht der Verfahrensablauf auf den Schritt S27 über, in dem aus der Prozessdatei die Daten der nächsten Funktion ausgelesen werden und das Programm auf die nächste Funktion gesetzt wird. Der Prozessablauf geht dann wieder auf den Schritt S21 zurück.From step S26, the process flow goes to step S27, in which the data of the next function are read from the process file and the program is set to the next function. The process flow then goes back to the step S21.

Hat die Abfrage in Schritt S24 ergeben, dass die Funktion eine SENDEN-Funktion ist, so werden im Schritt S28 aus der Prozessdatei die Daten zur Übertragung der Nachricht, nämlich der Name der Nachricht, der Empfänger und optionale Parameter eingelesen.If the query in step S24 has shown that the function is a SEND function, then in step S28 the data for transmitting the message, namely the name of the message, the receiver and optional parameters are read in from the process file.

Im Schritt S29 wird ein Standardfenster für die SENDE-Funktion geöffnet.In step S29, a standard window for the SEND function is opened.

Mit dem optionalen Schritt S30 können vom Benutzer Parameterwerte erfragt werden, die mit der Nachricht übermittelt werden sollen. Im Schritt S31 werden die Nachrichten an den Empfänger übermittelt, d. h. dass sie von dem Subjekt an das Remote-Subjekt weitergegeben werden, das die Daten in den Input-Pool des Empfängers schreibt.With the optional step S30, the user can request parameter values that are to be transmitted with the message. In step S31, the messages are transmitted to the recipient, i. H. that they are passed from the subject to the remote subject that writes the data to the recipient's input pool.

Im Schritt S32 werden Übermittlungsfehler behandelt, falls solche auftreten sollten. Die Behandlung von Übermittlungsfehlern erfolgt zum Teil auch im Remote-Subjekt.In step S32, transmission errors are handled, if any should occur. The handling of transmission errors is partly also in the remote subject.

Der Verfahrensablauf geht hier wieder auf den Schritt S27 über, in dem die Daten der folgenden Funktion aus der Prozessdatei gelesen und das Programm auf diese Funktion gesetzt wird.The procedure here goes back to step S27, in which the data of the following function is read from the process file and the program is set to this function.

Ergibt die Abfrage in Schritt S24, dass die Funktion eine EMPFANGEN-Funktion ist, so geht der Verfahrensablauf auf den Schritt S33 über. Im Schritt S33 werden die Daten zu der gültigen Nachricht, nämlich der Name des Senders entsprechend dem gültigen Funktionsübergang eingelesen.If the query in step S24 indicates that the function is a RECEIVE function, the process flow proceeds to step S33. In step S33, the data of the valid message, namely the name of the sender corresponding to the valid function transition is read.

Danach wird ein Standardfenster für die EMPFANGS-Funktion geöffnet (S34).Thereafter, a standard window for the RECEPTION function is opened (S34).

Im Schritt S35 wird ein Nicht-aktives Warten auf die entsprechende Nachricht initiiert. Das Nicht-aktive Warten beruht auf dem sog. Monitorkonzept, das bereits im Oktober 1974 von Hoare C. A. R. in dem Artikel „Monitors: An operating system structuring concept” in Commun. ACM 17,10 beschrieben ist. Vereinfacht kann dieses Monitor-Konzept als eine Verschiebung der Warte-Funktion von der Programmebene in die Betriebssystemebene bzw. Prozessorebene dargestellt werden. Wesentlich ist, dass durch dieses Monitorkonzept verhindert wird, dass eine Vielzahl von Tasks in einem Multitasking-System gleichzeitig aktiv sind und immer wieder Prozessorleistung zum Ausführen des Wartens beanspruchen. Durch das Monitorkonzept wird das Warten von einer Vielzahl von Tasks von lediglich einer einzigen Betriebssystem-Task überwacht. Dieses Monitorkonzept erlaubt auf einfache Art und Weise, dass eine Vielzahl von Programmen bzw. Tasks parallel nebeneinander ablaufen und auf Daten von einer jeweils anderen Task bzw. einem jeweils anderen Programm warten, ohne dass hierdurch die Prozessorleistung nennenswert beeinträchtigt wird. In Java ist das Monitorkonzept durch die Methoden „notify”, „notifyAll” und „wait” implementiert. Diese Methoden werden auch von der oben angegebenen Methode „run” aufgerufen.In step S35, a non-active waiting for the corresponding message is initiated. The non-active waiting is based on the so-called monitor concept already described in October 1974 by Hoare C.A.R. in the article "Monitors: An operating system structuring concept" in Commun. ACM 17.10 is described. Simplified, this monitor concept can be represented as a shift of the wait function from the program level to the operating system level or processor level. What is important is that this monitor concept prevents a large number of tasks in a multitasking system from being active at the same time and repeatedly requiring processor power to execute the wait. The monitor concept monitors the maintenance of a variety of tasks from a single operating system task. This monitor concept makes it possible in a simple manner for a large number of programs or tasks to run in parallel alongside one another and to wait for data from a respective other task or program, without the processor performance being appreciably impaired as a result. In Java, the monitor concept is implemented by the methods "notify", "notifyAll" and "wait". These methods are also called by the "run" method above.

Nach dem Empfang einer Nachricht wird diese aus dem Inputpool im Schritt S36 eingelesen. Danach wird sie auf ihre Gültigkeit überprüft (S37). Ist die Nachricht nicht gültig, so geht der Verfahrensablauf wieder auf den Schritt S35 über. Ist die Nachricht gültig, so wird sie für den Benutzer in dem bereits geöffneten Fenster dargestellt (S38).After receiving a message, it is read from the input pool in step S36. After that, it is checked for validity (S37). If the message is not valid, the process flow returns to step S35. If the message is valid, it will be displayed to the user in the already opened window (S38).

Danach geht der Verfahrensschritt wieder auf den Schritt S27 aus, in dem die Daten der folgenden Funktion aus der Prozessdatei ausgelesen werden und das Programm auf die folgenden Funktion gesetzt wird.Thereafter, the process step goes back to the step S27, in which the data of the following function are read from the process file and the program is set to the following function.

Optional ist es auch möglich, wenn ein Subjekt mehrere unterschiedliche Nachrichten empfangen kann, alle empfangenen Nachrichten im Schritt S38 darzustellen. Hierbei ist es jedoch zweckmäßig, dass der Verfahrensablauf auf den Schritt S27 erst übergeht, nachdem der Benutzer eine einzelne der eingegangenen und dargestellten Nachrichten quittiert, da ansonsten nach dem Eingang der ersten Nachricht keine weiteren Nachrichten mehr in der einen EMPFANGEN-Funktion empfangen werden können. Hierzu müssten ansonsten mehrere EMPFANGEN-Funktionen vorgesehen werden.Optionally, it is also possible, if a subject can receive several different messages, all messages received in the step S38. In this case, however, it is expedient that the method flow only transfers to step S27 after the user acknowledges a single of the received and displayed messages, since otherwise no further messages can be received in the one RECEIVE function after the first message has been received. Otherwise, several RECEIVE functions would have to be provided for this purpose.

8 zeigt den Ablauf eines automatisch erzeugten Quellcodes, dem manuell programmierte Programmabschnitte, die als Refinements bezeichnet werden, hinzu gefügt sind. Dieser Programmablauf entspricht im Wesentlichen dem aus 4, wobei gleiche Verfahrensschritte mit gleichen Bezugszeichen bezeichnet sind. Diese Verfahrensschritte werden zur Vermeidung von Wiederholungen nicht erläutert. Das Verfahren gemäß 8 unterscheidet sich von dem Verfahren gemäß 4 dadurch, dass nach der Abfrage des Funktionstyps im Schritt S24 jeweils eine weitere Abfrage (S39, S40, S41) ausgeführt wird, in der bestimmt wird, ob die Funktion verfeinert ist, das heißt, ob Refinements hinzu gefügt worden sind. 8th shows the flow of an automatically generated source code, the manually programmed program sections, which are referred to as Refinements, are added. This program flow essentially corresponds to that 4 , wherein the same method steps are denoted by the same reference numerals. These steps are not explained to avoid repetition. The method according to 8th differs from the method according to 4 in that, after the query of the function type, a further query (S39, S40, S41) is carried out in each case in step S24, in which it is determined whether the function is refined, that is, whether refinements have been added.

Ist die Funktion vom Typ TUN und liegen Refinements vor, so geht der Verfahrensablauf auf den Schritt S42 über, mit dem zumindest automatisch der Übergang auf die nächste Funktion festgelegt ist. Darüber hinaus kann in diesem Schritt auch ein vorbestimmtes Programm aufgerufen werden. Hierbei können insbesondere Programme aus vorgefertigten Bibliotheken in den Prozess eingebunden werden, die dann ausgeführt werden. Das erfindungsgemäße Verfahren ist somit kombinierbar mit existierenden Programmbibliotheken, die für viele Anwendungen bereits vorhanden sind. Typische Anwendungen sind zum Beispiel die Verwaltung und Abfrage von Datenbanken.If the function is of the type TUN and refinements are present, then the method sequence proceeds to step S42, with which the transition to the next function is at least automatically determined. In addition, a predefined program can also be called in this step. In particular, programs from ready-made libraries can be integrated into the process, which are then executed. The method according to the invention can therefore be combined with existing program libraries which are already available for many applications. Typical applications include managing and querying databases.

Ist die Funktion vom Typ SENDEN und liegen Refinements vor, so geht der Verfahrensablauf auf den Schritt S43 über, der identisch zu dem oben erläuterten Schritt S28 ist, bei dem aus der Prozessdatei die Daten zur Übertragung der Nachricht, nämlich der Name der Nachricht, der Empfänger und optional Parameter eingelesen werden.If the function is of the SEND type and there are refinements, the process flow proceeds to step S43, which is identical to step S28 explained above, in which the data for transmitting the message, namely the name of the message, the Receiver and optional parameters are read.

Im Schritt S44 werden Parameterwerte durch eine Methode aus einer Refinement-Datei eingelesen, die mit der Nachricht übermittelt werden soll. Danach werden die Nachrichten zum Empfänger übermittelt (S45) und eventuelle Fehler behandelt (S46). Danach geht der Verfahrensablauf wieder auf den Schritt S27 über.In step S44, parameter values are read in by a method from a refinement file to be transmitted with the message. Thereafter, the messages are transmitted to the receiver (S45) and possible errors are dealt with (S46). Thereafter, the process flow goes back to the step S27.

Ist die Funktion vom Typ EMPFANGEN und liegen Refinements vor, so geht der Verfahrensablauf auf den Schritt S47 über, der dem oben erläuterten Schritt S33 entspricht, bei dem die Daten zu der gültigen Nachricht, nämlich der Name des Senders entsprechend dem gültigen Funktionsübergang eingelesen werden. Die nachfolgenden Schritte S48, S49 und S50 entsprechen den oben beschriebenen Schritten S35, S36 und S37 und dienen zum automatischen Empfang und zum Überprüfen der Gültigkeit der jeweiligen Nachricht. Im Schritt S51 wird eine durch die Refinement-Datei bestimmte Methode zur Verarbeitung der empfangenen Nachrichten aufgerufen. Danach geht der Verfahrensablauf wieder auf den Schritt S27 über.If the function is of the RECEIVE type and there are refinements, the process flow proceeds to step S47, which corresponds to step S33 explained above, in which the data relating to the valid message, namely the name of the sender, is read in according to the valid function transition. Subsequent steps S48, S49 and S50 correspond to the above-described steps S35, S36 and S37 and are for automatically receiving and checking the validity of each message. In step S51, a method determined by the refining file is called to process the received messages. Thereafter, the process flow goes back to the step S27.

Nachfolgend wird an Hand der 11 bis 14 die Validierung des gemäß dem erfindungsgemäßen Verfahrens erzeugten Quellcodes erläutert. Zum Ausführen des Validierungsvorganges ist ein separates Validierungsprogramm vorgesehen (11), das als „jPass Cockpit” bezeichnet wird. In 11 ist ein Fenster 8 des Validierungsprogrammes geöffnet. Mit diesem Validierungsprogramm können die Quellcode der einzelnen Subjekte gestartet, gestoppt, zurück gesetzt und gelöscht werden. Zur Durchführung des Validierungsverfahrens ist ein solches Validierungsprogramm nicht notwendig. Es vereinfacht jedoch das gleichzeitige Starten von den unterschiedlichen Quellcoden, die auch als unterschiedliche Teilprogramme bezeichnet werden können. Da in diesem Validierungsprogramm die einzelnen Subjekte individuell ausgewählt werden können, ist es möglich, auch nur einen Teil eines Prozesses zu starten und zu validieren.The following will be on hand 11 to 14 explains the validation of the source code generated according to the method according to the invention. To run the validation process, a separate validation program is provided ( 11 ), which is referred to as "jPass cockpit". In 11 is a window 8th of the validation program. With this validation program, the source code of the individual subjects can be started, stopped, reset and deleted. In order to carry out the validation procedure, such a validation program is not necessary. However, it simplifies the simultaneous start of the different source codes, which can also be referred to as different part programs. Since the individual subjects can be individually selected in this validation program, it is possible to start and validate only a part of a process.

Wenn die Quellcode der Subjekte gestartet worden sind, wird für jedes Subjekt ein Fenster 9 geöffnet, in dem oben der Name des Subjektes angegeben ist. In 12 sind die Fenster aller Subjekte des in 6 gezeigten Prozesses geöffnet, das heißt, dass alle Quellcode gestartet sind. In der obersten Leiste in den Fenstern ist jeweils der Name des Subjektes angezeigt. Grundsätzlich sind die Fenster minimiert. In 12 sind das die Fenster GPS, OBU_Position, Toll_Collection_Center, Billing_Center, OBU_Kontrolle, BAG_Kontrolle und Transport_Firma. In diesen Fenstern ist auch angegeben, welche Funktion zur Zeit von dem jeweiligen Subjekt ausgeführt wird. So wird von dem Subjekt Toll_Collection_Center die Funktion „FAHRDATEN” ausgeführt. Dies ist eine Funktion des Typs EMPFANGEN, mit welcher auf die Übermittlung von Fahrdaten gewartet wird. In den minimierten Fenstern ist jeweils eine Schaltfläche „Maximize” angegeben, die mit der Maus betätigt wird, wodurch die Fenster in einer maximierten Darstellung überführt werden. Die Fenster der Subjekte LKW-Fahrer und OBU_Fahren sind in der maximierten Darstellung gezeigt.When the source code of the subjects has been started, a window will appear for each subject 9 opened in which the name of the subject is given above. In 12 are the windows of all subjects of the in 6 process shown, that is, that all source code is started. In the top bar in the windows, the name of the subject is displayed. Basically, the windows are minimized. In 12 These are the windows GPS, OBU_Position, Toll_Collection_Center, Billing_Center, OBU_Control, BAG_Control and Transport_Company. These windows also indicate which function is currently being performed by the respective subject. Thus the subject Toll_Collection_Center executes the function "FAHRDATEN". This is a RECEIVE function, which waits for the transmission of driving data. Each of the minimized windows has a "Maximize" button, which is pressed with the mouse, which converts the windows into a maximized view. The windows of the subjects truck driver and OBU_drive are shown in maximized representation.

Wenn von einem Subjekt eine Nachricht versendet wird oder empfangen wird, geht das entsprechende Fenster automatisch in den maximierten Zustand über.If a message is sent or received by a subject, it works corresponding window automatically in the maximized state.

Bei dem Zustand des Systems in 12 wird der Benutzer im Fenster LKW-Fahrer gefragt, ob eine neue_Fahrt ausgeführt werden soll. Bestätigt er dies an der Schaltfläche „continue”, so wird im Subjekt LKW-Fahrer die nächste Funktion ausgeführt, mit welcher der Benutzer aufgefordert wird, die entsprechenden Daten, wie zum Beispiel Achszahl, Schadstoffklasse, Kostenstelle und einen logischen Wert für die neue Fahrt einzugeben. Ist die Eingabe abgeschlossen, wird die Nachricht automatisch an das Subjekt OBU_Fahren gesandt und im entsprechenden Fenster als „transition from LKW-Fahrer: LKW_Daten” dargestellt. Mit der Schaltfläche „show” kann ein weiteres Fenster 11 zur Darstellung der Nachricht aufgemacht werden. Mit der Schaltfläche „accept” kann die Nachricht akzeptiert werden, womit im Subjekt OBU_Fahren die Funktion Parametereingabe auf die Funktion Beginn (siehe 10) übergeht, da die LKW_Daten vom LKW-Fahrer empfangen worden sind. Sollte von dem Subjekt OBU_Fahren die Nachricht Beginn Mautstrecke vom Subjekt OBU_Position empfangen worden sein, dann würde der Funktionsablauf auf die Funktion Ende übergehen, mit welcher das Ende der Mautstrecke abgewartet wird, bevor die Fahrdaten mit der Funktion Fahrdaten an das Toll_Collection-Center gesendet werden.In the state of the system in 12 the user is asked in the truck driver window whether a new trip should be carried out. If he confirms this with the "continue" button, the next task is carried out in the subject truck driver, with which the user is requested to enter the corresponding data, such as, for example, number of axles, pollutant class, cost center and a logical value for the new trip , When the entry is completed, the message is automatically sent to the subject OBU_Fahren and displayed in the corresponding window as "transition from truck driver: LKW_Daten". With the button "show" you can open another window 11 to display the message. With the "accept" button, the message can be accepted, whereby in the subject OBU_Fahren the function Parameter input to the function Start (see 10 ), since the truck_ data has been received by the truck driver. If the subject OBU_Position had been received by the subject OBU_Fahren, then the functional sequence would proceed to the function End, with which the end of the toll lane is awaited, before the driving data with the function Driving data are sent to the Toll_Collection Center.

Mit diesem Validierungsverfahren kann somit das Entstehen, gegebenenfalls der Inhalt und die Weiterleitung der einzelnen Nachrichten verfolgt werden.This validation process can thus be used to track the emergence, if necessary, the content and the forwarding of the individual messages.

Die Validierung der automatisch erzeugten Quellcodedateien kann sofort nach der automatischen Erzeugung des Quellcodes ausgeführt werden, ohne dass zusätzlich ein Programmcode manuell eingefügt werden muss. Dies ist ein wesentlicher Vorteil des erfindungsgemäßen Verfahrens, der zum einen darauf beruht, dass die Kommunikation zwischen den einzelnen Subjekten vollständig automatisch erzeugt wird und zum anderen, dass die Tätigkeit der einzelnen Subjekte (Funktion TUN) durch eine Anfrage an den Benutzer ersetzt wird, wenn nicht bereits Programmelemente aus Bibliotheken vorhanden sind, die automatisch eingebunden werden.The validation of the automatically generated source code files can be carried out immediately after the automatic generation of the source code, without additionally having to insert a program code manually. This is a significant advantage of the method according to the invention, which is based on the fact that the communication between the individual subjects is generated completely automatically and on the other hand that the activity of the individual subjects (function TUN) is replaced by a request to the user, if there are not already program elements from libraries that are automatically included.

Die Erfindung erlaubt somit das Erzeugen einer automatisch ausführbaren und validierbaren Programmstruktur für sehr komplexe Prozesse mit einigen Hunderten oder Tausenden Subjekten, die dann je nach Bedarf durch manuell erstellte Programme oder durch bereits vorhandene Programme ergänzt werden kann.The invention thus allows the generation of an automatically executable and validatable program structure for very complex processes with several hundreds or thousands of subjects, which can then be supplemented as needed by manually created programs or existing programs.

15 zeigt ein System zum Ausführen des erfindungsgemäßen Verfahrens. Das System umfasst ein Computersystem 12, das im Sinne der vorliegenden Erfindung ein einzelner Computer als auch ein Netzwerk umfassend eine Vielzahl von Computern sein kann. Das Computersystem 12 weist zumindest eine Eingabeeinrichtung 13 umfassend eine Tastatur und eine Computermaus, sowie eine Ausgabeeinrichtung 14 auf. Die Ausgabeeinrichtung ist typischerweise ein Monitor oder ein Beamer. In dem Computersystem 12 ist eine Java®-Plattform 15 vorgesehen. 15 shows a system for carrying out the method according to the invention. The system includes a computer system 12 , which according to the present invention may be a single computer as well as a network comprising a plurality of computers. The computer system 12 has at least one input device 13 comprising a keyboard and a computer mouse, and an output device 14 on. The output device is typically a monitor or a projector. In the computer system 12 is a Java ® platform 15 intended.

Das oben beschriebene erfindungsgemäße Verfahren ist durch Software beziehungsweise Computerprogramme realisiert. Diese Software weist als zentrales Programm einen Quellcodegenerator 16 auf. Der Quellcodegenerator 16 ist mit einem Programm 17 zum Erstellen eines Prozessdiagrammes verbunden, umfassend den oben beschriebenen Prozessmanager und den oben beschriebenen Subjektmanager. Zwischen dem Programm 17 und der Eingabeeinrichtung 13 und der Ausgabeeinrichtung 14 besteht eine Datenverbindung 18, über welche von einem Benutzer die entsprechenden Daten zum Erstellen des Prozessdiagrammes eingegeben werden können und von dem Programm die Daten an die Ausgabeeinrichtung 14 zum Darstellen des Diagrammes ausgegeben werden können. Vorzugsweise wird das Diagramm in der Form eines Blockschaltbildes erstellt, wobei jedem Subjekt ein separater Block zugeordnet ist. Im Rahmen der Erfindung ist es jedoch nicht notwendig, dass die Prozessdatei graphisch erzeugt wird. Grundsätzlich wäre es auch möglich, den Text der Prozessdatei mit einem Editor zu schreiben. Die graphische Erzeugung der Prozessdatei ist jedoch wesentlich einfacher und intuitiver ausführbar.The inventive method described above is implemented by software or computer programs. This software has as a central program a source code generator 16 on. The source code generator 16 is with a program 17 for creating a process diagram, comprising the process manager described above and the subject manager described above. Between the program 17 and the input device 13 and the output device 14 there is a data connection 18 via which the user can input the corresponding data for creating the process diagram and from the program the data to the output device 14 can be output for displaying the diagram. Preferably, the diagram is created in the form of a block diagram, each subject being assigned a separate block. In the context of the invention, however, it is not necessary that the process file is generated graphically. In principle, it would also be possible to write the text of the process file with an editor. However, the graphical generation of the process file is much easier and more intuitive.

Ist die Prozessdatei einmal erzeugt, wird sie an den Quellcodegenerator 16 weiter gegeben, der für jedes Subjekt einen Quellcode 19 erzeugt. Die Quellcode eines jeden Subjektes stellen jeweils ein separates Programm dar, die über Datenverbindungen 20 miteinander verknüpft sind.Once the process file has been generated, it is sent to the source code generator 16 given, which is a source code for each subject 19 generated. The source code of each subject each represents a separate program that has data connections 20 linked together.

Mit einem Validierungsprogramm 21 können die Quellcode individuell oder alle gemeinsam gleichzeitig gestartet werden.With a validation program 21 The source code can be started individually or all together at the same time.

Ist das erfindungsgemäße System ein Netzwerk mit mehreren Computern, ist es nicht notwendig, dass auf jedem Computer eine Java®-Plattform 15 vorhanden ist. Wird der Quellcode 19 eines Subjektes compiliert, so kann er an einem weiteren Computer im Netzwerk, auf dem er nicht erzeugt worden ist, direkt ausgeführt werden.If the system according to the invention is a network with multiple computers, it is not necessary that a Java® platform be present on each computer 15 is available. Will the source code 19 compile a subject, it can be directly executed on another computer in the network on which it has not been created.

Die Erfindung ist oben an Hand eines Ausführungsbeispieles näher erläutert worden, bei welchem ein Quellcode in der Programmiersprache Java® erzeugt wird. Die Erfindung ist selbstverständlich nicht auf diese Programmiersprache beschränkt. Sie ist auch in jeder beliebigen anderen Programmiersprache ausführbar. Die Verwendung von Java® hat jedoch den Vorteil gegenüber anderen Programmiersprachen, dass sie systemunabhängig auf unterschiedlichen Rechnern ausführbar ist, so dass bei einer Anwendung in einem Netzwerk auf einfache Art und Weise sicher gestellt ist, dass die automatisch erzeugten Quellcodedateien überall im Netzwerk ausführbar sind.The invention has been explained above with reference to an embodiment in which a source code in the programming language Java ® is generated. Of course, the invention is not limited to this programming language. It can also be executed in any other programming language. However, the use of Java® has the advantage over other programming languages that it can be executed system-independently on different computers, so that when used in a network in a simple manner it is ensured that the automatically generated source code files are executable anywhere in the network.

Mit der vorliegenden Erfindung wird ein Werkzeug (Methode: Quellcode erzeugen) geschaffen, mit welchem Quellcode automatisch generiert wird. Eine manuelle Bearbeitung des automatisch erzeugten Quellcodes ist nicht notwendig. Der Quellcode ist somit sofort ausführbar.With the present invention, a tool (method: generate source code) is created with which source code is automatically generated. Manual processing of the automatically generated source code is not necessary. The source code is thus immediately executable.

Claims (12)

Verfahren zum Erzeugen eines Quellcodes für ein Computerprogramm zur Ausführung bzw. Simulation eines Geschäftsprozesses, umfassend folgende Schritte: – Festlegen von natürlichen Personen und/oder Geräten und/oder Teilen von Geräten des Geschäftsprozesses als Subjekte, wobei die Subjekte im Geschäftsprozess miteinander kommunizieren und/oder Handlungen ausführen, – Beschreiben des Geschäftsprozesses mit einem graphischen Diagramm als Blockschaltbild, wobei ein jedes Subjekt durch einen Block und die Kommunikation zwischen den Subjekten als Pfeile zwischen den Blöcken dargestellt werden, wodurch ein jedes Subjekt, die Kommunikation zwischen den Subjekten und die Art der Tätigkeit der einzelnen Subjekte definiert werden, – Speichern des so definierten Geschäftsprozesses in einer Prozessdatei, – automatisches Erzeugen eines Quellcodes für ein Computerprogramm aus der Prozessdatei, wobei für ein jedes Subjekt eine separate Quellcodedatei erzeugt wird, die jeweils Befehle zum Austausch von Daten mit Quellcodedateien weiterer Subjekte gemäß den in der Prozessdatei enthaltenen Informationen umfasst, wobei der Quellcode eines jeden Subjektes ein separates, ausführbares Programm darstellt, wobei jedes Subjekt einen Puffer zum Empfangen von Nachrichten aufweist, wobei der Quellcode derart ausgebildet ist, dass als Befehle zum Austausch von Daten Kommunikationsbefehle verwendet werden, die auf dem Monitorkonzept beruhen, so dass ein aktives Warten (busy waiting) vermieden wird.Method for generating a source code for a computer program for executing or simulating a business process, comprising the following steps: Determining individuals and / or devices and / or parts of devices of the business process as subjects, wherein the subjects communicate and / or perform actions in the business process, Describing the business process with a graphic diagram as a block diagram, wherein each subject is represented by a block and the communication between the subjects as arrows between the blocks, whereby each subject, the communication between the subjects and the kind of activity of the individual subjects To be defined, - Save the business process defined in this way in a process file Automatically generating a source code for a computer program from the process file, generating for each subject a separate source code file, each comprising instructions for exchanging data with source code files of further subjects in accordance with the information contained in the process file, the source code of each subject a separate, executable program, each subject having a buffer for receiving messages, the source code being arranged to use as commands for exchanging data communication commands based on the monitor concept, such that an active waiting is avoided. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Quellcodedatei mit einem Befehl erzeugt wird, der beim Ausführen des Quellcodes Daten der Prozessdatei liest, und in Abhängigkeit dieser Daten bestimmte Funktionen ausführt.A method according to claim 1, characterized in that the source code file is generated with a command that reads data of the process file when executing the source code, and executes certain functions in response to this data. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der Quellcode mit einer Abfrage versehen wird, die in der Prozessdatei in einer Funktionsfolge beschriebene Funktionen abfragt und aufruft.Method according to Claim 1 or 2, characterized in that the source code is provided with a query which queries and calls functions described in the process file in a function sequence. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass in dem Puffer für unterschiedliche Sender bzw. unterschiedliche Nachrichtentypen gleichzeitig unterschiedliche Anzahlen von empfangbaren Nachrichten festlegbar sind, so dass für einen jeden Sender bzw. einen jeden Nachrichtentyp eine separate Empfangskapazität im Puffer reserviert ist.Method according to one of Claims 1 to 3, characterized in that different numbers of receivable messages can be defined simultaneously in the buffer for different transmitters or different message types, so that a separate receive capacity in the buffer is reserved for each transmitter or each message type , Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass das graphische Diagramm in der Prozessdatei mit einer Metasprache beschrieben wird.Method according to one of claims 1 to 4, characterized in that the graphical diagram is described in the process file with a metalanguage. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass als Befehle zum Übertragen von Daten zwischen den Subjekten notify, notifyAll und wait der Programmiersprache JAVA® verwendet werden.Method according to one of claims 1 to 5, characterized in that are used as commands for transferring data between the subjects notify, notifyAll and wait the programming language JAVA ® . Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass die Quellcodedateien derart erzeugt werden, dass sie in einem Computernetzwerk auf unterschiedlichen Computern ausführbar sind und über das Computernetzwerk hinweg kommunizieren.Method according to one of claims 1 to 6, characterized in that the source code files are generated in such a way that they can be executed in a computer network on different computers and communicate across the computer network. Verfahren zum Validieren der Kommunikation eines automatisch nach einem der Ansprüche 1 bis 7 erzeugten Quellcodes, wobei für Aktionen, für die nicht automatisch ein Quellcode erzeugbar ist, eine Abfrage an den Benutzer bei der automatischen Erzeugung des Quellcodes eingesetzt wird, und beim Validieren des automatisch erzeugten Quellcodes der Quellcode zur Ausführung gebracht wird, wobei der Benutzer interaktiv die einzelnen Abfragen zu bestätigen hat, wobei ggfs. vom Benutzer bestimmte Eingaben (Parameter, Entscheidung) zu tätigen sind.Method for validating the communication of a source code automatically generated according to one of claims 1 to 7, wherein for actions for which a source code is not automatically generated, a query is applied to the user in the automatic generation of the source code, and in validating the automatically generated Source code of the source code is executed, whereby the user has to interactively confirm the individual queries, where appropriate, by the user certain inputs (parameters, decision) are to be made. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass Aktionen, die innerhalb eines Subjektes auszuführen sind, durch eine Abfrage an den Benutzer ersetzt werden.A method according to claim 8, characterized in that actions to be performed within a subject are replaced by a query to the user. System zum Ausführen eines der Verfahren nach einem der Ansprüche 8 oder 9, dadurch gekennzeichnet, dass das System ein Computersystem (12) mit zumindest einer Eingabeeinrichtung (13) und einer Ausgabeeinrichtung (14) umfasst, auf dem eine Software zum Ausführen des Verfahrens nach einem der Ansprüche 8 oder 9 gespeichert ist.System for carrying out one of the methods according to one of claims 8 or 9, characterized in that the system comprises a computer system ( 12 ) with at least one input device ( 13 ) and an output device ( 14 ) on which software for carrying out the method according to one of claims 8 or 9 is stored. System nach Anspruch 10, dadurch gekennzeichnet, dass das Computersystem ein Netzwerk mit mehreren Computern ist. A system according to claim 10, characterized in that the computer system is a network with multiple computers. Datenträger, auf dem ein Computerprogramm gespeichert ist, das beim Laden in einen Computer ein Verfahren nach einem der Ansprüche 8 oder 9 ausführt.A data carrier, on which a computer program is stored, which when loaded into a computer carries out a method according to one of claims 8 or 9.
DE102005018864.8A 2004-04-23 2005-04-22 Method and system for generating a source code for a computer program Expired - Lifetime DE102005018864B4 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102005018864.8A DE102005018864B4 (en) 2004-04-23 2005-04-22 Method and system for generating a source code for a computer program

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102004019958.2 2004-04-23
DE102004019958 2004-04-23
DE102005018864.8A DE102005018864B4 (en) 2004-04-23 2005-04-22 Method and system for generating a source code for a computer program

Publications (2)

Publication Number Publication Date
DE102005018864A1 DE102005018864A1 (en) 2005-11-10
DE102005018864B4 true DE102005018864B4 (en) 2014-10-30

Family

ID=35140255

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102005018864.8A Expired - Lifetime DE102005018864B4 (en) 2004-04-23 2005-04-22 Method and system for generating a source code for a computer program

Country Status (1)

Country Link
DE (1) DE102005018864B4 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015107150A1 (en) 2015-05-07 2016-11-10 R. Gniza Praxis Solutions GmbH & Co. KG Apparatus, methods and computer programs for detecting interconnectable interfaces

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006029383A1 (en) * 2006-06-27 2008-01-03 Deutsche Telekom Ag Method and device for ensuring data protection during offboard toll collection
DE102011000185A1 (en) 2011-01-17 2012-07-19 Metasonic Ag System and method for generating a source code for a computer program

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078420A1 (en) * 2001-03-01 2004-04-22 Paul Marrow Method and system for distributed processing management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078420A1 (en) * 2001-03-01 2004-04-22 Paul Marrow Method and system for distributed processing management

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Goelgeli, B.: UML 2.0 Quelltextgenerierung. Seminararbeit im Rahmen des Seminars "Sicherheitskritische Systeme" an der Universität Siegen, Fachgruppe für Praktische Informatik. SS 2004. S. 1 - 11 *
Hardt, C.: UML 2.0 und die Modellierung von Realtime-Systemen. Seminararbeit im Rahmen des Seminars "Sicherheitskritische Systeme" an der Universität Siegen, Fachgruppe für Praktische Informatik. SS 2004. S. 1 - 17 *
Sundaram, V. S.: Mission-flow Constructur - A Workflow Management System Using Mobile Agents.Thayer School of Engineering, Dartmouth College Hanover, New Hampshire, May 2000.(recherchiert am 13.02.2014) *
Sundaram, V. S.: Mission-flow Constructur - A Workflow Management System Using Mobile Agents.Thayer School of Engineering, Dartmouth College Hanover, New Hampshire, May 2000.<http://agent.cs.dartmouth.edu/papers/sundaram:thesis.ps.gz>(recherchiert am 13.02.2014)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015107150A1 (en) 2015-05-07 2016-11-10 R. Gniza Praxis Solutions GmbH & Co. KG Apparatus, methods and computer programs for detecting interconnectable interfaces
DE102015107150B4 (en) 2015-05-07 2024-06-13 R. Gniza Praxis Solutions GmbH & Co. KG Devices, methods for detecting connectable interfaces

Also Published As

Publication number Publication date
DE102005018864A1 (en) 2005-11-10

Similar Documents

Publication Publication Date Title
DE69626127T2 (en) Service generating device for a communication network and corresponding method
DE60127795T2 (en) System and method for metric and status display
DE60038705T2 (en) METHOD AND DEVICE FOR THE ACTIVITY-BASED COOPERATION OF A COMPUTER SYSTEM EQUIPPED WITH A COMMUNICATION MANAGER
DE69637436T2 (en) Object-oriented communication system with support for several remote machine types
DE69531689T2 (en) METHOD FOR MONITORING TELEPHONE AND / OR DATA NETWORKS, IN PARTICULAR MOBILE TELEPHONE NETWORKS
DE60223593T2 (en) GRAPHIC CONFIGURATION OF PROGRAMMAGE VISION RELATIONS
DE602004011455T2 (en) Method and system for automatically generating service interfaces for a service-oriented architecture
DE3783042T2 (en) SYSTEM FOR AUTOMATING TESTS.
US8429611B2 (en) Method and system for generating a source code for a computer program
DE19712946A1 (en) Computerised method of automatically expanding specifications of process model in workflow process environment
DE69129536T2 (en) OBJECT-BASED COMPUTER SYSTEM
EP2648094B1 (en) Method and system for creating a source code for a computer program for executing and simulating a process
DE19960048A1 (en) Start condition processing method for computer workflow management system evaluates correctness of control links for each process activity and verifies time interval conditions
DE60114949T2 (en) routing
DE102005018864B4 (en) Method and system for generating a source code for a computer program
EP1332438A2 (en) Method and device for the transfer of electronic data volumes
EP2479664B1 (en) System and method for generating a source code for a computer program
DE69916458T2 (en) Automatic configuration of an Internet-like computer network
DE102018205953A1 (en) Method for operating an operating device of a device in order to determine a display content, as well as operating device and device
DE4310615A1 (en) Method and device to provide a system which can be configured by the user, and integrates and manages several different tasks and software tools
WO2005064274A1 (en) Starting up an application of a mobile client
WO2021245247A1 (en) Method for creating and executing a control program for controlling an automation system, and automation system
DE10339112B4 (en) Method for generating at least one project reference model, method for generating structured configuration information by means of such a project reference model and device for carrying out, managing and organizing such methods
EP1691275B1 (en) Method and apparatus for computer-assisted creation of a graphical user interface
EP1044409B1 (en) Program flow method and method for expanding a program component system

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: ALLGEIER IT SOLUTIONS GMBH, DE

Free format text: FORMER OWNER: JCOM1 AG, 85296 ROHRBACH, DE

Effective date: 20110415

Owner name: METASONIC GMBH, DE

Free format text: FORMER OWNER: JCOM1 AG, 85296 ROHRBACH, DE

Effective date: 20110415

R012 Request for examination validly filed

Effective date: 20120105

R082 Change of representative

Representative=s name: PATRONUS IP PATENT- & RECHTSANWAELTE BERNHARD , DE

R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R082 Change of representative

Representative=s name: PATRONUS IP PATENT- & RECHTSANWAELTE BERNHARD , DE

R081 Change of applicant/patentee

Owner name: ALLGEIER IT SOLUTIONS GMBH, DE

Free format text: FORMER OWNER: METASONIC AG, 85276 PFAFFENHOFEN, DE

Effective date: 20141016

Owner name: METASONIC GMBH, DE

Free format text: FORMER OWNER: METASONIC AG, 85276 PFAFFENHOFEN, DE

Effective date: 20141016

R082 Change of representative

Representative=s name: PATRONUS IP PATENT- & RECHTSANWAELTE BERNHARD , DE

Effective date: 20141016

Representative=s name: PATRONUS IP PATENT- & RECHTSANWAELTE BERNHARD , DE

Effective date: 20130821

R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: ALLGEIER IT SOLUTIONS GMBH, DE

Free format text: FORMER OWNER: METASONIC GMBH, 85276 PFAFFENHOFEN, DE

R082 Change of representative

Representative=s name: HGF EUROPE LLP, DE

Representative=s name: PATRONUS IP PATENT- & RECHTSANWAELTE BERNHARD , DE

Representative=s name: HGF EUROPE LP, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009450000

Ipc: G06F0008400000

R073 Re-establishment requested
R074 Re-establishment allowed
R071 Expiry of right