[go: up one dir, main page]

DE69815946T2 - Informationsverarbeitungsvorrichtung - Google Patents

Informationsverarbeitungsvorrichtung Download PDF

Info

Publication number
DE69815946T2
DE69815946T2 DE69815946T DE69815946T DE69815946T2 DE 69815946 T2 DE69815946 T2 DE 69815946T2 DE 69815946 T DE69815946 T DE 69815946T DE 69815946 T DE69815946 T DE 69815946T DE 69815946 T2 DE69815946 T2 DE 69815946T2
Authority
DE
Germany
Prior art keywords
class
class data
data
list
objects
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 - Fee Related
Application number
DE69815946T
Other languages
English (en)
Other versions
DE69815946D1 (de
Inventor
Takashi Nakahara-ku Nishigaya
Ichiro Nakahara-ku Iida
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Application granted granted Critical
Publication of DE69815946D1 publication Critical patent/DE69815946D1/de
Publication of DE69815946T2 publication Critical patent/DE69815946T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Description

  • Hintergrund der Erfindung
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf ein Informationsverarbeitungsgerät und ist speziell anwendbar, wenn eine verteilte objektorientierte Programmierung etc. durchgeführt wird.
  • Beschreibung des Standes der Technik
  • Herkömmlicherweise kann ein verteiltes System einfach entwickelt werden, weil ein Verfahren an ein Objekt in einem entfernt gelegenen Computer ausgegeben werden kann wie in dem Fall, in dem ein Verfahren für ein Objekt in einem lokalen Computer unter Verwendung einer verteilten objektorientierten Technologie wie z. B. CORBA (common object request broker architecture), DCOM (distributed component object model), JavaRMI (JAVA remote method invocation) etc. ausgegeben wird.
  • Da die herkömmliche verteilte objektorientierte Technologie jedoch keine Funktionen zum Ersetzen eines Teils eines Programmcodes eines Server-Objekts, das betrieben wird, oder Addieren eines Teils eines Programmcodes mit einer neuen Funktionalität von einem entfernt gelegenen Computer aufweist, können verteilte Objekte nicht reibungsfrei verwaltet werden.
  • Wenn z. B. ein Programm für einen neuen Abfragebefehl in einem Server-Objekt einer Datenbank ausgeführt werden soll, sollte das Server-Objekt beendet und auf solch eine Weise zurückgesetzt werden, dass ein neu addiertes Programm für das Server-Objekt zur Verfügung stehen kann, und danach sollte es wieder aktiviert werden.
  • Mit einer zunehmenden Anzahl von mit einem aktualisierten Service verbundenen Server-Objekten nimmt es daher eine längere Zeit in Anspruch, den Service bzw. Dienst zu stoppen, weil es normalerweise eine lange Zeit in Anspruch nimmt, einen Programmcode eines Server-Objekts in einem verteilten System zu addieren oder zu aktualisieren.
  • Außerdem gibt es das Leistungsproblem, falls das verteilte System einen starken Einfluss einer Netzwerkverzögerung aufweist, wenn mehrere Verfahren für das gleiche Objekt aufgerufen werden oder wenn eine große Menge Daten durch Parameter oder einen Rückgabe- oder Rückkehrwert eines Verfahrens durchgeleitet wird.
  • Die Anzahl von Verfahrensschnittstellen eines Server-Objektes sollte überdies zur Diversifizierung erhöht werden, um das Server-Objekt für allgemeine Zwecke zu nutzen oder ein Programm auf der Client-Seite unter Verwendung der Schnittstellen des Sever-Objektes kundenspezifisch anzupassen.
  • In dem herkömmlichen verteilten System erhöhen daher die komplizierten Server-Schnittstellen die Schwierigkeit einer Anwendungsentwicklung und die Verzögerung bei der Service-Antwort. Überdies weist das herkömmliche verteilte System das Problem auf, dass ein Administrator eine große Verantwortung bei der Wartung und Verwaltung der Sicherheit der Schnittstelle hat, wenn ein Programmcode hinzugefügt oder aktualisiert wird.
  • Yau, Stephan S. et al, 'AN OBJECT-ORIENTED APPROACH TO SOFTWARE DEVELOPMENT FOR PARALLEL PROCESSING SYSTEMS' PROCEEDINGS OF THE INTERNATIONAL COMPUTER SOFTWARE AND APPLICATIONS CONFERENCE (COMPSAC), TOKYO SEPT. 11–13, 1991, no. CONF. 15, 11. September 1991, Seiten 453 – 458, XP000260562, KNAFL G J, offenbart Klassen mit Verfahren, wodurch ein gleichzeitiger Zugriff auf ein Verfahren eines Klassenobjekts gestattet wird, aber mit Hilfe von Schutzvorkehrungen serialisiert werden muß, die an die Verfahren angefügt werden und die Sperrungen implementieren. Gewöhnlich kann bei objektorientierten Klassen ein Verfahren Klassenvariablen festlegen, die zu einem Klassenobjekt oder zu einem Satz aller Objekte für einen Klassentyp als Ganzes gehören.
  • WO 94/01819A von Ericsson Telephone AB offenbart ein Verfahren zum Ändern einer Software während eines Computerbetriebs, bei dem der Server eine neue Server-Klasse empfängt und installiert, um eine alte Server-Klasse zu ersetzen, und während eines Computerbetriebs ermöglicht, dass von einem gegebenen Zeitpunkt an alle Operationen nur auf der neuen Server-Klasse verarbeitet werden und die alte Server-Klasse überhaupt nicht mehr genutzt wird.
  • Zusammenfassung der Erfindung
  • Die erste Aufgabe der vorliegenden Erfindung ist somit, einen Teil eines Programmcodes ohne Stoppen des Programms, das gerade verarbeitet wird, zu löschen oder zu ersetzen.
  • Die zweite Aufgabe der vorliegenden Erfindung ist, ein Programm ohne Programmiererkenntnisse einer Klassenverwaltung einfach kundenspezifisch anzupassen.
  • Die dritte Aufgabe der vorliegenden Erfindung besteht darin, die Sicherheit der Schnittstelle zu verbessern, wenn ein Programmcode in einem verteilten System addiert oder aktualisiert wird.
  • Gemäß der vorliegenden Erfindung wird ein Informationsverarbeitungsgerät wie im beigefügten Anspruch 1 definiert geschaffen, um ein durch Klassendaten gebildetes Programm zu betreiben.
  • Ein Programm kann somit durch Klassendaten gebildet werden, und die Nutzung des Programms kann für jedes Stück addierter Klassendaten überwacht werden. Folglich können Klassendaten, die gerade verwendet werden, erkannt werden, während das Programm betrieben wird, und ein Teil des Programmcodes kann während der Ausführung des Programms gelöscht oder ersetzt werden.
  • Die vorliegende Erfindung enthält eine Agent-Klasse oder Benutzerarbeitseinheitsklasse (engl. agent class) zum Erzeugen eines Benutzerarbeitseinheitsklassen-Objekts zum Überwachen der Nutzung von Klassendaten und erzeugt ein Benutzerarbeitseinheitsklassen-Objekt gemäß der Benutzerarbeitseinheitsklasse, wenn eine Operation in den Klassendaten durchgeführt wird.
  • Die Funktion zum Überwachen eines Programms kann somit einfach zu dem zu überwachenden Programm addiert werden, die Nutzung des Programms kann ohne Kenntnisse eines Programmierers über eine Klassenverwaltung einfach überwacht werden, und ein Teil des Programmcodes kann gelöscht oder ersetzt werden, während das Programm läuft.
  • In der vorliegenden Erfindung erzeugt außerdem eine Benutzerarbeitseinheitsklasse ein Klassenverwaltungsobjekt zum Verwalten von zu einem Benutzerarbeitseinheitsklassen-Objekt addierten Klassendaten jedesmal, wenn eine Anforderung, Klassendaten zu addieren, ausgegeben wird.
  • Somit kann ein Programm für jede zu dem Programm neu addierte Funktion überwacht werden, und, wenn das Programm läuft, kann bestimmt werden, welche Funktion des Programms gerade genutzt wird. Daher kann alleiniges Spezifizieren der Funktion eines Teils des Programms die Funktion des Programms löschen oder ersetzen, während das Programm läuft.
  • Das Gerät der Erfindung speichert vorzugsweise die Beziehung zwischen dem Klassenverwaltungsobjekt, das gemäß einer Aufforderung oder Anforderung zur Addition von Klassendaten erzeugt wurde, und einer Identifizierungsinformation über das Klassenverwaltungsobjekt.
  • Alleiniges Spezifizieren einer Identifizierungsinformation wie z. B. eines Namens eines Klassenverwaltungsobjekts etc. löscht und ersetzt somit einen Teil eines Programmcodes, während das Programm läuft, dadurch die Last des Programmierers reduzierend, wenn das Programm kundenspezifisch angepasst wird.
  • In einer bevorzugten Ausführungsform der vorliegenden Erfindung enthält ein Klassenverwaltungsobjekt eine Tabelle für lokale Klassendaten zum Speichern von Klassendaten, die für das Klassenverwaltungsobjekt spezifisch sind.
  • Selbst wenn ein Konflikt zwischen den von einem anderen Objekt übertragenen Klassendaten und den Klassendaten, die durch ein Klassenverwaltungsobjekt gerade verwaltet werden, auftritt, können somit die Klassendaten, die von einem anderen Objekt übertragen werden, und die Klassendaten, die durch ein Klassenverwaltungsobjekt gerade verwaltet werden, unabhängig gespeichert werden, und ein Benutzerarbeitseinheitsklassen-Objekt kann die von einem anderen Objekt übertragenen Klassendaten fern-verarbeiten.
  • In der bevorzugten Ausführungsform der vorliegenden Erfindung enthält ein Klassenverwaltungsobjekt auch ein Löschungs-Flag zum Speichern einer Anforderung zur Löschung von Klassendaten.
  • Eine Anforderung zur Löschung von Klassendaten kann somit gespeichert und akzeptiert werden, während die durch die Anforderung zur Datenlöschung spezifizierten Klassendaten gerade genutzt werden. Als Folge ist es nicht notwendig, eine Anforderung zur Löschung von Klassendaten erneut auszugeben, nachdem die Anforderung einmal zurückgewiesen ist. Da die tatsächliche Lö schung der Klassendaten so verwaltet wird, dass sie aufgeschoben wird, kann die Last des Programmierers reduziert werden.
  • In der bevorzugten Ausführungsform enthält überdies ein Klassenverwaltungsobjekt einen Speicherbereich für Ersatz-Klassendaten, um neue Klassendaten zu speichern, wenn eine Anforderung zur Ersetzung von Klassendaten ausgegeben wird.
  • Neue Klassendaten können somit gespeichert werden, wenn eine Anforderung zum Ersatz ausgegeben wird, und eine Anforderung zum Ersatz von Klassendaten kann akzeptiert werden, während die durch die Anforderung zum Ersatz von Klassendaten spezifizierten Klassendaten gerade genutzt werden. Als Folge ist es nicht notwendig, eine Anforderung zum Ersatz von Klassendaten erneut auszugeben, nachdem die Anforderung einmal zurückgewiesen ist. Da die tatsächliche Löschung der Klassendaten so verwaltet wird, dass sie aufgeschoben ist, kann die Last des Programmierers reduziert werden.
  • Als ein weiteres Merkmal der bevorzugten Ausführungsform enthält ein Klassenverwaltungsobjekt eine Liste laufender Threads zum Speichern von Identifizierungsinformationen über ein Thread, das Klassendaten gerade verarbeitet.
  • Alleiniges Verweisen auf die Liste laufender Threads bestimmt somit, ob Klassendaten, die gerade verarbeitet werden, existieren oder nicht, und die Nutzung der Klassendaten kann einfach geprüft werden.
  • In der bevorzugten Ausführungsform der vorliegenden Erfindung enthält ein Klassenverwaltungsobjekt auch eine Klassennamenliste zum Speichern eines Klassennamens addierter Klassendaten.
  • Das Klassenverwaltungsobjekt kann somit einfach die verwalteten Klassendaten selbst prüfen und kann Klassendaten für jedes Stück addierter Klassendaten verarbeiten.
  • Noch ein weiteres Merkmal der bevorzugten Ausführungsform ist, dass ein Klassenverwaltungsobjekt eine Referenzobjektliste zum Speichern einer Identifizierungsinformation über das Klassenverwaltungsobjekt enthält, welches Klassendaten verwaltet, auf die durch bestimmte Klassendaten verwiesen wird, und eine Liste verwiesener Objekte, um eine Identifizierungsinformation über ein Klassenverwaltungsobjekt zu speichern, welches Klassendaten verwaltet, auf die bestimmte Klassendaten verweisend.
  • Somit kann eine Operation an Klassendaten unter Berücksichtigung der Verweise der Klassendaten durchgeführt werden, und der Programmierer muß die Verweise der Klassendaten nicht erkennen. Daher kann das Programm einfach kundenspezifisch angepasst werden.
  • In einer anderen Ausführungsform der vorliegenden Erfindung enthält eine Benutzerarbeitseinheitsklasse eine Zugriffssteuerklasse zum Prüfen von Zugriffsprivilegien von einem Objekt einer anderen Benutzerarbeitseinheitsklasse.
  • Ein Benutzerarbeitseinheitsklassen-Objekt kann somit ein Zugriffssteuerobjekt basierend auf einer Zugriffssteuerklasse erzeugen, wenn ein anderes Benutzerarbeitseinheitsklassen-Objekt Zugriff erlangt. Daher werden jedesmal, wenn ein Benutzerarbeitseinheitsklassen-Objekt Zugriff erlangt, Zugriffsprivilegien geprüft, und Zugriffsbedingungen können für jedes Benutzerarbeitseinheitsklassen-Objekt einfach ergänzt oder berichtigt werden, wodurch die Sicherheit der Schnittstelle beim Addieren oder Aktualisieren eines Programmcodes verbessert wird.
  • In der vorliegenden Erfindung weist die Schnittstelle für ein öffentliches Fern-Verfahren ein Mittel zur Addition von Klassendaten auf, um Klassendaten zu einem Benutzerarbeitseinheitsklassen-Objekt zu addieren.
  • Während der Ausführung eines Programms können daher Klassendaten für ein Programm neu addiert werden.
  • Eine Ausführungsform der vorliegenden Erfindung enthält eine Einheit zur Erzeugung von Klassenverwaltungsobjekten, um ein Klassenverwaltungsobjekt für Klassendaten zu erzeugen, die zu einem Benutzerarbeitseinheitsklassen-Objekt addiert werden; eine Klassennamen-Registrierungseinheit, um einen Klassennamen von Klassendaten in einer Klassennamenliste in dem Klassenverwaltungsobjekt zu registrieren; eine Schreibeinheit für Klassendatentabellen, um die Klassendaten in eine Tabelle gemeinsam genutzter Klassendaten zu schreiben; und eine Einheit zur Registrierung von Tabellen für Klassenverwaltungsobjekte, um Identifizierungsinformationen über das Klassenverwaltungsobjekt in einer Tabelle für Klassenverwaltungsobjekte zu registrieren.
  • Somit kann das Benutzerarbeitseinheitsklassen-Objekt die Nutzung jedes Elements addierter Klassendaten überwachen, die addierten Daten einfach spezifizieren und eine Operation an den Klassendaten durchführen.
  • In einer Ausführungsform der vorliegenden Erfindung werden, wenn ein Klassenname von Klassendaten, die zu einem Benutzerarbeitseinheitsklassen-Objekt addiert wurden, zu einem Klassennamen von Klassendaten paßt, die in einer Tabelle für gemeinsam genutzte Klassendaten registriert sind, die zum Benutzerarbeitseinheitsklassen-Objekt addierten Klassendaten aus der Tabelle gemeinsam genutzter Klassendaten entfernt.
  • Somit kann ein Konflikt in der gleichen Klasse in der Tabelle gemeinsam genutzter Klassendaten vermieden werden.
  • In der vorliegenden Ausführungsform enthält die Schnittstelle für ein öffentliches Fern-Verfahren ein Klassendaten-Verarbeitungsmittel zum Verarbeiten von Klassendaten, die in einem Benutzerarbeitseinheitsklassen-Objekt gespeichert sind.
  • Das Benutzerarbeitseinheitsklassen-Objekt kann somit eine durch Klassendaten repräsentierte Operation ausführen.
  • In einer Ausführungsform der vorliegenden Erfindung wird, wenn gerade verarbeitete Klassendaten auf andere Klassendaten verweisen, eine Ausführungsinformation für ein Klassenverwaltungsobjekt festgelegt, welches die gerade verarbeiteten Klassendaten verwaltet, und wird auch für ein Klassenverwaltungsobjekt festgelegt, welches die verwiesenen Klassendaten verwaltet.
  • Selbst wenn eine Anforderung, die verwiesenen Klassendaten zu löschen oder zu ersetzen, ausgegeben wird, während die verwiesenen Klassendaten gerade verarbeitet werden, kann somit die Löschung oder der Ersatz der verwiesenen Klassendaten bis zum Ende des Prozesses der verwiesenen Klassendaten vorübergehend angehalten werden, wodurch eine nicht erfolgreiche Beendigung des Prozesses auf den Klassendaten vermieden wird.
  • In einer weiteren Ausführungsform der vorliegenden Erfindung werden, wenn eine Liste laufender Threads leer ist und ein Löschungs-Flag eines Klassenverwaltungsobjekts auf WAHR gesetzt ist, Klassendaten, die dem Klassennamen in der Klassennamenliste des Klassenverwaltungsobjekts entsprechen, aus der Tabelle gemeinsam genutzter Klassendaten entfernt.
  • Nach Abschließen der in einer Löschungs-Anforderung spezifizierten Funktion eines Teils eine Programms kann somit die Funktion des Teils des Programms gelöscht werden. Daher kann ein Aussetzen des Programms, das gerade ausgeführt wird, oder ein Reaktivieren des Programms vermieden werden, wenn angefordert wird, daß die Funktion des Teils des Programms gelöscht wird.
  • In noch einer weiteren Ausführungsform der vorliegenden Erfindung werden, wenn eine Liste laufender Threads leer ist und ein Speicherbereich für Ersatz-Klassendaten Klassendaten speichert, Klassendaten, die ersetzt werden sollen und in der Tabelle für gemeinsam genutzte Klassendaten gespeichert sind, durch Klassendaten ersetzt, die im Speicherbereich für Ersatz-Klassendaten gespeichert sind.
  • Nach Abschließen der in einer Ersatz-Anforderung spezifizierten Funktion eines Teils eines Programms kann somit die Funktion des Teils des Programms durch eine andere Funktion ersetzt werden. Daher kann ein Aussetzen des Programms, das gerade ausgeführt wird, oder ein Reaktivieren des Programms vermieden werden, wenn angefordert wird, daß die Funktion des Teils des Programms ersetzt wird.
  • Die Schnittstelle für ein öffentliches Fern-Verfahren kann ferner ein Klassendaten-Löschungsmittel zum Löschen von Klassendaten aus einem Benutzerarbeitseinheitsklassen-Objekt aufweisen.
  • Das Benutzerarbeitseinheitsklassen-Objekt kann somit einen Teil eines Programms löschen.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung wird, wenn eine Identifizierungsinformation über einen Thread in einer Liste laufender Threads eines Klassenverwaltungsobjekts festgelegt ist, die Löschung von durch den Thread verarbeiteten Klassendaten ausgesetzt, und ein Löschungs-Flag eines Klassenverwaltungsobjekts wird WAHR gesetzt.
  • Selbst wenn eine Löschungs-Anforderung für gerade verarbeitete Klassendaten ausgegeben wird, kann somit die Löschungs-Anforderung für die Klassendaten akzeptiert werden, ohne eine Verarbeitung der Klassendaten zu stoppen. Daher kann angefordert werden, die Klassendaten zu löschen, ohne den Prozess auf den Klassendaten zu beeinflussen.
  • Die Schnittstelle für ein öffentliches Fern-Verfahren kann ferner ein Klassendaten-Ersatzmittel zum Ersetzen von Klassendaten eines Benutzerarbeitseinheitsklassen-Objekts aufweisen.
  • Folglich kann das Benutzerarbeitseinheitsklassen-Objekt einen Teil eines Programms ersetzen.
  • In noch einer anderen Ausführungsform der vorliegenden Erfindung wird, wenn eine Identifizierungsinformation über ein Thread in einer Liste laufender Threads eines Klassenverwaltungsobjekts festgelegt ist, der Ersatz von durch den Thread verarbeiteten Klassendaten ausgesetzt, und neue Klassendaten werden in einem Speicherbereich für Ersatz-Klassendaten des Klassenverwaltungsobjekts festgelegt.
  • Selbst wenn eine Ersatz-Anforderung für gerade verarbeitete Klassendaten ausgegeben wird, kann somit die Ersatz-Anforderung für die Klassendaten akzeptiert werden, ohne eine Verarbeitung der Klassendaten zu stoppen. Daher kann angefordert werden, dass die Klassendaten ersetzt werden, ohne den Prozess auf den Klassendaten zu beeinflussen.
  • Gemäß einer weiteren Ausführungsform der vorliegenden Erfindung wird, wenn eine Löschungs- oder Ersatz-Anforderung ausgegeben wird, eine Fehlerbenachrichtigung übertragen, wenn eine Liste verwiesener Objekte eines Klassenverwaltungsobjekts nicht leer ist, und eine Identifizierungsinformation über ein verwiesenes Klassenverwaltungsobjekt wird aus einer Liste verwiesener Objekte eines verwiesenen Klassenverwaltungsobjekts gelöscht, wenn eine Liste von Verweisobjekten des Klassenverwaltungsobjekts nicht leer ist.
  • Folglich kann verhindert werden, dass Klassendaten, auf die durch andere Klassendaten verwiesen wird, verloren werden, und eine unnötige Information kann gelöscht werden, wodurch der Bedienungskomfort verbessert wird, wenn das Programm kundenspezifisch angepasst wird.
  • Gemäß einer anderen Ausführungsform der vorliegenden Erfindung kann ein Benutzerarbeitseinheitsklassen-Objekt unter Verwendung einer Schnittstelle für ein öffentliches Fern-Verfahren ein Programm aus der Ferne ausführen, um von einem anderen Benutzerarbeitseinheitsklassen-Objekt übertragene Klassendaten zu verarbeiten.
  • Ein weiteres Merkmal in einer Ausführungsform ist, von einem anderen Benutzerarbeitseinheitsklassen-Objekt übertragene Klassendaten in einer Tabelle lokaler Klassendaten eines Klassenverwaltungsobjekts zu speichern.
  • Eine Fern-Ausführung kann somit reibungslos durch ein Benutzerarbeitseinheitsklassen-Objekt ausgeführt werden, so daß ein Konflikt zwischen den Klassendaten und Klassendaten, die für das Klassenverwaltungsobjekt schon gespeichert sind, vermieden werden kann.
  • Gemäß einer anderen Ausführungsform der vorliegenden Erfindung wird basierend auf Klassendaten und serialisierten Daten eines aus den Klassendaten erzeugten Objekts das aus den Klassendaten erzeugte Objekt wiederhergestellt.
  • Folglich wird das aus den Klassendaten erzeugte Objekt zu einem anderen Benutzerarbeitseinheitsklassen-Objekt übertragen, und das Objekt kann fernverarbeitet werden.
  • Gemäß einer weiteren Ausführungsform der vorliegenden Erfindung werden Klassendaten, die verarbeitet werden sollen, und Klassendaten, auf die durch die zu verarbeitenden Klassendaten verwiesen wird, zu einem anderen Benutzerarbeitseinheitsklassen-Objekt übertragen.
  • Folglich können Klassendaten mit einer Verweisbeziehung fernverarbeitet werden.
  • In noch einer weiteren Ausführungsform der vorliegenden Erfindung werden Klassendaten in einem Ziel-Benutzerarbeitseinheitsklassen-Objekt entfernt, und zu verarbeitende Klassendaten werden zu dem Ziel-Benutzerarbeitseinheitsklassen-Objekt übertragen.
  • Somit kann der Datenübertragungsumfang in einer Fernausführung reduziert werden, und die Geschwindigkeit einer Fernausführung kann gesteigert werden.
  • In noch einer anderen Ausführungsform der vorliegenden Erfindung wird der Ausführungszustand eines mehrere Funktionen enthaltenden Programms für jede Funktion überwacht, und ein Prozess wird an einer Funktion des Programms basierend auf dem Ausführungszustand des Programms durchgeführt.
  • Wenn die Funktion eines Teils eines Programms während der Ausführung des Programms nicht ausgeführt wird oder wenn die Funktion eines Teils des Programms während der Ausführung des Programms abgeschlossen ist, kann somit die Funktion des Teils während der Ausführung des Programms gelöscht oder ersetzt werden, wodurch das Programm schnell kundenspezifisch angepasst wird.
  • Kurze Beschreibung der Zeichnungen
  • Die vorliegende Erfindung wird aus der folgenden ausführlichen Beschreibung ersichtlicher werden, wenn sie in Verbindung mit den beiliegenden Zeichnungen vorgenommen wird, in denen:
  • 1 ein Blockdiagramm ist, das die funktionale Konfiguration des Informationsverarbeitungsgeräts gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
  • 2 ein Blockdiagramm ist, das ein Beispiel der Konfiguration der in 1 dargestellten Klassendaten-Prozesseinheit zeigt;
  • 3 ein Blockdiagramm ist, das die funktionale Konfiguration des Computers gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
  • 4 ein Beispiel der Konfiguration des in 3 dargestellten Klassenverwaltungsobjekts zeigt;
  • 5 ein Beispiel der Konfiguration einer Klasse einer Benutzerarbeitseinheit zeigt;
  • 6 ein Verfahren zum Erzeugen eines Klassenverwaltungsobjekts zeigt, wenn Klassendaten addiert werden;
  • 7 ein Beispiel eines Codierens einer Schablone zeigt;
  • 8 ein Beispiel der Systemkonfiguration des in 3 gezeigten Computers zeigt;
  • 9 ein Flußdiagramm ist, das eine Operation der in 3 gezeigten Kommunikations-Hintergrundroutine zeigt;
  • 10 ein Flußdiagramm ist, das eine Operation des in 3 dargestellten Kommunikations-Thread zeigt;
  • 11 den Zustand zeigt, in welchem Klassendaten zu einem Benutzerarbeitseinheitsklassen-Objekt addiert werden;
  • 12 den Zustand zeigt, in welchem verwiesene Klassendaten zu einem Benutzerarbeitseinheitsklassen-Objekt addiert werden;
  • 13 das Verfahren zum Löschen überlappender Klassendaten aus einem Benutzerarbeitseinheitsklassen-Objekt zeigt;
  • 14 ein Flußdiagramm ist, das einen Klassendaten addierenden Prozess zeigt;
  • 15 ein Flußdiagramm ist, das einen Zugriffsprivilegien prüfenden Prozess zeigt;
  • 16 ein Flußdiagramm ist, das einen Klassendaten abrufenden Prozess zeigt;
  • 17 den Zustand eines Benutzerarbeitseinheitsklassen-Objekts zeigt, wenn Klassendaten verarbeitet werden;
  • 18 den Zustand eines Benutzerarbeitseinheitsklassen-Objekts zeigt, wenn verwiesene Klassendaten verarbeitet werden;
  • 19 ein Flußdiagramm ist, das einen Klassendatenprozess zeigt;
  • 20 den Zustand eines Benutzerarbeitseinheitsklassen-Objekts zeigt, wenn eine Löschungs-Anforderung ausgegeben wird, während Klassendaten verarbeitet werden;
  • 21 ein Flußdiagramm ist, das einen Klassendaten löschenden Prozess zeigt;
  • 22 den Zustand eines Benutzerarbeitseinheitsklassen-Objekts zeigt, wenn eine Ersatz-Anforderung ausgegeben wird, während Klassendaten verarbeitet werden;
  • 23 den Zustand eines Benutzerarbeitseinheitsklassen-Objekts nach Ersetzen von Klassendaten zeigt;
  • 24 ein Flußdiagramm ist, das einen Klassendaten ersetzenden Prozess zeigt;
  • 25 ein (fortgesetztes) Flußdiagramm ist, das einen Klassendaten ersetzenden Prozess zeigt;
  • 26 den Zustand eines Benutzerarbeitseinheitsklassen-Objekts zeigt, wenn Klassendaten aus der Ferne ausgewertet werden;
  • 27 den Zustand eines Benutzerarbeitseinheitsklassen-Objekts zeigt, wenn serialisierte Daten aus der Ferne ausgewertet werden;
  • 28 ein Flußdiagramm ist, das eine Fernauswertung zeigt;
  • 29 den Zustand eines Benutzerarbeitseinheitsklassen-Objekts zeigt, wenn verwiesene Klassendaten aus der Ferne ausgewertet werden;
  • 30 den Zustand eines Benutzerarbeitseinheitsklassen-Objekts zeigt, wenn überlappende Klassendaten aus der Ferne ausgewertet werden; und
  • 31 ein Flußdiagramm ist, das einen Klassen auslesenden oder wiedergewinnenden Prozess zeigt.
  • Beschreibung der bevorzugten Ausführungsformen
  • Die Ausführungsformen der vorliegenden Erfindung werden im folgenden durch Verweis auf die beigefügten Zeichnungen beschrieben.
  • 1 ist ein Blockdiagramm, das die funktionale Konfiguration des Informationsverarbeitungsgeräts gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • In 1 speichert eine Klassendaten-Speichereinheit 1 zu einem Objekt addierte Klassendaten. Eine Klassendaten-Überwachungs- oder Monitoreinheit 2 überwacht die Nutzung der in der Klassendaten-Speichereinheit 1 gespeicherten Klassendaten für jedes Stück addierter Klassendaten. Eine Klassendaten-Prozesseinheit 3 verarbeitet die Klassendaten für jedes Stück addierter Klassendaten basierend auf der Nutzung der Klassendaten, die durch die Klassendaten-Monitoreinheit 2 überwacht wird.
  • Mit der oben beschriebenen Konfiguration kann die Klassendaten-Monitoreinheit 2 ein Programm für jede Funktion überwachen, die zu dem Programm neu addiert wurde. Während das Programm läuft, kann bestimmt werden, welche Funktion des Programms gerade genutzt wird. Als Folge kann die Klassendaten-Prozesseinheit 3 die Funktion eines Teils des Programms während der Operation des Programms verarbeiten, indem nur die Funktion des Teils des Programms spezifiziert wird.
  • 2 ist ein Blockdiagramm, das ein Beispiel der Konfiguration der Klassendaten-Prozesseinheit 3 darstellt, die in 1 gezeigt ist.
  • In 2 empfängt eine Empfangseinheit 11 eine Löschungs-Anforderung, eine Ersatz-Anforderung etc. für die in der Klassendaten-Speichereinheit 1 gespeicherten Klassendaten. Eine Bestimmungseinheit 12 bestimmt basierend auf dem Überwachungsergebnis von der Klassendaten-Monitoreinheit 2, ob die durch die Löschungs-Anforderung, die Ersatz-Anforderung etc. spezifizierten Klassendaten gerade genutzt werden oder nicht. Eine Verzögerungseinheit 13 verzögert die Löschung, den Ersatz etc. der Klassendaten, bis die Nutzung der Klassendaten abgeschlossen wurde, falls die Klassendaten gerade genutzt werden.
  • Wenn eine Löschungs-Anforderung oder eine Ersatz-Anforderung für gerade verarbeitete Klassendaten ausgegeben wird, empfängt die Empfangseinheit 11 die Löschungs-Anforderung oder die Ersatz-Anforderung für die Klassendaten, ohne eine Verarbeitung der Klassendaten zu stoppen. Die Verzögerungseinheit 13 identifiziert, ob die Nutzung der zu löschenden oder zu ersetzenden Klassendaten abgeschlossen wurde oder nicht, indem auf das Bestimmungsergebnis von der Bestimmungseinheit 12 verwiesen wird, und führt einen Prozess aus, der durch eine Löschungs-Anforderung, eine Ersatz-Anforderung etc. spezifiziert ist, die von der Empfangseinheit 11 empfangen wurde, nachdem die Nutzung der zu löschenden oder zu ersetzenden Klassendaten abgeschlossen ist.
  • Nachdem die Ausführung der Funktion eines Teils eines durch eine Löschungs-Anforderung oder eine Ersatz-Anforderung spezifizierten Programms abgeschlossen ist, kann die Funktion des Teils des Programms gelöscht, durch eine andere Funktion ersetzt werden etc. Wenn die Funktion des Teils des Programms gelöscht, ersetzt etc. wird, ist es nicht erforderlich, das gerade ausgeführte Programm auszusetzen oder zu reaktivieren.
  • 3 ist ein Blockdiagramm, das die funktionale Konfiguration des Computers gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • In 3 ist eine Agent- oder Benutzerarbeitseinheitsklasse als eine Grundklasse einer Bibliothek einer Entwicklungssprache vorgesehen, und die Benutzerarbeitseinheitsklasse ist in einer Bibliothek 31 für Benutzerarbeitseinheitsklassen gespeichert. Wenn ein System entwickelt wird, beschreibt der Programmierer eine Anwendung, indem eine Teilklasse basierend auf einer Benutzerarbeitseinheitsklasse als eine Basisklasse erzeugt wird.
  • Eine Agent- oder Benutzerarbeitseinheitsklasse enthält eine Tabelle 23 für Klassenverwaltungsobjekte zum Speichern der Korrespondenz zwischen Klassenverwaltungsobjekten 24a bis 24m und den Namen der Klassenverwaltungs objekte 24a bis 24m; die Klassenverwaltungsobjekte 24a bis 24m zum Verwalten von Klassendaten, die zu Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n addiert werden, eine Tabelle 25 für gemeinsam genutzte Klassendaten zum Speichern der Klassendaten, die durch die Klassenverwaltungsobjekte 24a bis 24m verwaltet werden; und Schnittstellen 26 für öffentliche Fern-Verfahren zum Durchführen eines Prozesses auf Klassendaten.
  • Die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n werden in einem Computer 21 als Spezialfälle einer Benutzerarbeitseinheitsklasse erzeugt, die in der Bibliothek 31 für Benutzerarbeitseinheitsklassen gespeichert ist. Zum Beispiel werden die Namen Funktion-1 bis Funktion-m der Klassenverwaltungsobjekte 24a bis 24m in der Tabelle 23 für Klassenverwaltungsobjekte des Benutzerarbeitseinheitsklassen-Objekts 22a registriert. Gleichzeitig werden darin die Zeiger auf die Klassenverwaltungsobjekte 24a bis 24m gespeichert, die jeweils den Namen Funktion-1 bis Funktion-m entsprechen.
  • Zum Beispiel sind als die Schnittstelle 26 für öffentliche Fern-Verfahren für das Benutzerarbeitseinheitsklassen-Objekt 22a ein remove()-Verfahren 26a, ein add()-Verfahren 26b, ein get()-Verfahren 26c, ein set()-Verfahren 26d, ein eval()-Verfahren 26e und ein call()-Verfahren 26f vorgesehen.
  • Das remove()-Verfahren 26a löscht Klassendaten aus der Tabelle 25 für gemeinsam genutzte Klassendaten unter Verwendung der Namen der Klassenverwaltungsobjekte 24a bis 24m als Argumente, welche zu löschende Klassendaten verwalten.
  • Das add()-Verfahren 26b erzeugt neu die Klassenverwaltungsobjekte 24a bis 24m, welche zu addierende Klassendaten verwalten, wobei als Argumente die zu addierenden Klassendaten und die Namen der Klassenverwaltungsobjekte 24a bis 24m verwendet werden, welche die zu addierenden Klassendaten verwalten. Gleichzeitig registriert das add()-Verfahren die Namen der Klassenverwaltungsobjekte 24a bis 24m in der Tabelle 23 für Klassenverwaltungsobjekte und speichert die zu addierenden Klassendaten in der Tabelle 25 gemeinsam genutzter Klassendaten.
  • Das get()-Verfahren 26c kopiert Klassendaten aus der Tabelle 25 gemeinsam genutzter Klassendaten, wobei als Argumente die Namen der Klassenver waltungsobjekte 24a bis 24m verwendet werden, welche abzurufende Klassendaten verwalten.
  • Das set()-Verfahren ersetzt Klassendaten, die zu ersetzen sind, in der Tabelle 25 gemeinsam genutzter Klassendaten durch neue Klassendaten, wobei als Argumente neue ersetzende Klassendaten und die Namen der Klassenverwaltungsobjekte 24a bis 24m verwendet werden, welche die zu ersetzenden Klassendaten verwalten.
  • Das eval()-Verfahren 26e führt einen Fernprozess an Klassendaten oder dem Objekt der Klassendaten durch, wobei als Argumente zu verarbeitende Klassendaten und serialisierte Daten eines Objekts der Klassendaten verwendet werden.
  • Das call()-Verfahren 26f erzeugt ein Objekt aus in der Tabelle 25 gemeinsam genutzter Klassendaten gespeicherten Klassendaten, wobei als Argumente die Namen der Klassenverwaltungsobjekte 24a bis 24m verwendet werden, welche die zu verarbeitenden Klassendaten verwalten.
  • Der Computer 21 enthält eine Kommunikations-Hintergrundroutine 28; einen Netzwerksockel API (Application Programming Interface) 29; ein Betriebssystem 30; und eine Systemklassenbibliothek 32.
  • Wenn die Schnittstelle 26 für ein öffentliches Fern-Verfahren aufgerufen wird, werden Kommunikations-Threads 27a bis 27k zugewiesen, und es kann mehrere Ausführungsabläufe geben (z. B. Verfahren und Funktionen), die in einem Programm parallel durchgeführt werden, wobei ein Datenbereich unter ihnen gemeinsam genutzt wird. Die Mehrfach-Thread-Funktion ist eine Standardfunktion in der Sprache JAVA etc.
  • Die Datenübertragungen von Information unter den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n im Computer 21 und die Datenübertragungen von Informationen zwischen dem Computer 21 und einem anderen Computer werden über einen Netzwerksockel API eingerichtet.
  • Die Klassen-Ersatzfunktion und die Funktion zur Fern-Ausführung der Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n werden auf ein tatsächliches System wie z. B. eine Fernwartung von Software angewendet. Unter Verwendung dieser Klassenersatzfunktion und der Funktion zur Fern-Ausführung kann Software aus der Ferne ersetzt werden, ohne einen Server zu stoppen, und die se Funktionen können auf mehreren Servern in einem Batch-Prozess genutzt werden.
  • Wenn ein Programm mit nur einem Teil einer Server-Software ergänzt wird, ist es daher nicht notwendig, den Server zu stoppen und ihn dann zu reaktivieren, nachdem das Programm ergänzt ist. Besonders wenn ein verteiltes System genutzt wird, kann die Beanspruchung eines Administrators erheblich reduziert werden. Tatsächlich kann eine allgemeine Anwendung flexibel kundenspezifisch angepasst werden, indem eine Klasse erzeugt wird, die in den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n arbeitet.
  • Gemäß der in 3 gezeigten Ausführungsform ist somit, wenn mehrere Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n verknüpft sind und die aktiven Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n eine Additionsanforderung oder eine Löschungs-Anforderung für die Klassendaten empfangen, die ein Programmcode sind, der die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n bildet, die Tabelle 25 für gemeinsam genutzte Klassendaten in jedem der Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n vorgesehen, um Klassenverwaltungsobjekte 24a bis 24m jedesmal zu erzeugen, wenn eine Additionsanforderung ausgegeben wird.
  • Wenn die Klassenverwaltungsobjekte 24a bis 24m die Suche in der Tabelle 25 für gemeinsam genutzte Klassendaten und die Ausführung und die Löschung einer addierten Klassengruppe verwalten, kann die addierte Klassengruppe gemeinsam genutzt werden, und eine partielle Klassengruppe kann dynamisch gelöscht und aktualisiert werden.
  • Durch Ersetzen eines Programms oder Fern-Ausführen eines Teils eines Programms in einer Laufzeitumgebung kann überdies eine flexible Verkettung und ein dynamischer Lastausgleich in einem verteilten Netzwerkverwaltungssystem, einem verteilten Netzwerkservice, einer verteilten Gruppenware etc. realisiert werden.
  • Überdies kann ein Programmcode eines aktiven Server-Objekts während des Betriebs des Server-Objektes addiert und aktualisiert werden, und ein mit einem aktualisierten Service verbundenes Server-Objekt muß nicht komplett gestoppt werden. Als Folge kann ein Service für eine sehr oder erheblich kurze Zeit gestoppt werden.
  • Eine Benutzerarbeitseinheitsklasse verweist auf ein Objekt, das mit einer Funktion zum Überwachen von das Objekt bildenden Klassendaten versehen ist.
  • 4 zeigt ein Beispiel der Konfiguration des in 3 dargestellten Verwaltungsobjektes.
  • In 4 enthalten die Klassenverwaltungsobjekte 24a bis 24m eine Tabelle lokaler Klassendaten (lokale Klassen) 41; ein Löschungs-Flag (entfernbares Flag) 42; einen Speicherbereich für Ersatz-Klassendaten (nächste Klassen) 43; eine ID-Liste laufender Threads (laufende Threads) 44; eine Klassennamenliste (Klassennamen) 45; eine Referenzobjektliste (Verweisen) 46; eine Liste verwiesener Objekte (Verwiesen) 47; und eine Klassensuchfunktion 48 zum Wiedergewinnen von Klassendaten.
  • Die Tabelle 41 für lokale Klassendaten speichert Klassendaten, die während einer Fern-Ausführung des Programms empfangen werden. Das heißt, wenn die Klassendaten von irgendeinem von anderen Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n während der Fern-Ausführung übertragen werden, speichert die Tabelle 41 für lokale Klassendaten die Klassendaten unabhängig von den Klassendaten, die durch Klassenverwaltungsobjekte 24a bis 24m schon verwaltet werden, wodurch der Konflikt zwischen den übertragenen Klassendaten und den Klassendaten vermieden wird, die durch die Klassenverwaltungsobjekte 24a bis 24m schon verwaltet werden, wenn die Klassendaten aus der Ferne verarbeitet werden.
  • Das Löschungs-Flag 42 gibt an, ob eine Anforderung, zu der Tabelle 25 gemeinsam genutzter Klassendaten addierte Klassendaten zu löschen, ausgegeben wurde oder nicht. Die Anforderung, die Klassendaten zu löschen, kann akzeptiert werden, selbst wenn die durch die Löschungs-Anforderung spezifizierten Klassendaten gerade genutzt werden, indem die Anforderung, die Klassendaten zu löschen, im Löschungs-Flag 42 gespeichert wird.
  • Der Speicherbereich 43 für Ersatz-Klassendaten speichert vorübergehend neu ersetzende Klassendaten, wenn eine Anforderung, zur Tabelle 25 gemeinsam genutzter Klassendaten addierte Klassendaten zu ersetzen, ausgegeben wird. Die Anforderung, die Klassendaten zu ersetzen, kann akzeptiert werden, selbst wenn die durch die Anforderung, die Klassendaten zu ersetzen, spezifizierten Klassendaten gerade genutzt werden, indem die neuen Klassendaten in dem Speicherbereich 43 für Ersatz-Klassendaten bei der Ausgabe einer Ersatz-Anforderung gespeichert werden.
  • Die ID-Liste 44 laufender Threads speichert eine Thread-ID, die Klassendaten verarbeitet, die zu der Tabelle 25 gemeinsam genutzter Klassendaten addiert wurden. Sie kann bestimmt werden, indem die in der ID-Liste 44 laufender Threads gespeicherte Thread-ID gespeichert und auf die ID-Liste 44 laufender Threads verwiesen wird, ob die Klassendaten existieren oder nicht.
  • Die Klassennamenliste 45 speichert jeden Klassennamen von Klassendaten, die zu der Tabelle 25 gemeinsam genutzter Klassendaten addiert wurden. Die durch die Klassenverwaltungsobjekte 24a bis 24m verwalteten Klassendaten können geprüft werden, und ein Prozess kann für jedes Stück der Klassendaten durchgeführt werden, die durch die Klassenverwaltungsobjekte 24a bis 24m verwaltet werden.
  • Die Referenzobjektliste 46 zeigt, welches der Klassenverwaltungsobjekte 24a bis 24m die Klassendaten verwaltet, die durch die Klassendaten genutzt werden, die zu der Tabelle 24 gemeinsam genutzter Klassendaten addiert wurden. Die Referenzobjektliste 45 ermöglicht, daß ein Prozess auf den Klassendaten unter Berücksichtigung verwiesener Klassendaten durchgeführt wird.
  • Die Liste 47 verwiesener Objekte zeigt, welches der Klassenverwaltungsobjekte 24a bis 24m Klassendaten verwaltet, wobei andere Klassendaten gentzt werden, und ein Prozess kann an Klassendaten unter Berücksichtigung der verwiesenen Klassendaten durchgeführt werden.
  • 5 zeigt ein Beispiel der Konfiguration der Benutzerarbeitseinheitsklasse.
  • Eine Benutzerarbeitseinheitsklasse ist als eine Basisklasse 52 einer Klassenbibliothek 51 vorgesehen. Die Basisklasse 52 enthält eine Tabelle 53 für Klassenverwaltungsobjekte, ein Klassenverwaltungsobjekt 54, eine Tabelle 55 gemeinsam genutzter Klassendaten und eine Schnittstelle 56 für ein öffentliches Fern-Verfahren. Eine aus der Basisklasse 52 erzeugte Teilklasse 57 wird in der Klassenbibliothek 51 registriert, und die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n können aus der Teilklasse 57 als Spezialfälle (instances) 58a bis 58j erzeugt werden.
  • Ein Entwickler eines verteiltes Systems kann folglich die Funktion zum Ersetzen von Klassendaten in einer Laufzeitumgebung realisieren, indem die Teilklasse 57 einer Benutzerarbeitseinheitsklasse erzeugt und eine Anwendung ohne Spezialwissen über Klassenverwaltung beschrieben wird, und kann ein flexibles System unter Verwendung einer Funktion zur Fern-Ausführung erzeugen, indem Klassendaten von externen Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n übertragen werden.
  • 6 zeigt ein Verfahren zum Erzeugen eines Klassenverwaltungsobjekts, wenn Klassendaten addiert werden.
  • In 6 werden zum Beispiel, wenn Klassendaten A, Klassendaten B und Klassendaten C unter Verwendung des Namens 'Funktion-1' zu einem Benutzerarbeitseinheitsklassen-Objekt 301 addiert werden, sie in einer Tabelle 302 für gemeinsam genutzte Klassendaten gespeichert, und gleichzeitig wird ein Klassenverwaltungsobjekt 303 zum Verwalten der Klassendaten A, B und C erzeugt.
  • Die Klassennamen der Klassendaten A, B und C, die durch das Klassenverwaltungsobjekt 303 verwaltet werden, werden in dem Klassenverwaltungsobjekt 303 registriert, und die Funktion 'Funktion-1' wird als der Name des Klassenverwaltungsobjekts 303 in der Tabelle für Klassenveraltungsobjekte registriert.
  • Falls Klassendaten D und E als der Name 'Funktion-2' zum Benutzerarbeitseinheitsklassen-Objekt 301 addiert werden, nachdem die Klassendaten A, B und C zu dem Benutzerarbeitseinheitsklassen-Objekt 301 addiert sind, werden die Klassendaten D und E in der Tabelle 302 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 304 zum Verwalten der Klassendaten D und E wird neu erzeugt.
  • Die Klassennamen der Klassendaten D und E, die durch das Klassenverwaltungsobjekt 304 verwaltet werden, werden in dem Klassenverwaltungsobjekt 304 registriert, und 'Funktion-2' wird als der Name des Klassenverwaltungsobjekts 304 in der Tabelle für Klassenverwaltungsobjekte registriert.
  • Falls Klassendaten F, G und H als der Name 'Funktion-3' zum Benutzerarbeitseinheitsklassen-Objekt 301 addiert werden, nachdem die Klassendaten D und E zum Benutzerarbeitseinheitsklassen-Objekt 301 addiert sind, werden die Klassendaten F, G und H in der Tabelle 302 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 305 zum Verwalten der Klassendaten F, G und H wird neu erzeugt.
  • Die Klassennamen der Klassendaten F, G und H, die durch das Klassenverwaltungsobjekt 305 verwaltet werden, werden im Klassenverwaltungsobjekt 305 registriert, und 'Funktion-3' wird als der Name des Klassenverwaltungsobjekts 305 in der Tabelle für Klassenverwaltungsobjekte registriert.
  • So werden jedesmal, wenn eine durch Klassendaten gebildete Funktion zum Benutzerarbeitseinheitsklassen-Objekt 301 addiert wird, die Klassenverwaltungsobjekte 303 bis 305 erzeugt. Als Folge kann ein Programm für jede durch Klassendaten gebildete Funktion überwacht werden, und es kann bestimmt werden, welche Funktion des Programms während des Betriebs des Programms gerade verwendet wird. Daher kann die Funktion eines Teils des Programms während des Betriebs des Programms gelöscht oder ersetzt werden.
  • Falls die Namen 'Funktion-1' bis 'Funktion-3' der Klassenverwaltungsobjekte 303 bis 305 in der Tabelle für Klassenverwaltungsobjekte registriert werden, kann überdies der Programmierer die zu einem Programm addierte Funktion spezifizieren, indem die Namen 'Funktion-1' bis 'Funktion-3' der Klassenverwaltungsobjekte 303 bis 305 spezifiziert werden, wodurch die Bequemlichkeit beim kundenspezifischen Anpassen des Programms verbessert wird.
  • Im folgenden wird das Verfahren zum kundenspezifischen Anpassen der Anwendung gemäß einer Ausführungsform der vorliegenden Erfindung beschrieben.
  • 7 zeigt ein Beispiel eines Codierens einer Schablone (engl. template).
  • Es werde angenommen, daß in 7 beispielsweise die Anwendung zum Screenen oder Sichten einer Mitteilung über die Ankunft einer E-Mail in einem Schablonen-(Modell)-Format unter Verwendung einer Initialisierungsdatei geliefert wird. Die Schablone wird verwendet, um die Ankunftsmitteilung über die Nachricht oder Mail von einem bestimmten Sender zu screenen oder zu sichten. Auswählen 'Von' aus einem Pop-up-Menü 82 einer Feldspalte 83 eines Initialisierungsmenüs 81 und Eingeben des Namens des Senders über die Tastatur legen den Namen des Senders in einer Spalte 84 Inhalte fest.
  • Wenn auf der anderen Seite ein Schlüsselwort von einem Rumpf der E-Mail ausgelesen oder wiedergewonnen und gesichtet werden soll, kann es nur durch die Funktionen, die durch die in 7 dargestellte Schablone geliefert werden, nicht erfolgreich abgefragt werden. Daher wird extern ein Programmcode zum Durchsuchen des Textes der E-Mail nach einem Schlüsselwort erhalten. Der Programmcode für den Teil der Ankunftsmitteilung der E-Mail, die durch die in 7 gezeigte Schablone geliefert wird, wird dann durch den Programmcode zum Wiedergewinnen eines Schlüsselwortes des Textes der E-Mail ersetzt.
  • Wenn ein Programmcode ersetzt wird, überwachen die Klassenverwaltungsobjekte 24a bis 24m die Nutzung eines Programmcodes für einen Teil der Ankunftsmitteilung einer E-Mail. Dies ermöglicht, daß der Programmcode ersetzt wird, wenn der Programmcode für den Teil der Ankunftsmitteilung einer E-Mail nicht ausgeführt wird. Wenn die in 7 gezeigte Schablone kundenspezifisch angepasst wird, kann daher ein Teil der Funktion des Programms in dem in 7 gezeigten Schablonenformat ersetzt werden, ohne die Operation des Programms im in 7 gezeigten Schablonenformat zu stoppen.
  • Folglich wird ein kundenspezifisch anzupassendes Programm betrieben, und ein Programmcode, der für eine Anwendung erforderlich ist, die eingerichtet werden soll, kann für einen Ersatz wiedergewonnen werden, indem die Schablone codiert und der Programmcode für jede Funktion überwacht wird. Daher kann eine Anwendung ohne Beschränkungen von der aktuellen Schablone flexibel kundenspezifisch angepasst werden.
  • 8 zeigt ein Beispiel der Systemkonfiguration des in 3 dargestellten Computers.
  • In 8 sind eine CPU 61, ein RAM 62, ein ROM 63, eine Kommunikationsschnittstelle 64, ein Drucker 65, eine Anzeige 66, eine Tastatur 67, eine Maus 68 und ein Treiber 69 miteinander verbunden. Mit dem Treiber 69 sind zum Beispiel eine Festplatte 70, eine Diskette 71, ein Magnetband 72, eine optische Platte 73 wie z. B. eine CD-ROM, eine DVD-ROM etc. und eine IC-Speicherkarte 74 verbunden.
  • Eine Benutzerarbeitseinheitsklasse wird in dem ROM 63, der Festplatte 70, der Diskette 71, dem Magnetband 72, der optischen Bildplatte 73 wie z. B. einem CD-ROM, einem DVD-ROM etc., der IC-Speicherkarte 74 etc. gespeichert. Wenn die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n von der Benut zerarbeitseinheitsklasse aktiviert werden, werden die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n unter der Steuerung der CPU 61 erzeugt und in dem RAM 62 gespeichert. Die Operationen an den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n werden durchgeführt, indem die Sichtung im Schablonenformat, das auf der Anzeige 66 angezeigt wird, betrieben wird oder Daten über die Tastatur eingegeben werden.
  • Überdies kann ein Programm über die Kommunikationsschnittstelle 64 gesendet oder empfangen werden. Das mit der Kommunikationsschnittstelle 64 verbundene Kommunikationsnetzwerk kann z. B. ein LAN (Lokalbereichsnetz), ein WAN (weiträumiges Netz), das Internet, ein analoges Telefonnetz, ein digitales Telefonnetz (ISDN: Integrated Services Digital Network) und ein drahtloses Kommunikationsnetzwerk, das in einem PHS (Personal Handy System) genutzt wird, etc. sein.
  • 9 ist ein Flußdiagramm, das die Operationen der in 3 dargestellten Kommunikations-Hintergrundroutine 28 zeigt.
  • Wenn in 9 die Kommunikations-Hintergrundroutine 28 eine Nachricht von einem anderen Computer über den Netzwerksockel API 29 in einem Zustand empfängt, in dem sie auf eine Nachricht wartet (Schritt S1), werden die Namen BENUTZERARBEITSEINHEIT-1 oder AGENT-1 bis AGENT-n der Zielobjekte 22a bis 22n eine Benutzerarbeitseinheitsklasse, ein Verfahrensnamen und ein Argument von der Nachricht erhalten (Schritt S2), und die Kommunikations-Threads 27a bis 27k werden erzeugt (Schritt S3). Die vom anderen Computer erhaltenen Daten werden dann zu den Kommunikations-Threads 27a bis 27k durchgeleitet.
  • 10 ist ein Flußdiagramm, das die Operationen der in 3 dargestellten Kommunikations-Threads 27a bis 27k zeigt.
  • Wenn in 10 die Kommunikations-Threads 27a bis 27k von der Kommunikations-Hintergrundroutine 28 erzeugt werden (Schritt S11), werden die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n durch den Namen AGENT-1 bis AGENT-n der Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n spezifiziert, die durch die Kommunikations-Hintergrundroutine 28 spezifiziert werden (Schritt S12).
  • Als nächstes rufen die Kommunikations-Threads 27a bis 27k die Schnittstelle 26 für ein öffentliches Fern-Verfahren für die spezifizierten Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n, indem ein von der Kommunikations-Hintergrundroutine 28 übertragenes Argument eingestellt wird (Schritt S13), und erwarten einen Rückkehrwert von den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n (Schritt S14).
  • Bei Empfang eines Rückkehrwertes der Schnittstelle 26 für ein öffentliches Fern-Verfahren von den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n steuern die Kommunikations-Threads 27a bis 27k die Netzwerksockel-API 29, um eine den Rückkehrwert enthaltende Nachricht an ein Benutzerarbeitseinheitsklassen-Objekt eines anderen Computers zurückzuleiten, der die Schnittstelle 26 für öffentliches Fern-Verfahren ausgab (Schritt S15), und die Kommunikations-Threads 27a bis 27k zu löschen (Schritt S16).
  • Im folgenden wird das Verfahren zum Addieren von Klassendaten zu den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n beschrieben.
  • 11 zeigt den Zustand, in welchen Klassendaten zu einem Benutzerarbeitseinheitsklassen-Objekt addiert werden.
  • Wenn in 11 z. B. eine Funktion mit den Klassendaten A, B und C zu einem Benutzerarbeitseinheitsklassen-Objekt 101 unter Verwendung des Namens 'Funktion-1' addiert werden, werden die Klassendaten A, B und C in einer Tabelle 104 für gemeinsam genutzte Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 103 zum Verwalten der Klassendaten A, B und C wird erzeugt. Die 'Funktion-1' wird als der Name des Klassenverwaltungsobjekts 103 in einer Tabelle 102 für Klassenverwaltungsobjekte registriert. Entsprechend dem Namen 'Funktion-1' des Klassenverwaltungsobjekts 103 wird in der Tabelle 102 für Klassenverwaltungsobjekte ein Zeiger auf der Klassenverwaltungsobjekt 103 erzeugt.
  • Die Klassennamen A, B und C der jeweiligen Klassendaten A, B und C, die durch das Klassenverwaltungsobjekt 103 verwaltet werden, werden in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 103 registriert, und ein Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt. Die Tabelle für lokale Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (nächste Klassen), die ID-Liste laufender Threads (laufende Threads), die Referenzobjektliste (Verweisend) und die Liste verwiesener Objekte (Verwiesen) sind Null.
  • 12 zeigt den Zustand, in welchem Klassendaten mit einer Referenzbeziehung zu einem Benutzerarbeitseinheitsklassen-Objekt addiert werden.
  • In 12 wird z. B. die Funktion mit den Klassendaten A, B und C als der Name 'Funktion-1' zu einem Benutzerarbeitseinheitsklassen-Objekt 111 addiert. Die Klassendaten A, B und C werden in der Tabelle 115 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 113 zum Verwalten der Klassendaten A, B und C wird erzeugt.
  • Die Klassennamen A, B und C der jeweiligen Klassendaten A, B und C, die durch das Klassenverwaltungsobjekt 113 verwaltet werden, werden in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 113 registriert, und ein Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt. Die Tabelle für lokale Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (nächste Klassen), die ID-Liste laufender Threads (laufende Threads) und die Referenzobjektliste (Verweisend) sind Null.
  • Die 'Funktion-1' wird als der Name des Klassenverwaltungsobjekts 113 in einer Tabelle 112 für Klassenverwaltungsobjekte registriert. Entsprechend dem Namen 'Funktion-1' des Klassenverwaltungsobjekts 113 wird in der Tabelle 112 für Klassenverwaltungsobjekte ein Zeiger auf das Klassenverwaltungsobjekt 113 erzeugt.
  • Wenn eine Funktion mit den Klassendaten F und G in diesem Zustand zu einem Benutzerarbeitseinheitsklassen-Objekt 111 addiert wird, das den Namen 'Funktion-3' nutzt, werden die Klassendaten F und G zu einer Tabelle 115 gemeinsam genutzter Klassendaten addiert.
  • Anschließend wird ein Klassenverwaltungsobjekt 114 zum Verwalten der Klassendaten F und G neu erzeugt. Die 'Funktion-3' wird als der Name des Klassenverwaltungsobjekts 114 in einer Tabelle 112 für Klassenverwaltungsobjekte registriert. Entsprechend dem Namen 'Funktion-3' des Klassenverwaltungsobjekts 114 wird in der Tabelle 112 für Klassenverwaltungsobjekte ein Zeiger auf das Klassenverwaltungsobjekt 114 neu erzeugt.
  • Die Klassennamen F und G der jeweiligen Klassendaten F und G, die durch das Klassenverwaltungsobjekt 114 verwaltet werden, werden in der Klassenna menliste (Klassennamen) des Klassenverwaltungsobjekts 114 registriert, und ein Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt. Die Tabelle lokaler Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (nächste Klassen), die ID-Liste laufender Threads (laufende Threads) und die Liste verwiesener Objekte (Verwiesen) sind Null.
  • Man nehme an, daß die Klassendaten F auf der Existenz der Klassendaten A, die zu der Tabelle 115 gemeinsam genutzter Klassendaten schon addiert wurden, wie folgt basieren:
  • Figure 00260001
  • Die Referenzobjektliste (Verweisend) des Klassenverwaltungsobjekts 114 speichert die Referenzinformation über das Klassenverwaltungsobjekt 113 zum Verwalten der verwiesenen Klassendaten A, und die Liste verwiesener Objekte (Verwiesen) des Klassenverwaltungsobjekts 113 speichert die verwiesene Information über das Klassenverwaltungsobjekt 114, das die verweisenden Klassendaten F verwaltet.
  • Selbst wenn das remove()-Verfahren 26a und das set()-Verfahren 26d unter Verwendung des Namens 'Funktion-1' als Argument aufgerufen werden und eine Löschungs-Anforderung und eine Ersatz-Anforderung für eine Funktion mit den Klassendaten A, B und C an das Objekt 111 einer Benutzerarbeitseinheitsklasse ausgegeben werden, kann das Klassenverwaltungsobjekt 113 die Löschungs-Anforderung und die Ersatz-Anforderung für die Funktion mit den Klassendaten A, B und C halten, indem die Liste verwiesener Objekte geprüft wird. Die Funktion der Klassendaten F, die auf die Klassendaten A verweisen, kann somit gegen Schäden geschützt werden.
  • 13 zeigt das Verfahren zum Zurückweisen einer doppelten Registrierung von Klassendaten in den Benutzerarbeitseinheitklassen-Objekten 22a bis 22n.
  • In 13 wird z. B. eine Funktion mit den Klassendaten A, B und C zu einem Benutzerarbeitseinheitsklassen-Objekt 121 unter Verwendung des Namens 'Funktion-1' addiert, werden die Klassendaten A, B und C in einer Tabelle 124 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 123 zum Verwalten der Klassendaten A, B und C wird erzeugt.
  • Die Klassennamen A, B und C der jeweiligen Klassendaten A, B und C, die durch das Klassenverwaltungsobjekt 123 verwaltet werden, werden in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 123 registriert, und ein Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt. Die Tabelle lokaler Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (nächste Klassen), die ID-Liste laufender Threads (laufende Threads), die Referenzobjektliste (verweisend) und die Liste verwiesener Objekte (verwiesen) sind Null.
  • Die 'Funktion-1' wird als der Name des Klassenverwaltungsobjekts 123 in einer Tabelle 122 für Klassenverwaltungsobjekte registriert. Entsprechend dem Namen 'Funktion-1' des Klassenverwaltungsobjekts 123 wird in der Tabelle 122 für Klassenverwaltungsobjekte ein Zeiger auf das Klassenverwaltungsobjekt 123 erzeugt.
  • Wenn in diesem Zustand ein add()-Verfahren 125 des Benutzerarbeitseinheitsklassen-Objekts 121 unter Verwendung des Namens 'Funktion-6', der Klassendaten D, E und A als Argumente aufgerufen wird, werden die Klassendaten D in einer Tabelle 124 gemeinsam genutzter Klassendaten neu gespeichert nach einem Bestätigen, daß die Klassendaten D in der Tabelle 124 gemeinsam genutzter Klassendaten des Benutzerarbeitseinheitsklassen-Objekts 121 nicht gespeichert sind.
  • Nach einem Bestätigen, daß die Klassendaten E in der Tabelle 124 gemeinsam genutzter Klassendaten nicht gespeichert sind, werden als nächstes die Klassendaten E in der Tabelle 124 gemeinsam genutzter Klassendaten gespeichert.
  • Wenn die Klassendaten A in der Tabelle 124 gemeinsam genutzter Klassendaten gespeichert werden, werden die Klassendaten D und E aus der Tabelle 124 gemeinsam genutzter Klassendaten gelöscht, weil die Klassendaten A schon in der Tabelle 124 gemeinsam genutzter Klassendaten gespeichert wurden. Die Klassendaten D, E und A mit dem Namen 'Funktion-6' werden in der Tabelle 124 gemeinsam genutzter Klassendaten nicht gespeichert.
  • Wenn das Benutzerarbeitseinheitsklassen-Objekts 121 eine Anforderung empfängt, mehrere Stücke von Klassendaten gleichzeitig zu addieren oder zu ersetzen, wird die Tabelle 124 gemeinsam genutzter Klassendaten in ihrem ursprünglichen Zustand wiederhergestellt, indem alle Klassendaten gelöscht werden, die in der Tabelle 124 gemeinsam genutzter Klassendaten addiert werden sollen, falls ein Konflikt zwischen einem Teil der zu addierenden Klassennamen und den im Benutzerarbeitseinheitsklassen-Objekt 121 existierenden Klassennamen während des Klassendaten addierenden Prozesses entsteht.
  • 14 zeigt ein Flußdiagramm, das den Klassendaten addierenden Prozess darstellt.
  • Wenn die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n Klassendaten addieren, wird das add()-Verfahren aufgerufen.
  • Zunächst werden in 14 Zugriffsprivilegien auf die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n geprüft (Schritt S21). Falls es keine Zugriffsprivilegien gibt, wird der Prozess suspendiert.
  • Anschließend werden die Namen 'Funktion-1' bis 'Funktion-m', die zugewiesen werden, wenn die Klassendaten addiert werden, und die zu addierenden Klassendaten aus dem Argument des Verfahrens 26b erhalten (Schritt S22), und die Namen 'Funktion-1' bis 'Funktion-m', die zugewiesen werden, wenn die Klassendaten addiert werden, werden aus der Tabelle 23 für Klassenverwaltungsobjekte abgerufen oder wiedergewonnen (Schritt S23).
  • Als nächstes wird geprüft, ob die Namen 'Funktion-1' bis 'Funktion-m', die zugewiesen werden, wenn die Klassendaten addiert werden, in der Tabelle 23 für Klassenverwaltungsobjekte existieren oder nicht (Schritt S24). Falls die Namen 'Funktion-1' bis 'Funktion-m', die zugewiesen werden, wenn die Klassendaten addiert werden, in der Tabelle 23 für Klassenverwaltungsobjekte existieren, wird eine Fehlermitteilung ausgegeben, und der Prozess wird suspendiert (Schritt S25).
  • Falls auf der anderen Seite die Namen 'Funktion-1' bis 'Funktion-m', die zugewiesen werden, wenn die Klassendaten addiert werden, in der Tabelle 23 für Klassenverwaltungsobjekte nicht existieren, werden die durch die Additionsanforderung spezifizierten Klassendaten in die Tabelle 25 gemeinsam genutzter Klassendaten geschrieben (Schritt S26).
  • Danach wird bestimmt, ob der gleiche Klassenname in der Tabelle 25 gemeinsam genutzter Klassendaten existiert oder nicht (Schritt S27). Falls detektiert wird, während die Klassendaten gerade geschrieben werden, daß der gleiche Klassenname in der Tabelle 25 gemeinsam genutzter Klassendaten existiert, werden dann die Klassendaten, die in der Tabelle 25 gemeinsam genutzter Klassendaten bei der Additionsanforderung gespeichert wurden, gelöscht, wird die Tabelle 25 gemeinsam genutzter Klassendaten in ihrem ursprünglichen Zustand wiederhergestellt (Schritt S28), wird eine Fehlermitteilung ausgegeben, und der Prozess endet (Schritt S29).
  • Falls auf der anderen Seite alle bei einer Additionsanforderung spezifizierten Klassendaten erfolgreich addiert worden sind, weil der Klassenname in der Tabelle 25 gemeinsam genutzter Klassendaten nicht existiert, wenn die Klassendaten geschrieben werden, werden dann die Klassenverwaltungsobjekte 24a bis 24m neu erzeugt. Die Namen 'Funktion-1' bis 'Funktion-m', die zugewiesen werden, wenn die Klassendaten, die durch das Argument des add()-Verfahrens festgelegt werden, werden in der Tabelle 23 für Klassenverwaltungsobjekte registriert, so daß die neu erzeugten Klassenverwaltungsobjekte 24a bis 24m durch die Namen 'Funktion-1' bis 'Funktion-m', die in der Tabelle 23 für Klassenverwaltungsobjekte registriert sind, identifiziert werden können (Schritt S30).
  • Die Klassennamen aller zu der Tabelle 25 gemeinsam genutzter Klassendaten addierten Klassendaten werden dann in der Klassennamenliste 45 der neu erzeugten Klassenverwaltungsobjekte 24a bis 24m festgelegt (Schritt S31).
  • Als nächstes wird die auf die zur Tabelle 25 gemeinsam genutzter Klassendaten addierten Klassendaten bezogene Klasse geprüft, wird eine Zielinformation in der Referenzobjektliste 46 der neu erzeugten Klassenverwaltungsob jekte 24a bis 24m festgelegt (Schritt S32), und eine Quelleninformation wird in der Liste 47 verwiesener Objekte der verwiesenen Klassenverwaltungsobjekte 24a bis 24m festgelegt (Schritt S33), dadurch den Prozess beendend.
  • Im folgenden wird das Verfahren zum Steuern von Zugriffsprivilegien gemäß einer Ausführungsform der vorliegenden Erfindung beschrieben.
  • Man nehme an, daß der Prozess zum Prüfen von Zugriffsprivilegien beim Ersatz einer Klasse durch den Namen zum Beispiel "CheckSet" reserviert wird, und die folgende Klasse wird zu den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n durch den Namen "CheckSet" addiert.
  • Figure 00300001
  • Bevor die Klassendaten registriert werden, werden Zugriffssteuerbedingungen unter Verwendung des anfordernden Nutzernamens, des Host-Namens und der Namen 'AGENT-1' bis 'AGENT-n' der Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n etc. geprüft, um zu bestimmen, ob die Anforderung, die Klassendaten zu verarbeiten, akzeptabel ist oder nicht. Das heißt, falls die arbeitenden Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n eine Löschungs-Anforderung oder eine Ersatz-Anforderung für die Klassendaten akzeptieren, wird aus der 'CheckSet' genannten Klasse zur Ausführung ein Objekt erzeugt.
  • In diesem Fall wird, außer der Name der Benutzerarbeitseinheit, die eine Anforderung zum Ersatz von Klassendaten ausgegeben hat, paßt mit 'Admin' zusammen, der ersetzende Prozess nicht durchgeführt, sondern eine Ausnahme (engl. exception) tritt auf. Da die die Zugriffssteuerbedingungen beschreibende Klasse in der gleichen Weise wie andere Klassen in den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n verarbeitet werden, können die Zustandssteuerbedingungen, die effektiv sind, angefügt oder ergänzt werden. Das heißt, die Zugriffssteuerbedingungen werden als ersetzbare Klassendaten in den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n verwaltet, und die Zugriffssteuerbedingungen auf den arbeitenden Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n können ergänzt werden.
  • Selbst wenn ein Programm von einem entfernten Computer addiert oder aktualisiert wird, wird somit die Schnittstelle beim Addieren und Aktualisieren eines Programmcodes gesichert, wodurch die Beanspruchung des Administrators zur Wartung und Verwaltung verteilter Objekte reduziert wird.
  • 15 ist ein Flußdiagramm, das den Zugriffsprivilegien prüfenden Prozess zeigt.
  • Der Zugriffsprivilegien prüfende Prozess wird durch einen Prozess zum Addieren von Klassendaten zu den Benutzerarbeitseinheitsklasse-Objekten 22a bis 22n, dargestellt in 13; einen Prozess zum Erhalten der Klassendaten, dargestellt in 16; einen Prozess, der an den Klassendaten durchgeführt wird, dargestellt in 19; einen Prozess zum Löschen von Klassendaten, dargestellt in 21; einen Prozess zum Ersetzen von Klassendaten, dargestellt in 24 und 25; und einen Klassendaten-Fernprozess aufgerufen, dargestellt in 28.
  • Wenn in 15 eine Prüfung von Zugriffsprivilegien gestartet wird (Schritt S41), wird aus der Tabelle 15 gemeinsam genutzter Klassendaten die Klasse der Zugriffsprivilegienprüfung ausgelesen oder wiedergewonnen, die die Zugriffssteuerbedingungen beschreibt (Schritt S42). Es wird dann geprüft, ob die Klasse zum Prüfen von Zugriffsprivilegien in der Tabelle 25 gemeinsam genutzter Klassendaten existiert oder nicht (Schritt S43). Falls die Klasse in der Tabelle 25 gemeinsam genutzter Klassendaten existiert, wird aus der Klasse der Zugriffsprivilegienprüfung zur Ausführung ein Objekt erzeugt (Schritt S44).
  • Die Klasse der Zugriffsprivilegienprüfung verweist auf ein Programm, das Regeln beschreibt, gemäß dem Typ und Argument eines Prozesses, den Namen AGENT-1 bis AGENT-n der Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n, dem Prozess, der Nutzernamen anfordert, etc. und kann durch eine andere Klasse der Prüfung von Zugriffsprivilegien während der Operationen der Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n wie mit anderen Klassendaten ersetzt werden, die zu den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n addiert werden.
  • Danach können Zugriffssteuerbedingungen für jedes der Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n ergänzt werden, wodurch die Sicherheit der Schnittstelle bei Addieren und Aktualisieren eines Programmcodes verbessert wird.
  • Falls auf der anderen Seite die Klasse der Prüfung von Zugriffsprivilegien in der Tabelle 25 gemeinsam genutzter Klassendaten nicht existiert, werden die Zugriffsprivilegien unter den Standardbedingungen geprüft (Schritt S45).
  • Es wird dann bestimmt, ob Zugriffsprivilegien existieren oder nicht (Schritt S46). Falls keine Zugriffsprivilegien existieren, wird eine Fehlermitteilung ausgegeben (Schritt S47), und der Prozess endet (Schritt S47). Falls Zugriffsprivilegien existieren, akzeptieren die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n den angeforderten Prozess (Schritt S48).
  • Im folgenden wird das Verfahren zum Erhalten der Klassendaten aus den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n beschrieben.
  • 16 ist ein Flußdiagramm, das den Prozess zum Erhalten von Klassendaten zeigt.
  • Wenn die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n einen Prozess zum Erhalten von Klassendaten durchführen, wird das get()-Verfahren aufgerufen.
  • In 16 werden Zugriffsprivilegien zuerst an den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n geprüft (Schritt S51). Falls keine Privilegien existieren, endet der Prozess.
  • Als nächstes werden die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu verarbeitenden Klassendaten aus dem Argument des get()-Verfahrens erhalten (Schritt S52), und die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu verarbeitenden Klassendaten werden aus der Tabelle 23 für Klassenverwaltungsobjekte abgefragt (Schritt S53).
  • Es wird dann geprüft, ob die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu verarbeitenden Klassendaten in der Tabelle 23 für Klassenverwaltungsobjekte registriert sind oder nicht (Schritt S54). Falls die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu verarbeitenden Klassendaten in der Tabelle 23 für Klassenverwaltungsobjekte nicht registriert sind, wird eine Fehlermitteilung ausgegeben, und der Prozess wird suspendiert (Schritt S55).
  • Falls die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu verarbeitenden Klassendaten in der Tabelle 23 für Klassenverwaltungsobjekte registriert sind, werden dann die Klassennamen aus der Klassennamenliste 45 der Klassenverwaltungsobjekte 24a bis 24m erhalten, werden die Klassendaten des Klassennamens von der Tabelle 25 gemeinsam genutzter Klassendaten kopiert (Schritt S56), und die Klassendaten werden als ein Rückkehrwert an den Abfrager oder Requester zurückgegeben (Schritt S57).
  • Im folgenden wird das Verfahren zum Verarbeiten von Klassendaten in den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n beschrieben.
  • 17 zeigt den Zustand eines Benutzerarbeitseinheitsklassen-Objekts, wenn die Klassendaten verarbeitet werden.
  • In 17 wird zum Beispiel die Funktion mit den Klassendaten A, B und C als der Name 'Funktion-1' zu einem Benutzerarbeitseinheitsklassen-Objekt 131 addiert. Die Klassendaten A, B und C werden in der Tabelle 135 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 133 zum Verwalten der Klassendaten A, B und C wird erzeugt.
  • Die Klassennamen A, B und C der jeweiligen Klassendaten A, B und C, die durch das Klassenverwaltungsobjekt 133 verwaltet werden, werden in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 133 registriert, und ein Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt. Die Tabelle lokaler Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (nächste Klassen), die Referenzobjektliste (verweisend) und die Liste verwiesener Objekte (verwiesen) sind Null.
  • Die Funktion 'Funktion-1' wird als der Name des Klassenverwaltungsobjekts 133 in einer Tabelle 132 für Klassenverwaltungsobjekte registriert. Entsprechend dem Namen 'Funktion-1' des Klassenverwaltungsobjekts 133 wird in der Tabelle 132 für Klassenverwaltungsobjekte ein Zeiger auf das Klassenverwaltungsobjekt 133 erzeugt.
  • Wenn eine Anforderung, die Klassendaten A, B und C zu verarbeiten, an das Benutzerarbeitseinheitsklassen-Objekt 131 ausgegeben wird, indem der Name 'Funktion-1' spezifiziert wird, werden die Objekte A, B und C aus den Klassendaten A, B und C erzeugt, und ein Thread 134 wird zugewiesen.
  • Die ID-Liste laufender Threads (laufende Threads) speichert eine Identifizierungsinformation über den Thread 134, der den Objekten A, B und C zugewiesen ist. Wenn die Objekte A, B und C verarbeitet worden sind, wird die Identifizierungsinformation über den den Objekten A, B und C zugewiesenen Thread 134 aus der ID-Liste laufender Threads (laufende Threads) gelöscht.
  • Daher kann das Klassenverwaltungsobjekt 133 einfach bestimmen, ob die Klassendaten A, B und C, die durch das Klassenverwaltungsobjekt 133 verwaltet werden, gerade genutzt werden oder nicht, indem auf die ID-Liste laufender Threads Bezug genommen wird (laufende Threads).
  • 18 zeigt den Zustand eines Objektes einer Benutzerarbeitseinheitsklasse, dessen Klassendaten mit einer Referenzbeziehung gerade verarbeitet werden.
  • In 18 wird zum Beispiel die Funktion der Klassendaten A, B und C als der Name 'Funktion-1' zu einem Objekt 141 einer Benutzerarbeitseinheitsklasse addiert. Die Klassendaten A, B und C werden in einer Tabelle 147 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 143 zum Verwalten der Klassendaten A, B und C wird erzeugt.
  • Die Klassennamen A, B und C der jeweiligen Klassendaten A, B und C, die durch das Klassenverwaltungsobjekt 143 verwaltet werden, werden in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 143 registriert, und ein Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt. Die Tabelle lokaler Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (nächste Klassen) und die Referenzobjektliste (verweisend) sind Null.
  • Die 'Funktion-1' wird als der Name des Klassenverwaltungsobjekts 143 in einer Tabelle 142 für Klassenverwaltungsobjekte registriert. Entsprechend dem Namen 'Funktion-1' des Klassenverwaltungsobjekts 143 wird in der Tabelle 142 für Klassenverwaltungsobjekte ein Zeiger auf das Klassenverwaltungsobjekt 143 erzeugt.
  • Die Funktion mit den Klassendaten D wird als der Name 'Funktion-4' zu einem Benutzerarbeitseinheitsklassen-Objekt 141 addiert. Die Klassendaten D werden in einer Tabelle 147 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 145 zum Verwalten der Klassendaten D wird erzeugt.
  • Der Klassenname D der durch das Klassenverwaltungsobjekt 145 verwalteten Klassendaten D wird in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 145 registriert, und ein Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt. Die Tabelle lokaler Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (nächste Klassen) und die Liste verwiesener Objekte (verwiesen) sind Null.
  • Die 'Funktion-4' wird als der Name des Klassenverwaltungsobjekts 145 in einer Tabelle 142 für Klassenverwaltungsobjekte registriert. Entsprechend dem Namen 'Funktion-4' des Klassenverwaltungsobjekts 145 wird ein Zeiger auf das Klassenverwaltungsobjekt 145 in der Tabelle 142 für Klassenverwaltungsobjekte erzeugt.
  • Man nehme an, daß die Klassendaten D zum Beispiel wie folgt auf der Existenz der Klassendaten A und B basieren.
  • Figure 00350001
  • Die Referenzobjektliste (verweisend) des Klassenverwaltungsobjekts 145 speichert die Referenzinformation über das Klassenverwaltungsobjekt 143 zum Verwalten der verwiesenen Klassendaten A und B, und die Liste verwiesener Objekte (verwiesen) des Klassenverwaltungsobjekts 143 speichert die verwiesene Information über das Klassenverwaltungsobjekt 145, das die verweisenden Klassendaten D verwaltet.
  • Wenn eine Anforderung, die Klassendaten D zu verarbeiten, in diesem Zustand an das Benutzerarbeitseinheitsklassen-Objekt 141 durch Spezifizieren des Namens 'Funktion-4' ausgegeben wird, wird das Objekt D aus den Klassendaten D erzeugt, und ein Thread 144 wird zugewiesen.
  • Die ID-Liste laufender Threads (laufende Threads) des Klassenverwaltungsobjekts 145 speichert die Identifizierungsinformation des Thread 144, der dem Objekt D zugewiesen wurde, und die ID-Liste laufender Threads (laufende Threads) des Klassenverwaltungsobjekts 143 zum Verwalten von Klassendaten A und B, auf die durch die Klasse D verwiesen wurde, speichert ebenfalls die Identifizierungsinformation des dem Objekt D zugewiesenen Thread 144.
  • Wenn die Ausführung des Objekts D abgeschlossen ist, wird die Identifizierungsinformation über den dem Objekt D zugewiesenen Thread 144 aus der ID-Liste laufender Threads (laufende Threads) des Klassenverwaltungsobjekts 143 und des Klassenverwaltungsobjekts 145 gelöscht.
  • Selbst wenn eine Anforderung, die 'Funktion-1' genannte Funktion zu löschen oder zu addieren, während der Ausführung der 'Funktion-4' genannten Funktion an das Benutzerarbeitseinheitsklassen-Objekt 141 ausgegeben wird, kann daher das Klassenverwaltungsobjekt 143 die Anforderung, die 'Funktion-1' genannte Funktion zu löschen oder zu addieren, halten, indem sie ihre eigene ID-Liste laufender Threads (laufende Threads) prüft, wodurch verhindert wird, daß die Ausführung der 'Funktion-4' genannten Funktion während der Ausführung der 'Funktion-4' genannten Funktion zurückgewiesen wird.
  • 19 ist ein Flußdiagramm, das den an Klassendaten durchgeführten Prozess zeigt.
  • Wenn die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n einen Prozess auf den Klassendaten durchführen, wird das call()-Verfahren aufgerufen.
  • In 19 werden zuerst Zugriffsprivilegien auf die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n geprüft (Schritt S61). Falls keine Zugriffsprivilegien existieren, endet der Prozess.
  • Als nächstes werden die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu verarbeitenden Klassendaten aus dem Argument des call()-erfahrens erhalten (Schritt S62), und die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu verarbeitenden Klassendaten werden aus der Tabelle 23 für Klassenverwaltungsobjekte wiedergewonnen (Schritt S63).
  • Dann wird geprüft, ob die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu verarbeitenden Klassendaten in der Tabelle 23 für Klassenverwaltungsobjekte registriert sind oder nicht (Schritt S64). Falls die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu verarbeitenden Klassendaten in der Tabelle 23 für Klassenverwaltungsobjekte nicht registriert sind, wird eine Fehlermitteilung ausgegeben, und der Prozess wird suspendiert (Schritt S65).
  • Falls die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu verarbeitenden Klassendaten in der Tabelle 23 für Klassenverwaltungsobjekte registriert sind, wird dann die ID des laufenden Thread zu der ID-Liste 44 laufender Threads der Klassenverwaltungsobjekte 24a bis 24m addiert, und die ID eines laufenden Thread wird zur ID-Liste 44 laufender Threads der Klassenverwaltungsobjekte 24a bis 24m addiert, die in der Referenzobjektliste 46 der Klassenverwaltungsobjekte 24a bis 24m dargestellt sind (Schritt S66).
  • Dann wird ein Objekt aus den zu verarbeitenden Klassendaten erzeugt (Schritt S67), und das Ende des Prozesses wird abgewartet (Schritt S68). Wenn der Prozess endet, wird die ID des laufenden Thread aus der ID-Liste 44 laufender Threads der Klassenverwaltungsobjekte 24a bis 24m gelöscht, und die ID des laufenden Thread wird aus der ID-Liste 44 laufender Threads der Klassenverwaltungsobjekte 24a bis 24m gelöscht, die in der Referenzobjektliste 46 der Klassenverwaltungsobjekte 24a bis 24m dargestellt sind (Schritt S69).
  • Es wird geprüft, ob die ID-Liste laufender Threads leer ist oder nicht (Schritt S70). Falls die ID-Liste 44 laufender Threads nicht leer ist, endet der Ausführungsprozess (Schritt S71). Wenn die ID-Liste 44 laufender Threads leer ist, wird geprüft, ob das Löschungs-Flag WAHR ist oder nicht (Schritt S72). Falls das Löschungs-Flag 42 WAHR ist, wird dann der Löschungsprozess reserviert, und der in 21 dargestellte Löschungsprozess wird aufgerufen (Schritt S73), und der Ausführungsprozess endet (Schritt S74).
  • Falls das Löschungs-Flag 42 FALSCH ist, wird geprüft, ob der Speicherbereich 43 für Ersatz-Klassendaten leer ist oder nicht (Schritt S75). Falls der Speicherbereich 43 für Ersatz-Klassendaten leer ist, endet der Ausführungsprozess (Schritt S76). Falls der Speicherbereich 43 für Ersatz-Klassendaten nicht leer ist, wird der ersetzende Prozess reserviert, und der in 24 und 25 dargestellte ersetzende Prozess wird unter Verwendung, als Argument, der im Speicherbereich 43 für Ersatz-Klassendaten gespeicherten Klassendaten aufgerufen (Schritt S77), wodurch der Ausführungsprozess endet.
  • Wenn die arbeitenden Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n eine Anforderung, Klassendaten zu löschen oder zu ersetzen, akzeptieren, überwachen die Klassenverwaltungsobjekte 24a bis 24m die Nutzung aller Klassendaten. Als Folge kann die Löschung oder der Ersatz der Klassendaten verzögert werden, bis die zu löschenden oder zu ersetzenden Klassendaten nicht verfügbar werden, wodurch die Anforderung zur Löschung oder zum Ersatz von Klassendaten ohne Stoppen der arbeitenden Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n erfolgreich verarbeitet wird.
  • Wenn eine Anforderung zur Löschung oder zum Ersatz von Klassendaten an die arbeitenden Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n ausgegeben wird, kann eine Stopp-Anforderung an ein Objekt ausgegeben werden, das die zu löschenden oder zu ersetzenden Klassendaten gerade nutzt, so daß die Klassendaten nach der Antwort vom Objekt gelöscht werden können.
  • Im folgenden wird das Verfahren zum Löschen von Klassendaten aus den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n beschrieben.
  • 20 zeigt den Zustand eines Benutzerarbeitseinheitsklassen-Objekts, wenn eine Löschungs-Anforderung ausgegeben wird, wenn die Klassendaten verarbeitet werden.
  • In 20 wird zum Beispiel die Funktion mit den Klassendaten A, B und C als der Name 'Funktion-1' zu einem Benutzerarbeitseinheitsklassen-Objekt 151 addiert. Die Klassendaten A, B und C werden in einer Tabelle 155 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 153 zum Verwalten der Klassendaten A, B und C wird erzeugt.
  • Die Klassennamen A, B und C der jeweiligen Klassendaten A, B und C, die durch das Klassenverwaltungsobjekt 153 verwaltet werden, werden in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 153 registriert. Die Tabelle lokaler Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (nächste Klassen), die Referenzobjektliste (verweisend) und die Liste verwiesener Objekte (verwiesen) sind Null.
  • Die 'Funktion-1' wird als der Name des Klassenverwaltungsobjekts 153 in einer Tabelle 152 für Klassenverwaltungsobjekte registriert. Entsprechend dem Namen 'Funktion-1' des Klassenverwaltungsobjekts 153 wird in der Tabelle 152 für Klassenverwaltungsobjekte ein Zeiger auf das Klassenverwaltungsobjekt 153 erzeugt.
  • Wenn die 'Funktion-1' genannte Funktion ausgeführt wird, werden ferner die Objekte A, B und C aus den Klassendaten A, B und C erzeugt und einem Thread 154 zugewiesen. Gleichzeitig speichert die ID-Liste laufender Threads (laufende Threads) eine Identifizierungsinformation über den den Objekten A, B und C zugewiesenen Thread 154.
  • Wenn der Name 'Funktion-1' spezifiziert ist und eine Löschungs-Anforderung für die Klassendaten A, B und C ausgegeben wird, verweist in diesem Zustand das Klassenverwaltungsobjekt 153 auf eine ID-Liste laufender Threads (laufende Threads) und bestätigt die Nutzung der Klassendaten A, B und C.
  • Da eine ID-Liste laufender Threads (laufende Threads) in diesem Fall die Identifizierungsinformation über den Thread 154 enthält, wird erkannt, daß die Klassendaten A, B und C gerade verwendet werden, wird eine Löschungs-Anforderung für die Klassendaten A, B und C gehalten, wird ein Löschungs-Flag (entfernbares Flag) auf WAHR gesetzt, und die Löschungs-Anforderung für die Klassendaten A, B und C wird gespeichert.
  • Wenn die 'Funktion-1' genannte Funktion vollständig ausgeführt ist, wird die Identifizierungsinformation über den Thread 154 aus der ID-Liste laufender Threads (laufende Threads) gelöscht, und das Klassenverwaltungsobjekt 153 bestätigt, ob eine Löschungs-Anforderung für die Klassendaten A, B und C ausgegeben wurde oder nicht, indem auf den Zustand des Löschungs-Flag verwiesen wird (entfernbares Flag).
  • Da das Löschungs-Flag (entfernbares Flag) WAHR ist, werden zu dieser Zeit die Klassendaten A, B und C erfolgreich gelöscht.
  • Wenn eine starke Löschungs-Anforderung ausgegeben wird, wird die 'Funktion-1' genannte Funktion, die gerade ausgeführt wird, suspendiert, um die Klassendaten A, B und C sofort zu löschen.
  • 21 ist ein Flußdiagramm, das einen Klassendaten löschenden Prozess zeigt.
  • Wenn die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n Klassendaten löschen, wird das remove()-Verfahren 26a aufgerufen.
  • In 21 werden zuerst Zugriffsprivilegien zuerst auf die Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n geprüft (Schritt S81). Falls keine Zugriffsprivilegien existieren, endet das Programm.
  • Als nächstes werden die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu löschenden Klassendaten aus dem Argument des remove()-Verfahrens 26a erhalten (Schritt S82), und die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu löschenden Klassendaten werden aus der Tabelle 23 für Klassenverwaltungsobjekte wiedergewonnen (Schritt S83).
  • Dann wird geprüft, ob die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu löschenden Klassendaten in der Tabelle 23 für Klassenverwaltungsobjekte registriert sind oder nicht (Schritt S84). Falls die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu löschenden Klassendaten in der Tabelle 23 für Klassenverwaltungsobjekte nicht registriert sind, wird eine Fehlermitteilung ausgegeben, und der Prozess wird suspendiert (Schritt S85).
  • Falls die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu löschenden Klassendaten in der Tabelle 23 für Klassenverwaltungsobjekte registriert sind, wird geprüft, ob die ID-Liste 44 laufender Threads leer ist oder nicht (Schritt S86). Falls die ID-Liste 44 laufender Threads nicht leer ist, wird das Löschungs-Flag 42 der Klassenverwaltungsobjekte 24a bis 24m auf WAHR gesetzt (Schritt S87), dadurch den Löschungsprozess beendend (Schritt S88).
  • Falls die ID-Liste 44 laufender Threads leer ist, wird geprüft, ob die Liste 47 verwiesener Objekte ebenfalls leer ist oder nicht (Schritt S89). Falls die Liste 47 verwiesener Objekte nicht leer ist, wird eine Fehlermitteilung ausgegeben, und ein Löschungsprozess wird suspendiert (Schritt S90).
  • Falls die Liste 47 verwiesener Objekte leer ist, wird geprüft, ob die Referenzobjektliste 46 ebenfalls leer ist oder nicht (Schritt S91). Falls die Referenzobjektliste 46 nicht leer ist, wird dann die verwiesene Information über die Klassenverwaltungsobjekte 24a bis 24m aus der Liste 47 verwiesener Objekte jedes der Klassenverwaltungsobjekte 24a bis 24m gelöscht, die in der Referenzobjektliste 46 dargestellt sind (Schritt S92).
  • Falls auf der anderen Seite die Referenzobjektliste 46 leer ist, spezifizieren die Klassenverwaltungsobjekte 24a bis 24m die Klassendaten, die aus der Tabelle 25 gemeinsam genutzter Klassendaten gelöscht werden sollen, indem auf die Klassennamenliste 45 verwiesen wird, und löschen die Klassendaten mit dem Klassennamen, der in der Klassennamenliste 45 der Klassenverwaltungsobjekte 24a bis 24m registriert ist, aus der Tabelle gemeinsam genutzter Klassendaten (Schritt S93).
  • Die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m werden dann aus der Tabelle 23 für Klassenverwaltungsobjekte gelöscht, und der Löschprozess endet.
  • Im folgenden wird das Verfahren zum Ersetzen der Klassendaten der Benutzerarbeitseinheitsklassen-Objekte 22a bis 22m beschrieben.
  • 22 zeigt den Zustand des Objekts einer Benutzerarbeitseinheitsklasse, wenn eine Ersatz-Anforderung ausgegeben wird, wenn die Klassendaten verarbeitet werden. In diesem Beispiel wird die 'Funktion-1' genannte Funktion mit den Klassendaten A, B und C durch die 'Funktion-2' genannte Funktion mit den Klassendaten D und E ersetzt.
  • In 22 wird z. B. die Funktion mit den Klassendaten A, B und C als der Name 'Funktion-1' einem Benutzerarbeitseinheitsklassen-Objekt 161 hinzugefügt. Die Klassendaten A, B und C werden in der Tabelle 165 gemeinsam ge nutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 163 zum Verwalten der Klassendaten A, B und C wird erzeugt.
  • Die Klassennamen A, B und C der jeweiligen Klassendaten A, B und C, die durch das Klassenverwaltungsobjekt 163 verwaltet werden, werden in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 163 registriert, und der Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt. Die Tabelle lokaler Klassendaten (lokale Klassen), die Referenzobjektliste (verweisend) und die Liste verwiesener Objekte (verwiesen) sind Null.
  • Die Funktion 'Funktion-1' wird als der Name des Klassenverwaltungsobjekts 163 in einer Tabelle 162 für Klassenverwaltungsobjekte registriert. Entsprechend dem Namen 'Funktion-1' des Klassenverwaltungsobjekts 163 wird ein Zeiger auf das Klassenverwaltungsobjekt 163 in der Tabelle 162 für Klassenverwaltungsobjekte erzeugt.
  • Wenn die 'Funktion-1' genannte Funktion ausgeführt wird, werden überdies die Objekte A, B und C aus den Klassendaten A, B und C erzeugt und einem Thread 164 zugewiesen. Gleichzeitig speichert die ID-Liste laufender Threads (laufende Threads) eine Identifizierungsinformation über den den Objekten A, B und C zugewiesenen Thread 164.
  • Wenn der Name 'Funktion-1' spezifiziert und eine Ersatz-Anforderung für die Klassendaten A, B und C ausgegeben wird, verweist in diesem Zustand das Klassenverwaltungsobjekt 163 auf eine ID-Liste laufender Threads (laufende Threads) und bestätigt die Nutzung der Klassendaten A, B und C.
  • Da eine ID-Liste laufender Threads (laufende Threads) eine Identifizierungsinformation über den Thread 164 enthält, wird in diesem Fall erkannt, daß die Klassendaten A, B und C gerade verwendet werden, wird die Ersatz-Anforderung für die Klassendaten A, B und C gehalten, und die Klassendaten D und E, um die Klassendaten A, B und C zu ersetzen, werden im Speicherbereich für Ersatz-Klassendaten (nächste Klassen) gespeichert.
  • Wenn die 'Funktion-1' genannte Funktion vollständig ausgeführt ist, wird die Identifizierungsinformation über den Thread 164 aus der ID-Liste laufender Threads (laufende Threads) gelöscht, und das Klassenverwaltungsobjekt 163 bestätigt, ob eine Ersatz-Anforderung für die Klassendaten A, B und C ausgege ben wurde oder nicht, indem auf den Zustand des Speicherbereichs für Ersatz-Klassendaten (nächste Klassen) verwiesen wird.
  • Da der Speicherbereich für Ersatz-Klassendaten (nächste Klassen) die Klassendaten D und E speichert, werden in diesem Beispiel die Klassendaten A, B und C durch die Klassendaten D und E erfolgreich ersetzt.
  • Wenn eine starke Ersatz-Anforderung ausgegeben wird, wird die 'Funktion-1' genannte Funktion, die gerade ausgeführt wird, suspendiert, um die Klassendaten A, B und C sofort zu ersetzen.
  • 23 zeigt den Zustand des Benutzerarbeitseinheitsklassen-Objekts nach dem Ersatz der Klassendaten.
  • Wenn in 23 die Klassendaten A, B und C durch die Klassendaten D und E ersetzt sind, werden die Klassendaten D und E aus dem Speicherbereich für Ersatz-Klassendaten (nächste Klassen) des in 22 gezeigten Klassenverwaltungsobjekts gelöscht, und die Klassennamen A, B und C der Klassendaten A, B und C, die in der in 22 gezeigten Klassennamenliste (Klassennamen) registriert sind, werden durch die Klassennamen D und E der Klassendaten D und E ersetzt. Somit wird das in 22 gezeigte Klassenverwaltungsobjekt 163 zu einem Klassenverwaltungsobjekt 173 aktualisiert.
  • Die in der in 22 gezeigten Tabelle 165 gemeinsam genutzter Klassendaten gespeicherten Klassendaten A, B und C werden durch die Klassendaten D und E ersetzt, und die in 22 gezeigte Tabelle 165 gemeinsam genutzter Klassendaten wird in eine in 23 gezeigte Tabelle 174 gemeinsam genutzter Klassendaten aktualisiert.
  • Der Name 'Funktion-1' der Klassendaten A, B und C, die in der in 22 gezeigten Tabelle 162 für Klassenverwaltungsobjekte registriert sind, wird durch den Namen 'Funktion-2' der Klassendaten D und E ersetzt, und die in 22 gezeigte Tabelle 162 für Klassenverwaltungsobjekte wird in eine in 23 gezeigte Tabelle 172 für Klassenverwaltungsobjekte aktualisiert.
  • 24 und 25 sind Flußdiagramme, die den Klassendaten ersetzenden Prozess darstellen.
  • Wenn die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n den Klassendaten löschenden Prozess ausführen, wird das set()-Verfahren aufgerufen.
  • In 24 werden zunächst Zugriffsprivilegien auf die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n geprüft (Schritt S101). Falls keine Zugriffsprivilegien existieren, endet der Prozess.
  • Als nächstes werden die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu ersetzenden Klassendaten und neuer ersetzender Klassendaten aus dem Argument des set()-Verfahrens 24d erhalten (Schritt S102), und die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu ersetzenden Klassendaten werden aus der Tabelle 23 für Klassenverwaltungsobjekte wiedergewonnen (Schritt S103).
  • Dann wird geprüft, ob die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu ersetzenden Klassendaten in der Tabelle 23 für Klassenverwaltungsobjekte registriert sind oder nicht (Schritt S104). Falls die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu ersetzenden Klassendaten in der Tabelle 23 für Klassenverwaltungsobjekte nicht registriert sind, wird eine Fehlermitteilung ausgegeben, und der Prozess wird suspendiert (Schritt S105).
  • Falls die Namen 'Funktion-1' bis 'Funktion-m' der Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu ersetzenden Klassendaten in der Tabelle 23 für Klassenverwaltungsobjekte registriert sind, wird geprüft, ob die ID-Liste 44 laufender Threads leer ist oder nicht (Schritt S106). Falls die ID-Liste 44 laufender Threads nicht leer ist, werden die aus dem Argument des set()-Verfahrens erhaltenen Klassendaten im Speicherbereich 43 für Ersatz-Klassendaten gespeichert (Schritt S107), dadurch den ersetzenden Prozess beendend (Schritt S108).
  • Falls die ID-Liste 44 laufender Threads leer ist, wird geprüft, ob die Liste 47 verwiesener Objekte ebenfalls leer ist oder nicht (Schritt S109). Falls die Liste 47 verwiesener Objekte nicht leer ist, wird eine Fehlermitteilung ausgegeben, und ein löschender Prozess wird suspendiert (Schritt S110).
  • Falls die Liste 47 verwiesener Objekte leer ist, wird geprüft, ob die Referenzobjektliste 46 ebenfalls leer ist oder nicht (Schritt S111). Falls die Referenzobjektliste 46 nicht leer ist, wird dann die verwiesene Information über die Klassenverwaltungsobjekte 24a bis 24m aus der Liste 47 verwiesener Objekte jedes der Klassenverwaltungsobjekte 24a bis 24m gelöscht, die in der Referenzobjektliste 46 dargestellt sind (Schritt S112).
  • Falls auf der anderen Seite die Referenzobjektliste 46 leer ist, spezifizieren die Klassenverwaltungsobjekte 24a bis 24m die aus der Tabelle 25 gemeinsam genutzter Klassendaten zu löschenden Klassendaten durch Verweisen auf die Klassennamenliste 45 und löschen die Klassendaten mit dem Klassennamen, der in der Klassennamenliste 45 der Klassenverwaltungsobjekte 24a bis 24m registriert ist, aus der Tabelle gemeinsam genutzter Klassendaten (Schritt S113).
  • Wie in 25 gezeigt ist, werden durch die Ersatz-Anforderung spezifizierte neue Klassendaten in die Tabelle 25 gemeinsam genutzter Klassendaten geschrieben (Schritt S114).
  • Dann wird bestimmt, ob der gleiche Klassennamen in der Tabelle 25 gemeinsam genutzter Klassendaten existiert oder nicht (Schritt S115). Falls der gleiche Klassenname in der Tabelle 25 gemeinsam genutzter Klassendaten existiert, während die Klassendaten gerade geschrieben werden, werden die in der Tabelle 25 gemeinsam genutzter Klassendaten neu gespeicherten Klassendaten gelöscht, und die Tabelle 25 gemeinsam genutzter Klassendaten wird in ihrem ursprünglichen Zustand wiederhergestellt (Schritt S116), eine Fehlermitteilung ausgegeben wird, und der Prozess endet (Schritt S117).
  • Falls der gleiche Klassenname in der Tabelle 25 gemeinsam genutzter Klassendaten nicht existiert, werden dann die Klassennamen aller Klassendaten, die der Tabelle 25 gemeinsam genutzter Klassendaten neu hinzugefügt wurden, in der Klassennamenliste 45 der Klassenverwaltungsobjekte 24a bis 24m festgelegt (Schritt S118).
  • Durch Prüfen der Klasse, die auf die zur Tabelle 25 gemeinsam genutzter Klassendaten addierten Klassendaten bezogen ist, wird dann eine Zielinformation in der Referenzobjektliste 46 der Klassenverwaltungsobjekte 24a bis 24m festgelegt (Schritt S119), und eine Quelleninformation wird in der Liste 47 verwiesener Objekte der Klassenverwaltungsobjekte 24a bis 24m festgelegt (Schritt S120), dadurch den Prozess beendend.
  • Im folgenden wird das Verfahren zum Fern-Verarbeiten von Klassendaten in den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n beschrieben.
  • 26 zeigt den Zustand des Benutzerarbeitseinheitsklassen-Objekts, wenn die Klassendaten aus der Ferne ausgewertet werden.
  • In 26 wird zum Beispiel die Funktion mit den Klassendaten A, B und C als der Name 'Funktion-1' einem Benutzerarbeitseinheitsklassen-Objekt 181 hinzugefügt. Die Klassendaten A, B und C werden in einer Tabelle 185 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 183 zum Verwalten der Klassendaten A, B und C wird erzeugt.
  • Die Klassennamen A, B und C der jeweiligen Klassendaten A, B und C, die durch das Klassenverwaltungsobjekt 183 verwaltet werden, werden in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 183 registriert, und ein Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt. Die Tabelle lokaler Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (neue Klassen), die ID-Liste laufender Threads (laufende Threads), die Referenzobjektliste (verweisend) und die Liste verwiesener Objekte (verwiesen) sind Null.
  • Die 'Funktion-1' wird als der Name des Klassenverwaltungsobjekts 183 in einer Tabelle 182 für Klassenverwaltungsobjekte registriert, und ein Zeiger auf ein Klassenverwaltungsobjekt 183 wird in dem Klassenverwaltungsobjekt 183 entsprechend dem Namen 'Funktion-1' der Tabelle 182 für Klassenverwaltungsobjekte erzeugt.
  • Wenn ein eval()-Verfahren 186 für das Objekt 183 einer Benutzerarbeitseinheitsklasse unter Verwendung der Klassendaten D, E und A als Argumente aufgerufen wird, wird ein Klassenverwaltungsobjekt 184 neu erzeugt. Die Klassendaten D, E und A werden in der lokalen Klassentabelle (lokale Klassen) des Klassenverwaltungsobjekts 184 gespeichert. Die Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 184 speichert die Klassennamen D, E und A der Klassendaten D, E bzw. A.
  • Das Löschungs-Flag (entfernbares Flag) des Klassenverwaltungsobjekts 184 wird auf FALSCH gesetzt, und der Speicherbereich für Ersatz-Klassendaten (nächste Klassen), die ID-Liste laufender Threads (laufende Threads), die Refe renzobjektliste (verweisend) und die Liste verwiesener Objekte (verwiesen) sind Null.
  • Falls die Funktion der Klassendaten D, E und A zu dem Benutzerarbeitseinheitsklassen-Objekt 181 addiert wird, werden somit die Klassendaten D, E und A in der Tabelle lokaler Klassendaten (lokale Klassen) des Klassenverwaltungsobjekts 184 gespeichert. Selbst wenn die Klassendaten A in der Tabelle 185 gemeinsam genutzter Klassendaten registriert sind, kann daher der Konflikt des gleichen Klassennamens A in der Tabelle 185 gemeinsam genutzter Klassendaten vermieden werden, und die Funktion der Klassendaten D, E und A kann ausgeführt werden.
  • Das Verfahren zum Speichern der Klassendaten D, E und A in der Tabelle lokaler Klassendaten (lokale Klassen) des Klassenverwaltungsobjekts 184 ist effektiv, wenn die Häufigkeit oder Frequenz der Verwendung der Funktion mit den Klassendaten D, E und A niedrig ist oder wenn die Klassendaten, die verarbeitet werden sollen, häufig ergänzt werden können.
  • 27 zeigt den Zustand des Benutzerarbeitseinheitsklassen-Objekts, wenn serialisierte Daten aus der Ferner ausgewertet werden.
  • In 27 werden die Klassendaten D in einer Tabelle 192 gemeinsam genutzter Klassendaten eines Benutzerarbeitseinheitsklassen-Objekts 191 gespeichert und als ein Objekt einer Klasse String und ein Objekt einer Klasse Integer als Attribute aufweisend definiert. Ein Spezialfall 193 der Klassendaten D wird in dem Benutzerarbeitseinheitsklassen-Objekt 191 erzeugt.
  • Wenn das Benutzerarbeitseinheitsklassen-Objekt 191 ein eval()-Verfahren 195 eines Benutzerarbeitseinheitsklassen-Objekts 194 unter Verwendung der Klassendaten D und des Spezialfalls 193 der Klassendaten D als Argumente verwendend aufruft, serialisiert das Benutzerarbeitseinheitsklassen-Objekt 191 den Spezialfall 193 der Klassendaten D.
  • Die Klassendaten D und die serialisierten Daten des Spezialfalls 193 werden dann als Argumente des eval()-Verfahrens 195 festgelegt und übertragen 'D' {Strings; Integer i;}, 'D', String, '19:50AM', Integer, '19:50AM'.
  • Wenn das eval()-Verfahren 195 aufgerufen wird, erzeugt das Benutzerarbeitseinheitsklassen-Objekt 194 ein Klassenverwaltungsobjekt 196 und speichert die Inhalte {Strings; Integer i;} der Klassendaten in der Tabelle lokaler Klassendaten (lokale Klassen) des Klassenverwaltungsobjekts 196 und speichert den Klassennamen D der Klassendaten D in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 196.
  • Das Löschungs-Flag (entfernbares Flag) des Klassenverwaltungsobjekts 196 wird auf FALSCH gesetzt, und der Speicherbereich für Ersatz-Klassendaten nächste Klassen), die ID-Liste laufender Threads (laufende Threads), die Referenzobjektliste (verweisend) und die Liste verwiesener Objekte (verwiesen) sind Null.
  • Basierend auf den Klassendaten und den serialisierten Daten des Spezialfalls 193 wird überdies ein Spezialfall 197 erzeugt, der durch Wiederherstellen des Spezialfalls 193 des Benutzerarbeitseinheitsklassen-Objekts 191 erhalten wird, und die Klassendaten D und der Spezialfall 197 werden verarbeitet.
  • Wenn das Benutzerarbeitseinheitsklassen-Objekt 194 von einem anderen Benutzerarbeitseinheitsklassen-Objekt 191 die Klassendaten und serialisierten Daten eines Objekts empfängt, das aus den Klassendaten erzeugt wurde, erzeugt das Benutzerarbeitseinheitsklassen-Objekt 194 somit kein neues Objekt aus den empfangenen Klassendaten, sondern das Quellenobjekt wird aus den empfangenen Klassendaten und den serialisierten Daten wiederhergestellt; dadurch kann in einem Fern-Ausführprozess der Spezialfall 193 des anderen Benutzerarbeitseinheitsklassen-Objekts 191 verarbeitet werden.
  • 28 ist ein Flußdiagramm, das einen Prozess zur Fernauswertung zeigt.
  • Wenn die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n den Klassendaten-Fernprozess ausführen, wird das eval()-Verfahren aufgerufen.
  • In 28 werden zuerst Zugriffsprivilegien auf die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n geprüft (Schritt S130). Falls keine Privilegien existieren, endet der Prozess.
  • Als nächstes werden die Klassendaten und die serialisierten Objektdaten aus dem Objekt des eval()-Verfahrens erhalten (Schritt S131), um die Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der Klassendaten neu zu erzeugen und die Klassendaten des Arguments in der Tabelle 41 lokaler Klassendaten der Klassenverwaltungsobjekte 24a bis 24m einzustellen (Schritt S132).
  • Durch Prüfen der Klasse, die auf die zu der Tabelle 41 lokaler Klassendaten addierten Klassendaten bezogen ist, wird dann die Zielinformation in der Referenzobjektliste 46 der Klassenverwaltungsobjekte 24a bis 24m festgelegt (Schritt S133), und die Quelleninformation wird in der Liste 47 verwiesener Objekte der verwiesenen Klassenverwaltungsobjekte 24a bis 24m festgelegt (Schritt S134).
  • Eine ID eines laufenden Thread wird zu der ID-Liste 44 laufender Threads der Klassenverwaltungsobjekte 24a bis 24m addiert, und die ID eines laufenden Thread wird zu der ID-Liste 44 laufender Threads der Klassenverwaltungsobjekte 24a bis 24m addiert, die in der Referenzobjektliste 46 der Klassenverwaltungsobjekte 24a bis 24m dargestellt sind (Schritt S135).
  • Es wird dann geprüft, ob serialisierte Objektdaten in dem Argument des eval()-Verfahrens existieren oder nicht (Schritt S136). Falls in dem Argument des eval()-Verfahrens keine serialisierten Objektdaten existieren, wird dann ein Objekt aus den zu verarbeitenden Klassendaten erzeugt, und das Objekt wird verarbeitet (Schritt S137), und das Ende des Prozesses an dem Objekt wird abgewartet (Schritt S139).
  • Falls in dem Argument des eval()-Verfahrens serialisierte Objektdaten existieren, wird dann das Objekt unter Verwendung der serialisierten Objektdaten und der Klassendaten in der Tabelle 41 lokaler Klassendaten wiederhergestellt, und das Objekt wird verarbeitet (Schritt S138).
  • Wenn der Prozess abgeschlossen wird, wird dann die ID eines laufenden Thread aus der ID-Liste 44 laufender Threads der Klassenverwaltungsobjekte 24a bis 24m gelöscht, und die ID eines laufenden Thread wird aus der ID-Liste 44 laufender Threads der Klassenverwaltungsobjekte 24a bis 24m gelöscht, die in der Referenzobjektliste 46 der Klassenverwaltungsobjekte 24a bis 24m dargestellt sind (Schritt S140).
  • Die verwiesene Information über die Klassenverwaltungsobjekte 24a bis 24m wird dann aus der Liste 47 verwiesener Objekte von jedem der Klassenverwaltungsobjekte 24a bis 24m gelöscht, die in der Referenzobjektliste 46 dargestellt sind (Schritt S141), und die Klassenverwaltungsobjekte 24a bis 24m zum Verwalten der zu löschenden Klassendaten werden gelöscht (Schritt S142).
  • 29 zeigt den Zustand des Benutzerarbeitseinheitsklassen-Objekts, wenn Klassendaten mit einer Referenz- oder Verweisbeziehung aus der Ferne verarbeitet werden.
  • In 29 wird zum Beispiel die Funktion mit den Klassendaten A, B und C als der Name 'Funktion-1' zu einem Benutzerarbeitseinheitsklassen-Objekt 201 addiert. Die Klassendaten A, B und C werden in einer Tabelle 206 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 203 zum Verwalten der Klassendaten A, B und C wird erzeugt.
  • Die Klassennamen A, B und C der jeweiligen Klassendaten A, B und C, die durch das Klassenverwaltungsobjekt 203 verwaltet werden, werden in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 203 registriert. Das Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt, und die Tabelle lokaler Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (nächste Klassen), die ID-Liste laufender Threads (laufende Threads) und die Referenzobjektliste (verweisend) sind Null.
  • Die 'Funktion-1' wird als der Name des Klassenverwaltungsobjekts 203 in einer Tabelle 202 für Klassenverwaltungsobjekte registriert. Entsprechend dem Namen 'Funktion-1' des Klassenverwaltungsobjekts 203 wird in der Tabelle 202 für Klassenverwaltungsobjekte ein Zeiger auf das Klassenverwaltungsobjekt 203 erzeugt.
  • Ferner wird eine Funktion, die 'Funktion-4' genannt wird und die Klassendaten D aufweist, zu dem Benutzerarbeitseinheitsklassen-Objekt 201 addiert. Die Klassendaten D werden in der Tabelle 206 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 204 zum Verwalten der Klassendaten D wird erzeugt.
  • Der Klassenname D der Klassendaten D, die durch das Klassenverwaltungsobjekt 204 verwaltet werden, werden in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 204 registriert. Das Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt, und die Tabelle lokaler Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (nächste Klassen), die ID-Liste laufender Threads (laufende Threads) und die Liste verwiesener Objekte (verwiesen) sind Null.
  • Die 'Funktion-4' wird als der Name des Klassenverwaltungsobjekts 204 in einer Tabelle 202 für Klassenverwaltungsobjekte registriert. Entsprechend dem Namen 'Funktion-4' des Klassenverwaltungsobjekts 204 wird in der Tabelle 202 für Klassenverwaltungsobjekte ein Zeiger auf das Klassenverwaltungsobjekt 204 erzeugt.
  • Man nehme an, daß die Klassendaten D wie folgt auf z. B. der Existenz der Klassendaten A und B basieren.
  • Figure 00510001
  • Die Referenzobjektliste (verweisend) des Klassenverwaltungsobjekts 204 speichert die Referenzinformation über das Klassenverwaltungsobjekt 203 zum Verwalten der verwiesenen Klassendaten A und B, und die Liste verwiesener Objekte (verwiesen) des Klassenverwaltungsobjekts 203 speichert die verwiesene Information über das Klassenverwaltungsobjekt 204, das die verweisenden Klassendaten D verwaltet.
  • Die Beziehung beim Aufrufen einer Klasse kann z. B. in der Sprache JAVA unter Verwendung von getDeclarClasses (), was ein Klassen-Verfahren ist, geprüft werden.
  • Wenn das Benutzerarbeitseinheitsklassen-Objekt 201 eine Anforderung, die Klassendaten D mit dem spezifizierten Namen 'Funktion-4' aus der Ferne zu verarbeiten, ausgibt, wird in diesem Zustand ein Thread 205 erzeugt, werden die Klassendaten zusammen mit den Klassendaten A, B und C übertragen, die durch das Klassenverwaltungsobjekt 203 verwaltet werden, das in der Referenzobjektliste (verweisend) des Klassenverwaltungsobjekts 204 dargestellt ist.
  • Die Klassendaten A, B und C, die durch Klassenverwaltungsobjekt 203 verwaltet werden, und die durch das Klassenverwaltungsobjekt 204 verwalteten Klassendaten werden in der Tabelle 206 gemeinsam genutzter Klassendaten des Benutzerarbeitseinheitsklassen-Objekts 201 gespeichert und durch das glei che Benutzerarbeitseinheitsklassen-Objekt 201 verwaltet. Daher können die Klassendaten A und B, auf die durch die Klassendaten d verwiesen wird, einfach erhalten werden.
  • Die Beziehung beim Aufrufen einer aus der Ferne zu verarbeitenden Klasse und einer anderen Klasse, die erforderlich ist, wenn die Klassen verarbeitet werden, wird somit vor dem Transfer der Klassendaten geprüft. Wenn die aus der Ferne zu verarbeitenden Klassendaten übertragen werden, werden die anderen Klassendaten, die beim Verarbeiten der Klassendaten erforderlich sind, zusammen übertragen. Als Folge kann die Last des Prozesses am Ziel reduziert werden, besonders wenn Klassendaten als z. B. in einem verteilten System etc. verteilt gespeichert sind.
  • 30 zeigt den Zustand des Benutzerarbeitseinheitsklassen-Objekts, wenn überlappende Klassendaten aus der Ferne ausgewertet werden.
  • In 30 wird z. B. eine Funktion, die als 'Funktion-5' bezeichnet wird und die Klassendaten A, D und E umfaßt, zu dem Benutzerarbeitseinheitsklassen-Objekt 211 addiert. Die Klassendaten A, D und E werden in der Tabelle 214 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 213 zum Verwalten der Klassendaten A, D und E wird erzeugt.
  • Die Klassennamen A, D und E der jeweiligen Klassendaten A, D und E, die durch das Klassenverwaltungsobjekt 213 verwaltet werden, werden in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 213 registriert. Das Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt, und die Tabelle lokaler Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (nächste Klassen), die ID-Liste laufender Threads (laufende Threads), die Referenzobjektliste (verweisend) und die Liste verwiesener Objekte (verwiesen) sind Null.
  • Die 'Funktion-5' wird als der Name des Klassenverwaltungsobjekts 213 in einer Tabelle 212 für Klassenverwaltungsobjekte registriert. Entsprechend dem Namen 'Funktion-5' des Klassenverwaltungsobjekts 213 wird in der Tabelle 212 für Klassenverwaltungsobjekte ein Zeiger auf das Klassenverwaltungsobjekt 213 erzeugt.
  • Überdies wird eine Funktion, die 'Funktion-1' genannt wird und die Klassendaten A, B und C umfaßt, zum Objekt 215 einer Benutzerarbeitseinheitsklas se addiert. Die Klassendaten A, B und C werden in der Tabelle 218 gemeinsam genutzter Klassendaten gespeichert, und ein Klassenverwaltungsobjekt 217 zum Verwalten der Klassendaten A, B und C wird erzeugt.
  • Die Klassennamen A, B und C der jeweiligen Klassendaten A, B und C, die durch das Klassenverwaltungsobjekt 217 verwaltet werden, werden in der Klassennamenliste (Klassennamen) des Klassenverwaltungsobjekts 217 registriert. Das Löschungs-Flag (entfernbares Flag) wird auf FALSCH gesetzt, und die Tabelle lokaler Klassendaten (lokale Klassen), der Speicherbereich für Ersatz-Klassendaten (nächste Klassen), die ID-Liste laufender Threads (laufende Threads), die Referenzobjektliste (verweisend) und die Liste verwiesener Objekte (verwiesen) sind Null.
  • Der Name 'Funktion-1' wird als der Name des Klassenverwaltungsobjekts 217 in einer Tabelle 216 für Klassenverwaltungsobjekte registriert. Der Zeiger auf das Klassenverwaltungsobjekt 217 wird in der Tabelle 216 für Klassenverwaltungsobjekte entsprechend dem Namen 'Funktion-1' des Klassenverwaltungsobjekts 217 erzeugt.
  • Wenn das Benutzerarbeitseinheitsklassen-Objekt 211 die 'Funktion-5' genannte Funktion durch Benutzerarbeitseinheitsklassen-Objekt 215 aus der Ferne ausführt, wird abgefragt, ob die Klassen D, E und A, die die 'Funktion-5' genannte Funktion bilden, in der Tabelle 218 gemeinsam genutzter Klassendaten des Benutzerarbeitseinheitsklassen-Objekts 215 existieren oder nicht.
  • Das Benutzerarbeitseinheitsklassen-Objekt 215 prüft, ob die Klassendaten D, E und A in der Tabelle gemeinsam genutzter Klassendaten existieren oder nicht. Unter den Klassendaten D, E und A wird erkannt, daß die Klassendaten A in der Tabelle 218 gemeinsam genutzter Klassendaten existieren. Die Information über die Existenz der Klassendaten A wird dann an das Benutzerarbeitseinheitsklassen-Objekt 211 zurückgegeben.
  • Wenn das Benutzerarbeitseinheitsklassen-Objekt 211 über die Existenz der Klassendaten A informiert wird, transferiert es von den Klassendaten D, E und A, die zum Benutzerarbeitseinheitsklassen-Objekt 215 übertragen werden sollen, nur die Klassendaten D und E zum Benutzerarbeitseinheitsklassen-Objekt 215.
  • Das Benutzerarbeitseinheitsklassen-Objekt 215 nutzt die vom Benutzerarbeitseinheitsklassen-Objekt 211 übertragenen Klassendaten D und E und nutzt auch die in der Tabelle 218 gemeinsam genutzter Klassendaten gespeicherten Klassendaten A, dadurch die 'Funktion-5' genannte Funktion ausführend.
  • Somit ist es nicht notwendig, die in der hierzu transferierten Tabelle gemeinsam genutzter Klassendaten gespeicherten Klassendaten zu übertragen, wenn eine Fern-Auswertung durchgeführt wird, und der Transferumfang der Klassendaten kann reduziert werden.
  • Im folgenden wird das Verfahren zum Wiedergewinnen oder Auslesen von Klassendaten durch die Benutzerarbeitseinheitsklassen-Objekte 22a bis 22n beschrieben.
  • Die Klassenverwaltungsobjekte 24a bis 24m haben die Klassensuchfunktion 48 und rufen das Verfahrend loadClass() der Klassenverwaltungsobjekte 24a bis 24m auf, wenn ein Objekt aus den Klassendaten erzeugt wird, die zu den Benutzerarbeitseinheitsklassen-Objekten 22a bis 22n addiert wurden, oder wenn ein Objekt aus den im Verfahren des Objektes deklarierten Klassendaten erzeugt wird.
  • 31 ist ein Flußdiagramm, das den Klassen auslesenden oder wiedergewinnenden Prozess darstellt.
  • In 31 wird der Klassenname der wiederzugewinnenden Klassendaten aus den Argumenten des Verfahrens loadClass() abgerufen (Schritt S151), und die Tabelle 41 lokaler Klassendaten wird durchsucht (Schritt S152). Das Ergebnis des Durchsuchens der Tabelle 41 lokaler Klassendaten wird dann geprüft (Schritt S153). Wenn die auszulesenden Klassendaten gefunden sind, werden die Klassendaten als ein Rückkehrwert zurückgeleitet (Schritt S158).
  • Falls die auszulesenden Klassendaten in der Tabelle 41 lokaler Klassendaten nicht gefunden werden, wird die Tabelle 25 gemeinsam genutzter Klassendaten durchsucht (Schritt 154). Das Ergebnis eines Durchsuchens der Tabelle 25 gemeinsam genutzter Klassendaten wird dann geprüft. Wenn die auszulesenden Klassendaten gefunden sind, werden die Klassendaten als ein Rückkehrwert zurückgeleitet (Schritt S158).
  • Falls die auszulesenden Klassendaten in der Tabelle 25 gemeinsam genutzter Klassendaten nicht gefunden werden, werden die Bibliothek 31 von Be nutzerarbeitseinheitsklassen und die Bibliothek 32 von Systemklassen durchsucht (Schritt S156). Das Ergebnis eines Durchsuchens der Bibliothek 31 für Benutzerarbeitseinheitsklassen und der Bibliothek 32 für Systemklassen wird dann geprüft (Schritt S157). Falls die auszulesenden oder wiederzugewinnenden Klassendaten gefunden werden, werden die Klassendaten als ein Rückkehrwert zurückgeleitet (Schritt S158).
  • Falls die auszulesenden Klassendaten in der Bibliothek 31 für Benutzerarbeitseinheitsklassen oder der Bibliothek 32 für Systemklassen nicht gefunden werden, wird dann eine Fehlermitteilung ausgegeben, und der Prozess endet (Schritt S159).
  • Wie oben beschrieben wurde, wird gemäß der vorliegenden Erfindung eine Benutzerarbeitseinheitsklasse mit verteilten Objekten mit den Funktionen zum Ersetzen und Fern-Verarbeiten von Klassendaten versehen. Daher kann ein flexibles verteiltes Objektsystem einfach betrieben werden, und ein Entwickler kann diese Funktion einfach und sicher ohne Kenntnis der Klassenverwaltung nutzen.
  • Die vorliegende Erfindung ist oben beschrieben, ist aber nicht auf die oben beschriebenen Ausführungsformen beschränkt, und kann im technologischen Konzept der vorliegenden Erfindung variiert werden.
  • In einer Ausführungsform der Erfindung, wie sie oben beschrieben wurde, kann ein Programm für jedes Stück von Klassendaten mit addierten Nutzungsdaten des Programms überwacht werden. Als Folge können Klassendaten, die gerade genutzt werden, erkannt werden, während das Programm betrieben wird, und ein Teil des Programmcodes kann während der Ausführung des Programms gelöscht oder ersetzt werden.
  • Selbst wenn eine Prozessanforderung zur Löschung, zum Ersatz etc. an ein gerade ausgeführtes Programm ausgegeben wird, kann das Programm gelöscht oder ersetzt werden, ohne die Operation des Programms zu stoppen, wodurch die Last des Programmierers reduziert wird, wenn das Programm kundenspezifisch angepasst wird.
  • Ein monitor- oder Überwachungsobjekt zum Überwachen der Nutzung von Klassendaten ist in einem zu überwachenden Objekt vorgesehen. Die Funktion zum Überwachen eines Programms kann zu dem zu überwachenden Programm leicht addiert werden, die Nutzung des Programms kann einfach überwacht werden, ohne Kenntnis des Programmierers über die Klassenverwaltung, und ein Teil des Programmcodes kann gelöscht oder ersetzt werden, während das Programm gerade läuft.
  • Ein Überwachungsobjekt kann jedesmal erzeugt werden, wenn eine Additions-Anforderung von Klassendaten ausgegeben wird. Ein Programm kann für jede Funktion überwacht werden, die zu dem Programm neu addiert wurde und, wenn das Programm gerade läuft, kann bestimmt werden, welche Funktion des Programms gerade genutzt wird. Daher kann allein ein Spezifizieren der Funktion eines Teils des Programms die Funktion des Programms löschen oder ersetzen, während das Programm gerade läuft.
  • Falls eine Identifizierungsinformation über ein Klassenverwaltungsobjekt gespeichert ist, löscht dann nur ein Spezifizieren einer Identifizierungsinformation wie z. B. eines Namens eines Klassenverwaltungsobjekts etc. einen Teil eines Programmcodes oder ersetzt diesen, während das Programm gerade läuft, wodurch die Last des Programmierers reduziert wird, wenn er das Programm kundenspezifisch anpaßt.
  • Ein Klassenverwaltungsobjekt kann eine Tabelle lokaler Klassendaten zum Speichern von Klassendaten enthalten, die für das Klassenverwaltungsobjekt spezifisch sind. Selbst wenn es einen Konflikt zwischen den von einem anderen Objekt übertragenen Klassendaten und den Klassendaten, die gerade durch ein Klassenverwaltungsobjekt verwaltet werden, gibt, können die von einem anderen Objekt übertragenen Klassendaten und die Klassendaten, die durch ein Klassenverwaltungsobjekt gerade verwaltet werden, unabhängig gespeichert werden, und ein Benutzerarbeitseinheitsklassen-Objekt kann aus der Ferne die Klassendaten auswerten, die von einem anderen Objekt übertragen wurden.
  • Eine Anforderung zur Löschung von Klassendaten kann gespeichert und akzeptiert werden, während die durch die Anforderung zur Löschung von Daten spezifizierten Klassendaten gerade genutzt werden. Als Folge ist es nicht notwendig, eine Anforderung zur Löschung von Klassendaten erneut auszugeben, nachdem die Anforderung einmal zurückgewiesen ist. Wenn die Klassendaten gelöscht werden, kann daher die Last des Programmierers reduziert werden.
  • Neue Klassendaten können gespeichert werden, wenn eine Ersatz-Anforderung ausgegeben wird, und eine Anforderung zum Ersatz von Klassendaten kann akzeptiert werden, während die durch die Anforderung zum Ersatz von Klassendaten spezifizierten Klassendaten gerade genutzt werden. Als Folge ist es nicht notwendig, eine Anforderung zum Ersatz von Klassendaten erneut auszugeben, nachdem die Anforderung einmal zurückgewiesen ist. Wenn die Klassendaten ersetzt werden, kann daher die Last des Programmierers reduziert werden.
  • Falls ein Thread, der Klassendaten gerade verarbeitet, gespeichert ist, bestimmt allein ein Verweisen auf die Liste laufender Threads, ob Klassendaten, die gerade verarbeitet werden, existieren oder nicht, und die Nutzung der Klassendaten kann einfach geprüft werden.
  • Falls ein den addierten Klassendaten entsprechender Klassenname gespeichert ist, kann dann das Klassenverwaltungsobjekt einfach die von ihm selbst verwalteten Klassendaten prüfen und kann Klassendaten für jedes Stück addierter Klassendaten verarbeiten.
  • Die Referenz von Klassendaten kann in einem Klassenverwaltungsobjekt gespeichert werden. Ein Prozess kann unter Berücksichtigung der Referenzen oder Verweise der Klassendaten an Klassendaten durchgeführt werden, und der Programmierer muß die Referenzbeziehung der Klassendaten nicht erkennen. Daher kann das Programm einfach kundenspezifisch angepasst werden.
  • Ein Benutzerarbeitseinheitsklassen-Objekt enthält eine Zugriffssteuerklasse zum Prüfen von Zugriffsprivilegien von einem anderen Objekt einer Benutzerarbeitseinheitsklasse. Ein Benutzerarbeitseinheitsklassen-Objekt kann ein auf einer Zugriffssteuerklasse basierendes Zugriffssteuerobjekt erzeugen, wenn ein anderes Benutzerarbeitseinheitsklassen-Objekt Zugriff erlangt. Jedesmal wenn ein Benutzerarbeitseinheitsklassen-Objekt Zugriff erlangt, können daher Zugriffsprivilegien geprüft werden, und eine Zugriffsbedingung kann für jedes Benutzerarbeitseinheitsklassen-Objekt einfach ergänzt werden, wodurch die Sicherheit der Schnittstelle beim Addieren zum oder Aktualisieren eines Programmcodes verbessert wird.
  • Klassennamen von Klassendaten sind voneinander verschieden. Ein Konflikt in der gleichen Klasse in der Tabelle gemeinsam genutzter Klassendaten kann vermieden werden.
  • Wenn eine Anforderung, die verwiesenen Klassendaten zu löschen oder zu ersetzen, ausgegeben wird, während die verweisenden Klassendaten gerade verarbeitet werden, kann die Löschung oder der Ersatz der verwiesenen Klassendaten bis zum Ende des Prozesses der verwiesenen Klassendaten vorübergehend gehalten werden, wodurch ein nicht erfolgreiches Beenden des Prozesses an den Klassendaten vermieden wird.
  • Nach Abschließen der Funktion eines Teils eines Programms, die in einer Löschungs- oder Ersatz-Anforderung spezifiziert wurde, kann die Funktion des Teils des Programms gelöscht oder ersetzt werden. Daher kann ein Suspendieren des gerade ausgeführten Programms oder ein Reaktivieren des Programms vermieden werden, wenn die Funktion des Teils des Programms gelöscht oder ersetzt wird.
  • Eine Ausführungsform der vorliegenden Erfindung speichert Klassendaten, die von einem anderen Benutzerarbeitseinheitsklassen-Objekt übertragen wurden, in einer Tabelle lokaler Klassendaten eines Klassenverwaltungsobjekts. Eine Fern-Auswertung kann somit durch ein Benutzerarbeitseinheitsklassen-Objekt sanft oder reibungslos ausgeführt werden, so daß ein Konflikt zwischen den Klassendaten und den für das Klassenverwaltungsobjekt schon gespeicherten Klassendaten vermieden werden kann.
  • Basierend auf Klassendaten und serialisierten Daten eines Objekts, erzeugt aus den Klassendaten, kann das aus der Klassendaten erzeugte Objekt wiederhergestellt werden.
  • Somit wird das aus den Klassendaten erzeugte Objekt serialisiert und übertragen, werden die serialisierten Daten auf einer Empfangsseite wiederhergestellt, und das Objekt kann aus der Ferne ausgewertet werden.
  • Klassendaten, auf die durch die zu verarbeitenden Klassendaten verwiesen wurde, werden übertragen, um eine Fernauswertung für Klassendaten mit einer Referenzbeziehung auszuführen.
  • Durch Übertragen von Klassendaten, die in einem Benutzerarbeitseinheitsklassen-Objekt an einem Bestimmungsziel nicht existieren, kann der Umfang von Datenübertragungen in einer Fern-Auswertung reduziert werden, und die Geschwindigkeit einer Fern-Ausführung kann gesteigert werden.

Claims (18)

  1. Informationsverarbeitungsgerät zum Betreiben eines durch Klassendaten gebildeten Programms, welches Gerät aufweist: ein Benutzerarbeitseinheitsklassen-Speichermittel (31) zum Speichern einer Benutzerarbeitseinheitsklasse, um ein Objekt einer Benutzerarbeitseinheitsklasse zu erzeugen, welches eine Nutzung von Klassendaten überwacht, und ein Erzeugungsmittel für Objekte von Benutzerarbeitseinheitsklassen, um ein besagtes Objekt (22a22n) einer Benutzerarbeitseinheitsklasse basierend auf der Benutzerarbeitseinheitsklasse zu erzeugen, wenn ein Prozess an den Klassendaten durchgeführt wird; worin das Objekt einer Benutzerarbeitseinheitsklasse aufweist: zumindest ein Klassenverwaltungsobjekt (24a24m) zum Verwalten der Klassendaten, die zu dem Objekt (22a22n) einer Benutzerarbeitseinheitsklasse addiert wurden; eine Tabelle (25) gemeinsam genutzter Klassendaten zum Speichern der Klassendaten, die durch das eine oder mehrere Klassenverwaltungsobjekte (24a- 24m) verwaltet werden, die durch das Objekt einer Benutzerarbeitseinheitsklasse gebildet werden; und eine Schnittstelle (26) für ein öffentliches Fern-Verfahren zum Durchführen des Prozesses an den Klassendaten; worin die Schnittstelle (26) für ein öffentliches Fern-Verfahren aufweist: ein Klassendaten-Additionsmittel zum Addieren von Klassendaten zum Objekt (22a22n) einer Benutzerarbeitseinheitsklasse, welche Klassendaten durch ein Klassenverwaltungsobjekt verwaltet werden sollen, das durch das Objekt einer Benutzerarbeitseinheitsklasse gebildet wird, und welche Klassendaten eine zu verarbeitende Funktion repräsentieren; ein Klassendaten-Prozessmittel zum Verarbeiten von Klassendaten, die eine zu verarbeitende Funktion repräsentieren und in dem Objekt (22a22n) einer Benutzerarbeitseinheitsklasse gespeichert sind; und ein Klassendaten ersetzendes oder löschendes Mittel, um Klassendaten, die in dem Objekt (22a22n) einer Benutzerarbeitseinheitsklasse gespeichert sind, zu ersetzen oder zu löschen; wodurch das Objekt einer Benutzerarbeitseinheitsklasse eine Nutzung von Klassendaten überwacht, um die Klassendaten zu erkennen, die gerade verwendet werden, während das Programm betrieben wird, und als Antwort auf eine Anforderung, Klassendaten zu ersetzen oder zu löschen, falls die angeforderten Klassendaten gerade verwendet werden, die angeforderten Klassendaten ersetzt oder gelöscht werden, nachdem ihre Nutzung geendet hat, ohne eine Operation des Programms zu stoppen.
  2. Gerät nach Anspruch 1, worin das Objekt einer Benutzerarbeitseinheitsklasse ferner aufweist: eine Tabelle (23) für Klassenverwaltungsobjekte zum Speichern einer Korrespondenz zwischen dem Klassenverwaltungsobjekt (24a24m), das für eine Anforderung, die Klassendaten zu addieren, erzeugt wurde, und einem Namen, der zugewiesen wird, wenn die Anforderung, die Klassendaten zu addieren, ausgegeben wird.
  3. Gerät nach Anspruch 2, worin das Klassenverwaltungsobjekt (24a24m) aufweist: eine Tabelle (41) für lokale Klassendaten, um Klassendaten zu speichern, die für jedes Klassenverwaltungsobjekt (24a24m) spezifisch sind; ein Löschungs-Flag (42) zum Speichern einer Anforderung, die Klassendaten zu löschen; einen Speicherbereich (43) für Ersatz-Klassendaten, um neue Klassendaten zu speichern, wenn eine Anforderung, die Klassendaten zu ersetzen, ausgegeben wird; eine ID-Liste (44) laufender Threads zum Speichern einer Identifizierungsinformation über eine Thread-Verarbeitung der Klassendaten; eine Klassennamenliste (45) zum Speichern eines den Klassendaten entsprechenden Klassennamens; eine Referenzobjektliste (46) zum Speichern einer Identifizierungsinformation über ein Klassenverwaltungsobjekt (24a24m), welches Klassendaten verwaltet, auf die durch die Klassendaten verwiesen wird; und eine Liste (47) verwiesener Objekte, um eine Identifizierungsinformation über ein Klassenverwaltungsobjekt (24a24m) zu speichern, welches Klassendaten verwaltet, wodurch auf die Klassendaten verwiesen wird.
  4. Gerät nach Anspruch 1, worin die Benutzerarbeitseinheitsklasse speichert: eine Zugriffssteuerklasse zum Prüfen von Zugriffsprivilegien eines anderen Objekts (22a22n) einer Benutzerarbeitseinheitsklasse in der Tabelle (25) gemeinsam genutzter Klassendaten.
  5. Gerät nach Anspruch 1, worin das Objekt einer Benutzerarbeitseinheitsklasse aufweist: ein Erzeugungsmittel für Zugriffssteuerobjekte, um ein Zugriffssteuerobjekt basierend auf der Zugriffssteuerklasse zu erzeugen, wenn von einem anderen Objekt (22a22n) einer Benutzerarbeitseinheitsklasse Zugriff erlangt wird; und ein Ausführungsmittel für Zugriffssteuerobjekte, um Zugriffsprivilegien basierend auf dem Zugriffssteuerobjekt zu prüfen.
  6. Gerät nach Anspruch 1, worin das Klassendaten-Additionsmittel aufweist: ein Erzeugungsmittel für Klassenverwaltungsobjekte, um ein Klassenverwaltungsobjekt (24a24m) zu erzeugen, um zu dem Objekt (22a22n) einer Benutzerarbeitseinheitsklasse addierte Klassendaten zu verwalten; ein Klassennamen-Registrierungsmittel zum Registrieren eines Klassennamens der Klassendaten in einer Klassennamenliste (45) in dem Klassenverwaltungsobjekt (24a24m); ein Klassendaten-Schreibmittel zum Schreiben der Klassendaten in der Tabelle (25) gemeinsam genutzter Klassendaten; und ein Registrierungsmittel für Klassenverwaltungsobjekte, um in der Tabelle (23) für Klassenverwaltungsobjekte einen Namen zu registrieren, der zugewiesen wird, wenn die Anforderung, die Klassendaten zu addieren, ausgegeben wird.
  7. Gerät nach Anspruch 6, worin das Klassendaten-Additionsmittel ferner aufweist: ein Wiederherstellungsmittel für eine Tabelle gemeinsam genutzter Klassendaten, um die Tabelle (25) gemeinsam genutzter Klassendaten in einem ursprünglichen Zustand wiederherzustellen, indem Klassendaten, die zu dem Objekt (22a22n) einer Benutzerarbeitseinheitsklasse addiert wurden, aus der Tabelle (25) gemeinsam genutzter Klassendaten gelöscht werden, wenn ein Klassenname von zum Objekt (22a22n) einer Benutzerarbeitseinheitsklasse addierten Klassendaten zu einem Klassennamen von Klassendaten passt, die in der Tabelle (25) gemeinsam genutzter Klassendaten registriert sind.
  8. Gerät nach Anspruch 1, worin das Klassendaten-Prozessmittel aufweist: ein erstes Thread-Listen festlegendes Mittel zum Festlegen einer Identifizierungsinformation über eine Thread-Verarbeitung der Klassendaten in einer ID-Liste (44) laufender Threads der Klassenverwaltungsobjekte (24a24m), welche Klassendaten verwalten, die gerade verarbeitet werden; und ein zweites Thread-Listen festlegendes Mittel zum Festlegen einer Identifizierungsinformation über eine Thread-Verarbeitung der Klassendaten in einer ID-Liste (44) laufender Threads von Klassenverwaltungsobjekten (24a24m), welche Klassendaten verwalten, auf die durch Klassendaten verwiesen wird, die gerade verarbeitet werden.
  9. Gerät nach Anspruch 8, worin das Klassendaten-Prozessmittel aufweist: ein erstes Prüfmittel für Listen laufender Threads, um zu prüfen, ob eine Identifizierungsinformation über ein Thread in der ID-Liste (44) laufender Threads von Klassenverwaltungsobjekten (24a24m) festgelegt ist oder nicht; ein Bestimmungsmittel für Löschungs-Flags zum Bestimmen eines Setzens eines Löschungs-Flags (42) des Klassenverwaltungsobjekts (24a24m); und ein Löschungs-Ausführungsmittel zum Löschen von Klassendaten entsprechend einem Klassennamen einer Klassennamenliste (45) in einem Klassenverwaltungsobjekt (24a24m) aus der Tabelle (25) gemeinsam genutzter Klassendaten, wenn die ID-Liste (44) laufender Threads leer ist und ein Löschungs-Flag (42) des Klassenverwaltungsobjekts (24a24m) WAHR ist.
  10. Gerät nach Anspruch 8, worin das Klassendaten-Prozessmittel aufweist: ein zweites Prüfmittel für Listen laufender Threads, um zu prüfen, ob eine Identifizierungsinformation über ein Thread in der ID-Liste (44) laufender Threads von Klassenverwaltungsobjekten (24a24m) festgelegt ist oder nicht; ein Mittel zur Abfrage von Ersatz-Klassendaten, um einen Speicherbereich (43) für Ersatz-Klassendaten des Klassenverwaltungsobjekts (24a24m) abzufragen; und ein Ersatz-Ausführungsmittel zum Ersetzen von Klassendaten, die ersetzt werden sollen und in der Tabelle (25) gemeinsam genutzter Klassendaten gespeichert sind, wobei die Klassendaten im Speicherbereich (43) für Ersatz-Klassendaten gespeichert sind, wenn die ID-Liste (44) laufender Threads leer ist und Klassendaten eines Klassenverwaltungsobjekts (24a24m) im Speicherbereich (43) für Ersatz-Klassendaten gespeichert sind.
  11. Gerät nach Anspruch 1, worin das Klassendaten-Löschungsmittel aufweist: ein drittes Prüfmittel für Listen laufender Threads, um eine ID-Liste (44) laufender Threads von Klassenverwaltungsobjekten (24a24m) zu prüfen, welche zu löschende Klassendaten verwalten; und ein Löschungs-Flags setzendes Mittel zum Stoppen eines Löschens der Klassendaten und WAHR-Setzens eines Löschungs-Flags (42) des Klassenverwaltungsobjekts (24a24m), wenn eine Identifizierungsinformation über ein Thread in der ID-Liste (44) laufender Threads festgelegt ist.
  12. Gerät nach Anspruch 1, worin das Klassendaten-Ersatzmittel aufweist: ein viertes Prüfmittel für Listen laufender Threads, um eine ID-Liste (44) laufender Threads von Klassenverwaltungsobjekten (24a24m) zu prüfen, welche zu ersetzende Klassendaten verwalten; ein Ersatzdaten festlegendes Mittel zum Stoppen eines Ersetzens der Klassendaten und Festlegens neuer Klassendaten in einem Speicherbereich (43) für Ersatz-Klassendaten des Klassenverwaltungsobjekts (24a24m), wenn eine Identifizierungsinformation über ein Thread in der ID-Liste (44) laufender Threads festgelegt ist.
  13. Gerät nach Anspruch 11 oder 12, ferner aufweisend: ein Fehlerbenachrichtigungsmittel zum Ausgeben einer Fehlerbenachrichtigung, wenn eine Liste (47) verwiesener Objekte der Klassenverwaltungsobjekte (24a24m) nicht leer ist; und ein Identifizierungsinformations-Löschmittel, um eine Identifizierungsinformation über das Klassenverwaltungsobjekt (24a24m) aus einer Liste (47) verwiesener Objekte von Klassenverwaltungsobjekten (24a24m) zu löschen, welche Klassendaten verwalten, auf die durch zu löschende Klassendaten verwiesen wurde, wenn eine Liste (46) verwiesener Objekte der Klassenverwaltungsobjekte (24a24m) nicht leer ist.
  14. Gerät nach Anspruch 1, worin die Schnittstelle (26) für ein öffentliches Fern-Verfahren ferner aufweist: ein Mittel zur Fernauswertung von Klassendaten, um Klassendaten zu verarbeiten, die von einem anderen Objekt (22a22n) der Benutzerarbeitseinheitsklasse übertragen wurden.
  15. Gerät nach Anspruch 14, worin das Mittel zur Fernauswertung von Klassendaten ferner aufweist: ein Klassendaten festlegendes Mittel, um die Klassendaten in einer lokalen Klassendatentabelle (41) von Klassenverwaltungsobjekten (24a24m) festzulegen.
  16. Gerät nach Anspruch 14, worin das Mittel zur Fernauswertung von Klassendaten ferner aufweist: ein Datenempfangsmittel zum Empfangen von Klassendaten und serialisierter Daten von Objekten, die aus Klassendaten erzeugt wurden; und ein Objektwiederherstellungsmittel zum Wiederherstellen eines Objekts, das aus Klassendaten erzeugt wurde, basierend auf den Klassendaten und den serialisierten Daten.
  17. Gerät nach Anspruch 14, worin das Mittel zur Fernauswertung von Klassendaten ferner aufweist: Klassendaten-Aufrufmittel zum Aufrufen von Klassendaten, auf die durch zu verarbeitende Klassendaten verwiesen wurde, aus der Tabelle (25) gemeinsam genutzter Klassendaten; und ein erstes Klassendaten-Übertragungsmittel zum Übertragen der auszuwertenden Klassendaten und der Klassendaten, auf die durch die auszuwertenden Klassendaten verwiesen wurde, zu einem anderen Objekt (22a22n) einer Benutzerarbeitseinheitsklasse.
  18. Gerät nach Anspruch 14, worin das Mittel zur Fernauswertung von Klassendaten aufweist: ein Doppelklassenprüfmittel, um zu prüfen, ob auszuwertende Klassendaten in einer Tabelle (25) gemeinsam genutzter Klassendaten eines Objekts (22a- 22n) einer Ziel-Benutzerarbeitseinheitsklasse existieren oder nicht; und ein zweites Klassendaten-Übertragungsmittel, um basierend auf dem Prüfergebnis auszuwertende Klassendaten zum Objekt (22a22n) einer Ziel-Benutzerarbeitseinheitsklasse nach Entfernen von im Objekt (22a22n) einer Ziel-Benutzerarbeitseinheitsklasse existierenden Klassendaten zu übertragen.
DE69815946T 1997-05-20 1998-01-20 Informationsverarbeitungsvorrichtung Expired - Fee Related DE69815946T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP13016097 1997-05-20
JP9130160A JPH10320205A (ja) 1997-05-20 1997-05-20 情報処理装置

Publications (2)

Publication Number Publication Date
DE69815946D1 DE69815946D1 (de) 2003-08-07
DE69815946T2 true DE69815946T2 (de) 2004-04-01

Family

ID=15027443

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69815946T Expired - Fee Related DE69815946T2 (de) 1997-05-20 1998-01-20 Informationsverarbeitungsvorrichtung

Country Status (4)

Country Link
US (1) US6308182B1 (de)
EP (1) EP0880093B1 (de)
JP (1) JPH10320205A (de)
DE (1) DE69815946T2 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3995338B2 (ja) * 1998-05-27 2007-10-24 富士通株式会社 ネットワーク接続制御方法及びシステム
JP2000183875A (ja) * 1998-12-11 2000-06-30 Nec Corp ネットワーク管理システム及び機能の動的追加方法
JP2000259417A (ja) * 1999-03-12 2000-09-22 Sony Corp データ処理装置、データ処理方法及びプログラム提供媒体
US6678745B1 (en) * 1999-06-01 2004-01-13 Bruce Hodge Dynamic object synthesis with automatic late binding
US6698017B1 (en) * 1999-07-16 2004-02-24 Nortel Networks Limited Software migration on an active processing element
US6516349B1 (en) 1999-09-07 2003-02-04 Sun Microsystems, Inc. System for updating a set of instantiated content providers based on changes in content provider directory without interruption of a network information services
US6957228B1 (en) * 2000-01-07 2005-10-18 International Business Machines Corporation Object oriented apparatus and method for providing context-based class replacement in an object oriented system
EP1120710A3 (de) 2000-01-25 2005-04-27 Fujitsu Limited Verfahren und Gerät zum Feststellen von dynamischem Fluss in einem verteiltem System
US6385722B1 (en) * 2000-01-27 2002-05-07 Sun Microsystems, Inc. Method, system, and article of manufacture for limiting access to program files in a shared library file
US6931546B1 (en) * 2000-01-28 2005-08-16 Network Associates, Inc. System and method for providing application services with controlled access into privileged processes
JP4489915B2 (ja) * 2000-07-31 2010-06-23 大日本印刷株式会社 暗証コード照合機能をもった携帯型情報処理装置
US6986148B2 (en) * 2001-07-17 2006-01-10 Appforge, Inc. Methods and systems for providing platform-independent shared software components for mobile devices
US7526347B2 (en) * 2003-02-18 2009-04-28 Fisher-Rosemount Systems, Inc. Security for objects in a process plant configuration system
GB0400148D0 (en) * 2004-01-06 2004-02-11 Calico Jack Ltd Dynamic modularity in flexible,persistent agents
JP2005259113A (ja) * 2004-02-12 2005-09-22 Ricoh Co Ltd プロセス編集装置、プロセス管理装置、プロセス編集プログラム、プロセス管理プログラム、記録媒体、プロセス編集方法及びプロセス管理方法
US7721276B2 (en) * 2004-02-20 2010-05-18 International Business Machines Corporation Computer-implemented method, system and program product for comparing application program interfaces (APIs) between JAVA byte code releases
US7853742B2 (en) * 2004-04-26 2010-12-14 Intel Corporation System and method to conditionally shrink an executable module
US8676748B2 (en) * 2004-11-18 2014-03-18 International Business Machines Corporation Clearing metadata tracks in a storage system
US7885921B2 (en) * 2004-11-18 2011-02-08 International Business Machines Corporation Managing atomic updates on metadata tracks in a storage system
US8856467B2 (en) * 2004-11-18 2014-10-07 International Business Machines Corporation Management of metadata in a storage subsystem
US8464212B2 (en) * 2007-07-27 2013-06-11 Canon Kabushiki Kaisha Method, apparatus and storage medium for customizing application
US9335761B2 (en) * 2008-09-30 2016-05-10 Rockwell Automation Technologies, Inc. Procedure classification for industrial automation
US8412797B2 (en) * 2009-08-27 2013-04-02 Vmware, Inc. Platform for development and deployment of system administration solutions
KR102104899B1 (ko) * 2012-12-05 2020-05-29 엘지전자 주식회사 무선 통신 시스템에서 접근 권한 인증을 위한 방법 및 장치
US9336384B2 (en) * 2013-04-24 2016-05-10 Symantec Corporation Systems and methods for replacing application methods at runtime
US9720659B2 (en) * 2015-02-12 2017-08-01 International Business Machines Corporation Sparse object instantiation
US9934287B1 (en) 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809168A (en) 1986-10-17 1989-02-28 International Business Machines Corporation Passive serialization in a multitasking environment
US5072412A (en) * 1987-03-25 1991-12-10 Xerox Corporation User interface with multiple workspaces for sharing display system objects
US5008853A (en) * 1987-12-02 1991-04-16 Xerox Corporation Representation of collaborative multi-user activities relative to shared structured data objects in a networked workstation environment
US5018060A (en) * 1989-01-26 1991-05-21 Ibm Corporation Allocating data storage space of peripheral data storage devices using implied allocation based on user parameters
US5253361A (en) * 1989-09-15 1993-10-12 Emtek Health Care Systems, Inc. System for accessing a row of time-dependent data by referring to a composite index table indicating page locations of linked row labels
JPH04170642A (ja) 1990-11-05 1992-06-18 Fuji Xerox Co Ltd クラスの共有管理方式
CA2065473C (en) * 1991-04-25 1999-08-10 Kouichi Shibao Knowledge base management system for an information reasoning apparatus
US5410703A (en) 1992-07-01 1995-04-25 Telefonaktiebolaget L M Ericsson System for changing software during computer operation
JP3335407B2 (ja) * 1993-03-01 2002-10-15 富士通株式会社 電子取引システム
US5794229A (en) * 1993-04-16 1998-08-11 Sybase, Inc. Database system with methodology for storing a database table by vertically partitioning all columns of the table
US5379432A (en) * 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US5577230A (en) * 1994-08-10 1996-11-19 At&T Corp. Apparatus and method for computer processing using an enhanced Harvard architecture utilizing dual memory buses and the arbitration for data/instruction fetch
US5835949A (en) * 1994-12-27 1998-11-10 National Semiconductor Corporation Method of identifying and self-modifying code

Also Published As

Publication number Publication date
JPH10320205A (ja) 1998-12-04
EP0880093A1 (de) 1998-11-25
US6308182B1 (en) 2001-10-23
DE69815946D1 (de) 2003-08-07
EP0880093B1 (de) 2003-07-02

Similar Documents

Publication Publication Date Title
DE69815946T2 (de) Informationsverarbeitungsvorrichtung
DE69626377T2 (de) Vorrichtung, Verfahren, Speichermedium und computerlesbare Module zur raumeffizienten Objektverriegelung
DE69415917T2 (de) System und Verfahren zum Optimieren vom Nachrichtenaustausch zwischen Agenten in verteilten Systemen
DE4216871C2 (de) Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
DE19926115B4 (de) Transaktionshandhabung in einer Konfigurationsdatenbank
DE69225566T2 (de) Rechnersystem
DE69528738T2 (de) Systeme und Verfahren zur Herstellung und Auffrischung zusammengesetzter Dokumente
DE69228621T2 (de) Objektorientiertes verteiltes Rechnersystem
DE69936152T2 (de) System und verfahren zur dynamischen korrelation von ereignissen
DE69618131T2 (de) Anordnung und Verfahren zur Betriebsmittelverwaltung von verteilten Objekten
DE69429686T2 (de) Transaktionsverwaltung in objektorientiertem System
DE69607360T2 (de) Unterstützung von anwendungsprogrammen in einer verteilten umgebung
DE69429740T2 (de) Integriertes automatisches Entwicklungssystem und zugehöriges Verfahren
DE69423151T2 (de) Verwendung der zuletzt gültigen Konfiguration zum Laden eines Rechnersystems
DE69628965T2 (de) Verfahren und Gerät zum Verwalten von Beziehungen zwischen Objekten in einer verteilten Objektumgebung
DE69904190T2 (de) Verfahren und programm zum verarbeiten der verwaltungsanfragen einer verteilten netzwerkanwendung in einer gruppierten rechnerumgebung
DE69617509T2 (de) Vorrichtung und Verfahren zur Feststellung von Objekttypen in einem verteilten Objektsystem
DE60126016T2 (de) Serverseitige Kontrollobjekte zur Verarbeitung von kundenseitigen Benutzerschnittstellenelementen
DE68919631T2 (de) Verfahren zur Verarbeitung von Programmteilen eines verteilten Anwendungsprogramms durch einen Hauptrechner und einen intelligenten Arbeitsplatz in einer SNA LU 6.2-Netzwerkumgebung.
DE69614034T2 (de) Rechnersystem
DE69617511T2 (de) Verfahren und Gerät zum Verwalten von Objekten in einer verteilten Objektbetriebsumgebung
DE19605093B4 (de) Verfahren und Vorrichtung zum Einrichten und Verwalten einer Verbindung zwischen einem Client-Computersystem und jedem einer Mehrzahl von Server-Computersystemen
DE69425699T2 (de) Integrierung von Systemverwaltungsdiensten mit einem unterliegenden Systemobjektmodell
DE3752196T2 (de) Vorrichtung für Datenverarbeitungsverteilung über eine Mehrzahl von Steuerungsorten
DE69630329T2 (de) Verfahren zur Verwaltung des Deaktivierens und Ausschaltens eines Servers

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee