DE202010018488U1 - Virtuelle Objektreferenzierung in einer gehosteten Computerumgebung - Google Patents

Virtuelle Objektreferenzierung in einer gehosteten Computerumgebung Download PDF

Info

Publication number
DE202010018488U1
DE202010018488U1 DE202010018488.6U DE202010018488U DE202010018488U1 DE 202010018488 U1 DE202010018488 U1 DE 202010018488U1 DE 202010018488 U DE202010018488 U DE 202010018488U DE 202010018488 U1 DE202010018488 U1 DE 202010018488U1
Authority
DE
Germany
Prior art keywords
macro
user
macros
services
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE202010018488.6U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202010018488U1 publication Critical patent/DE202010018488U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Transfer Between Computers (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

Computerimplementiertes System zum Verwalten von Computermakros, wobei das System Folgendes umfasst: eine Vielzahl von gehosteten Anwendungen, die von dem gehosteten Computersystem betreibbar sind; einen Makrodatenspeicher, der eine Vielzahl von Makros speichert, die jeweils einem Benutzerkonto auf dem gehosteten Computersystem zugeordnet sind und jeweils eine Reihe von Aktionen definieren, die von mindestens einer der Vielzahl von gehosteten Anwendungen ausgeführt werden sollen; und einen Prozessor, um eine Dienstschnittstelle auszuführen, die, wenn sie ausgeführt wird, ein oder mehrere Objekte für jeden einer Vielzahl von Diensten definiert, die durch das System zugänglich sind, wobei das eine oder die vielen Objekte jeweils Kommunikationen von der Vielzahl von Makros in einer ersten Sprache zu einer oder mehreren der Vielzahl von Diensten in einer zweiten Sprache übersetzt wird, die sich von der ersten Sprache unterscheidet.

Description

  • TECHNISCHES GEBIET
  • Dieses Dokument bezieht sich auf netzwerkbasierte Lieferung von elektronischem Inhalt.
  • HINTERGRUND
  • Ein Makro ist ein Satz von Befehlen, die innerhalb einer oder mehrerer Computeranwendungen ausgeführt werden können, um eine verbesserte und automatische Interaktivität mit diesen Anwendungen bereitzustellen, wobei zumindest ein Teil des Makros Schritte darstellt, die ansonsten von einem Benutzer einer Anwendung manuell ausgeführt werden könnten. Zum Beispiel könnte ein Makro so geschrieben sein, dass es einen Wert von bestimmten Ziffern in einer Tabellenkalkulationsanwendung berechnet und den Wert zu einer verwandten Wortverarbeitungsanwendung auf einem Schreibtischcomputer kopiert. Ein Benutzer könnte dem Makro eine „Kurzbefehl“-Kombination zuweisen, sodass das Makro vom Benutzer einfach durch Betätigen der Kurzbefehl-Kombination ausgeführt werden kann. Als ein anderes Beispiel könnte ein Makro auch so geschrieben werden, dass es verursacht, dass bestimmte elektronische Nachrichten (z. B. jede von einer Ehefrau, einem Kunden oder Chef) in ihrer Bedeutung angehoben werden, so dass sie von einem Benutzer einer Computervorrichtung leichter gesehen werden. Ein vertrautes makrobasiertes System ist Visual Basic für Anwendungen für das Produktivitätspaket MICROSOFT OFFICE.
  • ZUSAMMENFASSUNG
  • Dieses Dokument behandelt Systeme und Techniken zum Erstellen und Verwenden von Makros in einem gehosteten Computersystem, das oft als "die Cloud" bezeichnet wird. Die Makros können von einem Makroserver-Subsystem und nicht von einem Client aus gespeichert und ausgeführt werden, sodass die Makros einfach zwischen Benutzern geteilt werden können, da alle qualifizierten Benutzer von vielen Standorten aus auf die Makros zugreifen können, solange sie in einem Netzwerk erhalten werden können und bieten Anmeldeinformationen. Darüber hinaus können die Makros leicht auf eine Anzahl von Anwendungen und Diensten zugreifen, die entweder von dem gehosteten Computersystem oder von Drittsystemen, die von dem gehosteten Computersystem getrennt sind, bereitgestellt werden. Solche Dienste können Dienste beinhalten, die Informationen über Standorte verschiedener Benutzer bereitstellen (wie z. B. von GPS auf ihren mobilen Geräten bestimmt), Dienste, die Nachrichten und Wetter-Feeds bereitstellen, und andere solche Dienste. Die Anwendungen können beispielsweise E-Mail- und andere Messaging-Anwendungen, Produktivitätsanwendungen, wie Tabellenkalkulations- und Textverarbeitungsprogramme, Mapping-Anwendungen und Mashups, von verschiedenen Anwendungen umfassen, die zusammen in einer einzigen Präsentation präsentiert werden können (auf die von einem Benutzer zugegriffen und sogar durch den Benutzer entwickelt werden kann, um maßgeschneiderte Ausgabe aus einem Makro zu erstellen). Die Anwendungen können dem Benutzer über eine oder mehrere Webseiten, die unter Verwendung eines Webbrowsers angezeigt werden, präsentiert werden. Die Systeme und Techniken können auch die Aufzeichnung von Makros vorsehen, wobei ein Benutzer einen Makroaufzeichner aufrufen kann und der Rekorder die Aktionen des Benutzers auf einem Computer verfolgen und diese Aktionen in einen Makrocode umwandeln kann, sodass die Aktionen später automatisch wiederholt werden können Wenn der Benutzer das Makro ausführt.
  • Wo mehrere verschiedene Anwendungen durch die Makros gesteuert werden sollen und auf mehrere Dienste von den Makros zugegriffen werden soll, kann eine Dienstschnittstelle bereitgestellt werden, sodass ein Makroprogrammierer eine einzelne Makrosprache für die Kommunikation mit allen verschiedenen Diensten und Anwendungen verwenden kann. Die Dienstschnittstelle kann Befehle, Parameter, Anweisungen, Daten und andere Elemente von einer Sprache zur anderen übersetzen und umgekehrt, um als eine Form der Abstraktionsschicht zu dienen, die den Programmierer schützt. Die Schnittstelle kann operieren, indem ein Objekt für jeden Dienst erzeugt wird, mit dem ein Makro kommunizieren und ein Zugriffsverfahren für jedes Objekt definieren muss. Die Objekte können mit Sicherheitswrappern versehen werden, um zu verhindern, dass böswilliger oder schluderiger Code unnötig auf Systemressourcen zugreift, und mit Kontingenten, die eine Überbeanspruchung eines Makros oder eines übermäßigen Zugriffs auf einen Dienst verhindern (z. B. über einen Virus, ein Botnetz oder einen ähnlichen Mechanismus).
  • Drittanbieterdienste, auf die die Makros zugreifen können, können SOAP-Dienste oder andere ähnliche Dienste beinhalten, auf die von einer Domäne zugegriffen werden kann, die von der Domäne getrennt ist, die die Dienste bereitstellt und die einen bekannten Mechanismus für die gemeinsame Nutzung von Informationen über das Internet bereitstellen. Beispielsweise kann ein Drittanbieter aktuelle Wetterdaten zusammenstellen und die Daten auf Anfrage anderen Diensten zur Verfügung stellen.
  • In einem ersten Aspekt verwaltet ein computerimplementiertes Verfahren Computermakros. Dieses Verfahren beinhaltet das Identifizieren eines in einem gehosteten Computersystem gespeicherten Makros, das Ausführen des Makros durch das Durchlaufen von Befehlszeilen in dem Makro und das Identifizieren eines aus einer Vielzahl von verschiedenen Diensten, die auf Makros ansprechen. Das Verfahren umfasst auch das Umwandeln eines Befehls in dem Makro aus einem Format, das mit einer Makrosprache verknüpft ist, in welcher das Makro verfasst ist und mit einem Befehlsformat, das dem Identifizierten der mehreren verschiedenen Dienste zugeordnet ist, und das Bereitstellen von Information, die von dem einen aus einer Vielzahl der verschiedenen Dienste an das Makro oder eine Anwendung empfangen wird, die dem Makro entspricht, nach dem Umwandeln der Information in ein Format, das von dem Makro oder der Anwendung, die dem Makro entspricht, verwendbar ist.
  • Verschiedene Implementierungen können einige, alle oder keine der folgenden Merkmale beinhalten. Das Makro kann von einer URL identifiziert werden, die das Makro aufruft und einen Pfad sowie Namen für das Makro beinhaltet. Das Verfahren kann ferner das Bereitstellen von Informationen umfassen, die von dem einen aus einer Vielzahl von verschiedenen Diensten empfangen werden, das Bereitstellen der Information durch ein Masqueraded-Objekt, das Merkmale eines Objekts versteckt, welches verwendet wird, um die Informationen von mindestens einem der Vielzahl von verschiedenen Diensten zu erhalten. Das Verfahren kann auch das Bestimmen umfassen, ob eine Aufforderung an den einen der Vielzahl von Diensten von einem Benutzer, der dem ausführenden Makro entspricht, einen bestimmten Pegel überschreitet und die Ausführung des Makros verhindert, wenn der Aufruf das Kontingent überschreitet. Bestimmen, ob ein Aufruf eines der mehreren Dienste von einem Benutzer, der dem ausführenden Makro entspricht, einen bestimmten Pegel übersteigt, das Wrapping des Makros in einem Kontingent-Wrapper, der als ein Adapter zwischen dem Makro und einem oder mehreren Objekten arbeitet, und auf dem Makro Nutzungsbeschränkungen implementiert.
  • In einigen Aspekten kann das Verfahren auch das Empfangen einer Benachrichtigung eines Ereignisses auf einem gehosteten Computersystem umfassen, worin das Ereignis unabhängig von dem Status eines Benutzers auf dem gehosteten Computersystem ist, das Ereignis mit dem Makro und ein Konto des Benutzers mit dem gehosteten verknüpft Computersystem und das Ausführen des Makros auf dem Konto des Benutzers. Das Verfahren kann das Umwandeln eines Befehls in dem Makro aus einem Format, das mit einer Makrosprache verknüpft ist, in welcher das Makro verfasst ist, zu einem Befehlsformat, das dem Identifizierten der verschiedenen Dienste zugeordnet ist, umfassen, das Anwenden von Abschnitten des Makros auf eine Übersetzungstabelle beinhaltet, die auf dem gehosteten Computersystem gespeichert sind. Das Verfahren kann auch das Umwandeln eines Befehls in das Makro aus einem Format, das der Sprache zugeordnet ist, in welcher das Makro verfasst ist, in ein Befehlsformat umwandeln, das mit einer Anwendung verbunden ist, um die Anwendung unter Verwendung des Makros zu steuern. Das Verfahren kann auch das Senden einer Nachricht an den Benutzer beinhalten, um den Benutzer über eine Operation der Anwendung zu informieren. Die Nachricht wird aus einer Gruppe ausgewählt, die aus einer E-Mail-Nachricht, einer Telefon-Sprachnachricht und einer Textnachricht besteht.
  • In anderen Aspekten kann einer aus einer Vielzahl von verschiedenen Diensten aus einer Gruppe ausgewählt werden, die aus einem Standortdienst, einem E-Mail-Dienst und einem SOAP-Dienst besteht. Das Verfahren kann auch das Umwandeln des Befehls in dem Makro aus dem Format, das der Makrosprache zugeordnet ist, in der das Makro autorisiert ist, zu dem Befehlsformat, das dem Identifizierten der Vielzahl verschiedener Dienste zugeordnet ist, umfassen, sowie das Wrapping einer Zugriffsmethode auf den Dienst unter Verwendung eines Java-Objekts.
  • In einer anderen Implementierung verwaltet ein computerimplementiertes System Computermakros unter Verwendung eines Systems, das eine Vielzahl von gehosteten Anwendungen beinhaltet, die von dem gehosteten Computersystem betrieben werden können, sowie einen Makrodatenspeicher, der eine Vielzahl von Makros speichert, die jeweils einem Benutzerkonto auf dem gehosteten Computer zugewiesen sind. Es definiert eine Folge von Aktionen, die von mindestens einer der Vielzahl von gehosteten Anwendungen ausgeführt werden, und einen Prozessor, um eine Dienstschnittstelle auszuführen, die, wenn sie ausgeführt wird, ein oder mehrere Objekte für jeden einer Vielzahl von Diensten definiert, auf die zugegriffen werden kann, wobei das eine oder mehrere Objekte jeweils Kommunikationen von der Vielzahl von Makros in einer ersten Sprache zu einem oder mehreren Diensten in einer zweiten Sprache übersetzen, die sich von der ersten Sprache unterscheidet.
  • Verschiedene Implementierungen können einige, alle oder keine der folgenden Merkmale beinhalten. Das System kann einen Event-Handler umfassen, der so programmiert ist, dass er Benachrichtigungen über Ereignisse empfängt, die bei der Vielzahl gehosteter Anwendungen auftreten und die Ausführung der Vielzahl von Makros als Antwort auf das Empfangen der Benachrichtigungen von Ereignissen verursacht. Die Objekte wickeln jeweils eine Zugriffsmethode ab, die einen Kommunikationsmechanismus zur Kommunikation mit einem der Vielzahl von Diensten definiert ist. Das System kann ferner einen oder mehrere Sicherheits-Wrapper enthalten, die als Adapter zwischen dem Ausführen von Makros und dem einen oder mehreren Objekten arbeiten und verhindern, dass ein Makro ohne positive Benutzeranweisungen bezüglich des Makros ausgeführt wird. Das System kann auch eine oder mehrere quotenerzwingende Schichten enthalten, die programmiert sind, um die Ausführung eines oder mehrerer der mehreren Makros oberhalb eines bestimmten Pegels zu verhindern. Das System kann auch eine oder mehrere quotenerzwingende Schichten enthalten, die programmiert sind, um die Ausführung eines oder mehrere der Makros oberhalb eines bestimmten Pegels zu verhindern. Der bestimmte Pegel wird durch eine Anzahl von Ausführungen eines Makros im Auftrag eines bestimmten Benutzerkontos in einer Zeitperiode definiert.
  • In einer weiteren Implementierung beinhaltet ein computergestütztes System zum Verwalten von Computermakros eine Vielzahl von gehosteten Anwendungen, die von dem gehosteten Computersystem betrieben werden können, sowie einem Makrodatenspeicher, der eine Vielzahl von Makros speichert, die jeweils zugeordnet sind, ein Benutzerkonto auf dem gehosteten Computersystem und jede eine Folge von Aktionen definieren, die von mindestens einer der Vielzahl von gehosteten Anwendungen ausgeführt werden sollen, und eine Einrichtung zum Ausführen eines oder mehrerer der Makros in einem ersten Format und zum Übersetzen von Information aus Die Ausführung zu einer oder mehreren Diensten, die als Reaktion auf einen Aufruf aus dem Makro Informationen in einem zweiten Format bereitstellen, das sich von dem ersten Format unterscheidet.
  • Die Einzelheiten einer oder mehrerer Ausführungsformen mit den begleitenden Zeichnungen und Beschreibungen sind nachfolgend ausgeführt. Andere Eigenschaften und Vorteile werden aus der Beschreibung und den Zeichnungen, und aus den Ansprüchen ersichtlich.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Konzeptdiagramm, das Strukturen zum Zulassen einer universellen Programmierung für Makros in einem gehosteten Computersystem zeigt.
  • 2 ist ein schematisches Diagramm eines gehosteten Computersystems, das in der Lage ist, geteilte Makros zu betreiben.
  • 3A ist ein Flussdiagramm eines Prozesses zum Bereitstellen eines Drittanbieter-Datenobjekts für einen Benutzer.
  • 3B ist ein Flussdiagramm eines Prozesses zum Verwalten von Computermakros.
  • 4A ist ein Flussdiagramm eines Prozesses zum Ausführen eines Makros, das von einer Anwendung aufgerufen wird, die auf einer Webseite läuft.
  • 4B ist ein Schwimmbahn-Flussdiagramm eines Prozesses zum Aufzeichnen und Ausführen eines Makros auf einem gehosteten System.
  • 5 zeigt eine Beispielstruktur für Objekte in einem Makrosystem.
  • 6 zeigt einen beispielhaften Bildschirmausdruck eines Makro-Bausystems.
  • 7 zeigt Beispiele generischer Computer-Vorrichtungen, die verwendet werden können, um die in diesem Dokument beschriebenen Aktionen auszuführen.
  • Gleiche Referenzsymbole in den verschiedenen Zeichnungen verweisen auf gleiche Elemente.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 ist ein Konzeptdiagramm, das Strukturen zum Zulassen einer universellen Programmierung für Makros in einem gehosteten Computersystem 100 zeigt. Eine solche Operation kann mit der Makroausführung, die auf einem Client oder einem Server auftritt, der auf einem einzelnen Client-Gerät (z. B. über einen entfernten Desktopverbindungsdienst oder VPN) gerichtet ist, kontrastiert werden, da die Makroausführung auf einem gehosteten System unter anderem Dinge ermöglicht die Ausführung des Makros von verschiedenen Clients, wie einen Desktop-Computer, einen Netto-Buchcomputer oder von einem öffentlich zugänglichen Computer wie einem Computer in einem Internetcafe. Außerdem kann ein solches Makro leicht zwischen Benutzern geteilt werden, indem ein erster Benutzer Zugriffsbeschränkungen auf dem Makro definiert, die anderen Benutzern erlauben (z. B. Benutzern, die auf das System aus derselben Domäne wie der anfängliche Benutzer zugreifen), um den Makro auszuführen, wenn er deren eigenen Anwendungen verwendet. Und solch ein Makro kann für einen Benutzer ausgeführt werden, auch wenn der Benutzer nicht online ist, beispielsweise wenn eine Eingabe außerhalb des Benutzers und des Computers des Benutzers den Beginn der Makroausführung auslöst. Wenn das gehostete System außerdem vielfache registrierte Benutzer hat, die miteinander in Beziehung stehen (z. B. alle arbeiten für dieselbe Geschäftsorganisation), können Makros, die in einem gehosteten System laufen, komplexe Arbeitsabläufe erzeugen, die Anwendungen und/oder Datenspeichers umspannen, die vielfachen solcher Benutzer entsprechen.
  • In einem solchen System kann ein Makro besonders nützlich sein, wenn es auf Informationen von mehreren verschiedenen Diensten zugreifen kann, einschließlich Diensten, die von Dritten bereitgestellt werden, die sich von dem Anbieter des gehosteten Systems unterscheiden, und wenn er mit mehreren unterschiedlichen Anwendungen in dem gehosteten System arbeiten kann, wie z. B. Messaging-Anwendungen und Anwendungen für die Unternehmensproduktivität. Wie auch immer, derlei vielfältige Dienste und Anwendungen können jedoch unterschiedliche Kommunikationsstrukturen und Protokolle aufweisen. Als Ergebnis kann ein Makroserver-Subsystem, das mit dem System 100 verknüpft ist, in verschiedene Formate übersetzen, wenn ein Makro ausgeführt wird, sodass ein Makroautor auf viele Ressourcen zugreifen kann, während er eine einzelne Makrosprache verwendet. Beispielsweise kann ein Objektmodell für die verschiedenen Dienste definiert werden, die dem Makroautor ausgesetzt sind, z. B. das Manipulieren von Kalkulationstabellen und einen Kalender, das Abrufen von Webinhalten, das Senden von E-Mails, das Zugreifen auf den Kalender, das Übersetzen von Text usw. Das Objektmodell kann unter Verwendung von z. B. Java-Objekten dargestellt werden. Jedes Java-Objekt kann ein Zugangsverfahren zu dem zugrundeliegenden Dienst umhüllen. Die Kommunikation kann mit Ressourcen des ersten Teilnehmers (d.h. denjenigen, die von derselben Organisation bereitgestellt werden, die das Makroserver-Subsystem anbietet) unter Verwendung von Remoteprozeduraufrufen auftreten, während die Kommunikation mit Drittanbieterressourcen (von anderen Organisationen, z. B. über eine Domäne) bereitgestellt wird, die sich von der Domäne unterscheidet, durch die der Benutzer auf das gehostete Computersystem zugreift) kann das Abrufen von Webinhalten wie in Form von SOAP oder ähnlichen Diensten verwenden.
  • Wenn die Dienstschnittstelle verfügbar ist, kann ein Makroautor Makros erstellen, ohne Kenntnisse oder Fachwissen in den bereitgestellten Dienstarchitekturen für die verschiedenen anderen Dienste zu benötigen. Ein Makroserver-Subsystem kann tatsächlich als Abstraktionsschicht (z. B. Dienstschnittstelle) zwischen einem Anwendungsserver (oder einem Dienstanbieter) und einem Makro wirken. Auf diese Weise kann ein Benutzer mit dem Anwendungsserver (oder einem anderen Ressourcenanbieter) unter Verwendung eines einfachen und leicht zu implementierenden Befehlssatzes und einer Sprache kommunizieren und muss sich nicht mit einer möglicherweise schwierigeren Wechselwirkung beschäftigen, die ansonsten erforderlich wäre, um direkt mit dem Anwendungsserver (oder einem anderen Dienstanbieter) zu kommunizieren. Beispielsweise kann ein Makroserver-Subsystem Steuerbefehle zum Steuern des Betriebs von Anwendungen oder Diensten auf dem Anwendungsserver übersetzen und kann auch Daten zwischen dem Benutzer und Anwendungen oder Diensten, die auf dem Anwendungsserver gehostet werden (oder Server eines Drittanbieters), entweder mit oder ohne Modifikationen an den Daten, übergeben. In einem Beispiel kann ein Benutzer ein Makro zum Aufrufen einer Anzahl von Diensten implementieren, ohne direkt auf interne Instruktionsanrufe zuzugreifen, die für diesen Dienst proprietär sind.
  • Zu diesem Zweck und unter näherer Bezugnahme auf 1 sind Server-Systeme und Serviceschnittstellen 102 gezeigt, die mit Client-Computergeräten, unter Verwendung eines oder mehrerer Makros 104a–d, kommunizieren. Die Makros 104 können Daten und Dienste durch mehrere Mechanismen bereitstellen, wobei ein solcher Mechanismus direkt mit der Abstraktion von Daten und Diensten verknüpft ist, die sich innerhalb eines Systems befinden, und ein anderer Mechanismus, der mit der Abstraktion von Daten und Drittservices verbunden ist, die außerhalb des Systems sind.
  • Drittanbieterdienste können SOAP-Dienste oder andere ähnliche externe Dienste umfassen, auf die von einer Domäne zugegriffen werden kann, die von der Domäne getrennt ist, die die Dienste bereitstellt, und die einen oder mehrere bekannte Mechanismen zum gemeinsamen Nutzen von Informationen über das Internet bereitstellen (z. B. veröffentlicht in einer API). Zum Beispiel kann ein dritter Serviceprovider aktualisierte Wetterdaten kompilieren und kann die Daten anderen Diensten auf Anfrage verfügbar machen.
  • Die Dienstschnittstelle 102 kann Datenobjekte speichern, wie beispielsweise Java-Objekte 106a und 106b oder Datenobjekte von Drittanbietern. Die Java-Objekte 106a und 106b können Modelle darstellen, die für die verschiedenen Dienste definiert werden können, die dem Endbenutzer ausgesetzt sind, wie zum Beispiel das Bearbeiten von Kalkulationstabellen, das Abrufen von Webinhalten, das Senden von E-Mails, das Aufrufen ihres Kalenders, das Hochladen von Blogeinträgen, das Übersetzen von Text usw.
  • Jedes Java-Objekt 106a und 106b hat ein Zugriffsverfahren 108a bzw. 108b, das von den Makros 104 verwendet werden kann, um Dienste oder Funktionalität zu verwenden, die in den Java-Objekten 106a und 106b gespeichert sind. Die Dienstschnittstelle 102 kann dazu beitragen, dass ein Benutzer einen nahtlosen Zugriff auf Dienste und Anwendungen erhält, die in dem gehosteten Computersystem 100 über Zugriffsverfahren 108 bereitgestellt werden, ohne dass das System 100 die internen Dienste für den Benutzer freilegt.
  • Jedes Java-Objekt kann eine Zugriffsmethode auf den zugrunde liegenden Dienst umschließen. Die Zugriffsmethoden können durch interne direkte Netzwerkanrufe (für Kalkulationstabellen und Übersetzungen), GData (für Kalenderanwendungen), interne Maildienste (für E-Mail) und andere Zugriffsmethoden (für das Abrufen von Webinhalten) dargestellt werden. Viele dieser Dienste müssen nicht direkt an den Endbenutzer ausgesetzt werden.
  • Die Dienstschnittstelle 102 kann die Dienste vor direktem Kontakt mit einem Endbenutzer schützen. Beispielsweise kann die Dienstschnittstelle 102 „Wrapper "oder „Dekorators" um ein zugrunde liegendes Datenobjekt bereitstellen, um das Risiko des Zur Schaustellens von internen Diensten für Endbenutzer zu eliminieren. Ein Wrapper repräsentiert eine Softwareschicht, die als ein Adapter zwischen einem Makro und einem Java-Objekt wie etwa den Java-Objekten 106a oder 106b fungiert. In einigen Implementierungen können Wrapper dazu beitragen, dass Zugriff auf Datenobjekte gewährt wird, unabhängig davon, welche Anwendungen oder Dienste die Datenobjekte ursprünglich entworfen wurden, um ausgeführt zu werden. Darüber hinaus können die Wrapper die Verwendung von Geräten, Anwendungen, Diensten oder anderen Daten ermöglichen, für die kein generischer Zugriff für die bestimmten Datenobjekte verfügbar ist.
  • In einigen Implementierungen kann ein Wrapper eine Sicherheitsschicht für einen Provider und/oder einen Endbenutzer bereitstellen. Zum Beispiel beinhaltet die Dienstschnittstelle 102 eine Sicherheitsschicht 110a, die das Java-Objekt 106a wrappen kann. Die Sicherheitsschicht 110a ist ein zusätzlicher Code, der den Makrocode selbst umgibt. Zum Beispiel, dass der Makrocode nicht ausgeführt werden kann, wenn keine positiven Maßnahmen durch den Benutzer getroffen werden. In einigen Implementierungen kann die Aktion für den Benutzer bestimmt sein, eine auf dem Bildschirm befindliche Steuerung auszuwählen, die mit "OK" markiert ist oder in anderer Weise das Makro genehmigen. Vor der Bereitstellung einer solchen Freigabe kann dem Benutzer eine Warnung angezeigt werden, die die Dienste oder andere Ressourcen erläutert, die das Makro beeinflussen könnte, und dem Benutzer auch die Möglichkeit gegeben werden kann, eine Teilmenge von Ressourcen zu definieren, die das Makro beeinflussen darf, um zu verhindern, dass das Makro andere Ressourcen beeinflusst.
  • Die Dienstschnittstelle 102 beinhaltet auch Protokollierungsschichten 112a und 112b, die Benutzeranrufe erfassen und eine Abschrift einer Benutzersitzung bereitstellen können. Die Protokollierungsschichten 112a und 112b können jede Operation protokollieren, die als Teil der Ausführung eines Makros ausgeführt wird, die Dauer der Operation, die Prävalenz von Fehlern in der Operation und die Quellensprache oder den Bereich eines Benutzers, in dem die Operation angefordert wurde.
  • Die Dienstschnittstelle 102 beinhaltet auch Kontingent erzwingende Schichten 114a und 114b, die einen Dienstanbieter vor Dienstmissbrauch schützen und einen Benutzer vor Spam schützen können. Die Kontingent erzwingende Schichten 114a–b können beispielsweise feststellen, ob ein bestimmtes Konto in einer Menge eingerichtet wurde, um einen Dienst zu spammen, indem Spam-Scoring-Programme verwendet werden, die dazu beitragen können, eine solche Kontenerstellung zu finden. Das System 100 kann die Kontingenterzwingungsschichten 114a–b verwenden, um festzustellen, ob eine große Anzahl von Aktivitäten in einer kurzen Zeitspanne angefordert oder ausgeführt wurde, da Spammer häufig dieses Verhalten aufweisen. Zusätzlich können die Kontingent erzwingenden Schichten 114a–b vor missbräuchlicher Verwendung durch die geschwindigkeitsbegrenzende Benutzeraktivität schützen. Beispielsweise kann das System 100 die Kontingent-Erzwingungsschichten 114a–b verwenden, um die Anzahl von API-Aufrufen, die pro Minute platziert werden können, zu begrenzen. Insbesondere kann das System 100 einen Mechanismus zum Durchführen einer Befehlszählung bereitstellen, in dem ein Rückruf in einer Scriptmaschine installiert ist, und Aufrufe, um einen Befehlszähler zu steigern, wenn eine nicht vorbestimmte maximale Anzahl von Befehlsaufrufen aufgewendet wird. Wenn der maximale Befehlsaufrufpegel erreicht ist, wirft das System 100 eine Fehlermeldung aus und kann die Ausführung des Dienstes beenden.
  • Auf einer allgemeinen Ebene können die Sicherheitsschichten 110a–b, die Protokollierungsschichten 112a–b und die Kontingent verstärkenden Schichten 114a–b in Schichten auf die darunterliegenden programmierten Objekte 106a und 106b in einer konsistenten und vereinigten Weise aufgebracht werden. Da Kontingente und Sicherheit einheitlich angewendet werden und nicht ad-hoc über Dienste verteilt werden, kann in einem solchen Beispiel die Wahrscheinlichkeit eines Programmiererfehlers (und resultierende Sicherheitsverletzung) verringert werden. In einigen Implementierungen können die Schichten 110114 (z. B. Wrapper) alle gemeinsam benutzten Code verwenden, um einen Java-Client aufzurufen, der sich auf einem Server befinden kann.
  • Die Sicherheitsschichten 110a–b können den Endbenutzer auf verschiedene Arten schützen, beispielsweise von Angriffen vor Trojanischen Pferden, Phishingangriffen oder anderem bösartigen Code. In einigen Implementierungen kann die Sicherheitsschicht 110a konstruiert werden, nachdem ein Dialogfeld an den Benutzer geliefert wurde. In einem solchen Beispiel kann eine Nachricht, die in dem Dialogfeld enthalten ist, ein Makro als ein potentiell nicht vertrauenswürdiges Makro identifizieren und kann ferner identifizieren, was passieren kann, wenn das Makro ausgeführt wird. Zum Beispiel können Makros versuchen, die Kontrolle über verschiedene Aspekte eines Computers zu erfassen, beispielsweise durch Einfügen von bösartigem Code in Dateien oder Ausführen von Code, um böswillige Handlungen auszuführen.
  • Ein Dialogfeld, das einem Benutzer präsentiert wird, kann in einigen Implementierungen eine Liste potentiell schädlicher Akte identifizieren, die für dieses Makro spezifisch sind, wobei die Liste auf einer Abtastung des Makros basiert. Das Scannen eines Makros kann z. B. dazu beitragen, bestimmte potenzielle schädliche Effekte zu identifizieren, die zum Teil auf Textzeichenfolgen im Makro oder anderen Informationen beruhen, die mit Inhalten vergangener Makros übereinstimmen, welche bösartig waren. Der Benutzer kann den Zugriff genehmigen oder ablehnen, den das Makro haben kann. Die Genehmigung des Benutzers kann verwendet werden, um fähigkeitsbasierte Sicherheitsebenen wie die oben diskutierten zu konstruieren, wie zum Beispiel das Erlauben, dass das Makro Leseberechtigungen hat, das Makro jedoch nicht erlaubt, bestimmte Dateien zu aktualisieren. In solch einem Fall können die Privilegien oder Rechte, die dem Makro durch den Benutzer gewährt und in der Sicherheitsschicht widergespiegelt werden, auf diejenigen Arten von Aktionen begrenzt werden, die der Benutzer genehmigt hat.
  • In einigen Implementierungen kann ein Prozess zum Erzeugen von Sicherheitsschichten bösartigen Code erkennen, der versucht, Mechanismen zum Erkennen von bösartigem Code zu täuschen. Beispielsweise können anstelle der Codierung von "Delete" in einem Makro die Teilstrings "de" und "lete" verkettet werden, um die Absicht der wahren Löschoperation zu verbergen (z. B. "Löschen").
  • Im Betrieb kann die Dienstschnittstelle 102 Schlüsselmethoden der verschiedenen programmgesteuerten umhüllten Objekte mit einer Kontingent erzwingenden Schicht 114a–b umschließen, die Anrufe zu einem Kontingentserver ausführen kann. Der Kontingent-Server kann Konfigurationsdateien, Wrapper, Protokolldateien und andere Wrapper-Informationen speichern. Der Kontingent-Server kann die Konfiguration sowohl kurz- als auch langfristiger Kontingentgrenzen ermöglichen. Zum Beispiel kann die Dienstschnittstelle 102 eine maximale Anzahl von Aufrufen während einer bestimmten Zeitperiode erzwingen, wie beispielsweise einen Tag, mehrere Stunden oder eine gesamte Periode der Registrierung eines Benutzers bei einem System. Ein solcher Ansatz kann das Auftreten von Ausbrüchen von Aktivitäten ermöglichen, jedoch auch verhindern, dass ein abweichendes Script das gesamte Kontingent eines Benutzers für einen Tag in einem kurzen Zeitraum ausnutzt.
  • In einigen Implementierungen werden Benutzer über eine verschleierte Benutzerkennung mit der durch den Identifikationsserver verstellten Nutzer-ID und einem programmspezifischen Schlüssel identifiziert. Der Kontingent-Server ermöglicht pro Benutzer Überschreibungen, sodass ein bestimmter Benutzer zusätzliche Kapazität angefragt und gewährt werden kann. Das Kontingentlimit kann auf den auslösenden Benutzer anstelle eines ausführenden Makros oder des Makroinhabers angewendet werden, da ein gegebenes Makro (z. B. ein Dokumentgenehmigungssystem) Hunderte oder sogar Tausende von Benutzern aufweisen kann.
  • In einigen Implementierungen kann die Dienstschnittstelle 102 unterschiedliche Kontingent-Konfigurationen für verschiedene spezifische Kunden anwenden. Wenn beispielsweise ein Benutzer ein Mitglied eines bestimmten Webclientdiensts ist, kann dem Benutzer ein höheres Kontingent als ein Nichtmitglied gewährt werden, wenn dieser Dienst verwendet wird. Außerdem können Benutzern aus bestimmten Domänen höhere Kontingente eingeräumt werden als Benutzer anderer Domänen. Außerdem kann jeder Benutzer in Kombination mit dem obigen unterschiedliche Quotenebenen für verschiedene Makros haben. Zum Beispiel kann einem bestimmten Benutzer eine "Basis"-Ebene relativ zu einer Grundlinie zugewiesen werden, z. B. kann ein Benutzer eine 50 auf einer Grundlinie von 100 bewertet werden, was bedeutet, dass der Benutzer die Hälfte des Kontingents eines durchschnittlichen Benutzers erhält. Ein bestimmtes Makro kann eine ähnliche Zuordnung relativ zu einer Grundlinie oder einer absoluten Zuweisung haben. So könnte beispielsweise einem Makro eine Grundlinie von 40 Hinrichtungen pro Tag zugewiesen werden, sodass der oben aufgeführte Benutzer 20-mal pro Tag (50/100 oder 0,5 × 40) ausführen kann.
  • In einem speziellen Beispiel kann das System 100 eine Kontingent erzwingende Schicht bereitstellen, die die Anzahl der gesendeten E-Mails pro Tag begrenzt. Ebenso können die Kontingent erzwingenden Schichten 114a–b die Anzahl von Kalenderereignissen, die ein bestimmter Benutzer erzeugen kann, durch Blockieren von „Ereignis erstellen"-Aufrufen begrenzen, nachdem ein vorbestimmter Schwellenwert erfüllt worden ist. In noch einem anderen Beispiel kann das System 100 Speicherobjektzuordnungen auf eine weitere Drosselklappenspeicher-Verwendung zählen und verhindern, dass böswillige oder schlecht konstruierte Makros zu viele große Speicherobjekte zuweisen. Andere Kontingentregeln können auch durch das System 100 implementiert werden.
  • In einigen Implementierungen schützen die Wrapper 110a114b auch einen Dienstanbieter. Beispielsweise kann die Dienstschnittstelle 102 eine Klassenverschluss-Schnittstelle umfassen, um zu verhindern, dass Scripte auf verbotene Java-Objekte zugreifen. Insbesondere kann die Dienstschnittstelle 102 die Klassenverschlussschnittstelle verwenden, um Java-Klassen zu filtern, die für Scripte und Makros sichtbar sind. In einem solchen Beispiel wird der Klassenverschluss einen qualifizierten Klassennamen einer Klasse übergeben, die der Benutzercode versucht, implizit oder explizit zu laden. Die Klassenverschlussschnittstelle gibt im Allgemeinen einen booleschen Wert zurück, der genau dann wahr ist, wenn die Java-Klasse oder das Java-Objekt mit einem gegebenen Namen berechtigt ist, den Scripts oder Makros ausgesetzt zu werden. Weiterhin begrenzt die Dienstschnittstelle 102 Java-Klassen, die einer Scripting-Engine, Sicherheitsumhüllungen 110, Protokollierungsschichten 112, kontingenterzwingenden Schichten 114, Beans und den Java-Grundelementklassen wie einem String, einem Float und dergleichen zur Verfügung gestellt werden. Dies kann verhindern, dass ein Benutzer auf Umgebungsvariablen oder andere Java-Objekte zugreift.
  • In einigen Implementierungen kann der Klassenverschluss von Natur aus pessimistisch sein und kann unter Verwendung nur einer vordefinierten weißen Liste von Klassen und Dateninhalten arbeiten. Beispielsweise kann jede Klasse, die nicht explizit auf der weißen Liste steht, verweigert werden und Platzhalter dürfen nicht verwendet werden. Die weiße Liste kann programmatische Beans, Java-Primitive oder andere zugelassene Daten enthalten.
  • Die Zugriffsverfahren 108a und 108b stellen eine API für Programmierer dar, die beim Übertragen von Daten zu und von einem Dienst oder einer Anwendung verwendet werden sollen. Die Zugriffsmethoden 108a–b können Kommunikationsprotokolle umfassen, die von den Makros 104a–d eingehakt werden können, um leicht auf eine Anzahl von Anwendungen und Diensten zuzugreifen. Die Anwendungen können stark variieren und können E-Mails, Produktivitätsanwendungen wie Tabellenkalkulationen und Textverarbeitungsprogramme, Mapping-Anwendungen und Kombinationen verschiedener Anwendungen umfassen, die zusammen auf einer einzigen Webseite dargestellt werden können. Die Anwendungen können von einem Benutzer aufgerufen oder entwickelt werden, um eine benutzerdefinierte Ausgabe von einem Makro 104 bereitzustellen.
  • Das System 100 kann von Standard-Webbrowsern aus zugegriffen werden. In einigen Implementierungen können die Zugriffsmethoden 108a und 108b den Dienst oder Zugriff für einen bestimmten Benutzer verweigern. Beispielsweise kann die Zugriffsmethode 108a den Zugriff auf das Java-Objekt 106a verweigern, wenn ein Kontingentmaximum aufgewendet wird.
  • Das gehostete Computersystem 100 beinhaltet auch Programmanwendungen 116 und 118. Die Anwendungen 116 und 118 können alle Anwendungen umfassen, die der Benutzer (z. B. über ein Makro) ausführen kann, wie z. B. E-Mail-Anwendungen, Tabellenkalkulationsanwendungen, Textverarbeitungsanwendungen, Fotofreigabeanwendungen, Präsentationspakete, Finanzplanungsanwendungen oder Eine Kombination von Anwendungen. In einigen Fällen kann ein Benutzer eine Anwendung explizit starten, indem er die zu startende Anwendung auswählt, beispielsweise durch Doppelklicken auf den Anwendungsnamen auf einem Desktop oder in einer Pulldown-Liste von Anwendungen. Andere Anwendungen können implizit gestartet werden, beispielsweise wenn ein Benutzer auf eine E-Mail-Anlage (z. B. eine Textdatei oder eine Tabellenkalkulation) klickt oder wenn ein Benutzer auf eine unbekannte Datei klickt, von der jede die Ausführung der entsprechenden Anwendung automatisch starten kann Ist mit der Datei verknüpft, z. B. basierend auf dem Erweiterungsnamen der Datei oder einer anderen definierten Zuordnung. Anwendungen können auch gestartet werden, wenn sie von einem ausführenden Makro aufgerufen werden, das ein Benutzer gestartet hat. In einem weiteren Beispiel für das Starten oder Ausführen von Anwendungen kann ein Ereignis unabhängig von den Aktionen eines Benutzers oder dem aktuellen Status auf dem System 100 auftreten, wie zum Beispiel der Empfang einer E-Mail-Nachricht in dem Konto des Benutzers, die die Ausführung bestimmter Anwendungen starten oder fortsetzen kann. Beispielsweise kann das Ereignis (z. B. eine empfangene E-Mail-Nachricht) ein Makro auslösen (z. B. um eine Tabellenkalkulation zu aktualisieren, eine Betreffzeile hinzuzufügen).
  • Das gehostete Computersystem 100 umfasst auch Dienste wie SOAP-Dienste 120, wie Dienste, die von Drittanbietern über das Internet zur Weitergabe von Informationen an Anforderer solcher Dienste zur Verfügung gestellt werden. Die Dienstschnittstelle 102 kann einen Zugriff auf die SOAP-Dienste 120 über ein Netzwerk 122 bereitstellen. Die SOAP-Dienste sind plattformunabhängige Web-Services, mit denen strukturierte Daten ausgetauscht werden können. Das Framework für die SOAP-Dienste 120 kann die Basisschicht eines Webdienstprotokollstapels bilden, die ein grundlegendes Messaging-Framework bereitstellt, auf dem Webdienste aufgebaut werden können. Die SOAP-Servicearchitektur besteht im Allgemeinen aus mehreren Schichten von Spezifikationen für Nachrichtenformat, Nachrichtenaustauschmuster (MEP), zugrundeliegenden Transportprotokollbindungen, Nachrichtenverarbeitungsmodellen und Protokolldepilierbarkeit.
  • Die Dienstschnittstelle 102 kann auf SOAP-Dienste oder andere Drittdienste zugreifen, indem sie eine oder mehrere Schichten von Dienstleistungsspezifikationen abstrahiert, so dass ein Benutzer auf die Dienste zugreifen kann, ohne Kenntnis über die Spezifikationen in dem Dienst zu haben. Insbesondere stellt die Dienstschnittstelle 102 SOAP-Dienste 120 bereit, indem virtuelle SOAP-Dienste 124 erzeugt werden, die sich in die ursprünglichen Dienste 120 einhaken. In einem Beispiel kann der Haken in der Form eines dynamischen Proxyobjekts 126 bestehen, das in dem virtuellen SOAP-Dienst 124 untergebracht ist. Das dynamische Proxyobjekt 126 kann beispielsweise in einem Paket "java.lang.reflect" bereitgestellt werden. Insbesondere kann das Paket eine Arrayklasse zur Verfügung stellen, die statische Methoden zum Erstellen und Bearbeiten von Arrayobjekten und eine Proxyklasse beinhaltet, die die dynamische Erzeugung von Proxyklassen unterstützt, die spezifizierte Schnittstellen implementieren. Die Implementierung einer Proxy-Klasse wird von einem verfügbaren Objekt bereitgestellt, das eine Schnittstelle "InvocationHandler" implementiert. Die Schnittstelle "InvocationHandler" kann ein Objekt oder ein Verfahren unter Verwendung von Parametern aufrufen, wobei der erste Parameter das dynamische Proxyobjekt 128 ist, der zweite Parameter ein Methodenobjekt ist, das das Verfahren von der vom Proxy implementierten Schnittstelle repräsentiert, und der dritte Parameter das Array von Parameter an die Schnittstellenmethode übergeben. Eine Aufrufmethode gibt ein Objektergebnis zurück, das das Ergebnis beinhaltet, das an den Code zurückgegeben wird, der die Proxyschnittstellenmethode aufgerufen hat.
  • Die Dienstschnittstelle 102 kann die virtuellen SOAP-Dienste 124 unter Verwendung der Beschreibung des Dienstes erzeugen. Die Beschreibung kann leicht abgerufen werden, da Webdienste typischerweise öffentliche Dienste im Internet sind, die oftmals diese Beschreibung des Dienstes in einer maschinenlesbaren Weise bereitstellen. Die Dienstschnittstelle 102 kann diese Beschreibungen verwenden, um den virtuellen SOAP-Dienst 124 zu erzeugen. Das System 100 kann die dynamische SOAP-Dienst-API erzeugen, indem Java-Reflexion und dynamische Proxys verwendet werden, um eine Illusion von konkreten Programmierobjekten zu erzeugen. Andere Verfahren können auch verwendet werden, um dieses Ziel zu erreichen, wie beispielsweise durch Verwenden der Java-Bytecode-Erzeugung oder Verwenden von Merkmalen einer anderen Programmiersprache.
  • Der SOAP-Dienst 120 wird allgemein durch eine Webdienstbeschreibungssprache (WSDL) definiert. Das System 100 kann eine SOAP-Bean erstellen, die eine WSDL nimmt und gibt dann ein Javascript-Objekt zurück, das mit den Methoden der obersten Ebene für diesen Dienst gefüllt wird. Zusätzlich kann das System 100 Verfahren bereitstellen, die eine einfache Dokumentation über den Dienst erzeugen, einschließlich der Objekte, die der Dienst nimmt, welche Felder zu füllen sind usw.
  • Als spezielles Beispiel stellt der Nationale Wetterdienst (NWS) einen Webdienst zur Verfügung, um Details über das Wetter zu erhalten. Ein Nutzer kann über das System 100 die bekannte, veröffentlichte URL für das NWS adressieren und unter Verwendung eines solchen Dienstes Zugriff auf persönliche Wetteraktualisierungen erhalten. Das Ergebnis ist ein dynamisch generiertes programmatisches Objekt (z. B. Java-Objekt 106a), das der Benutzer verwenden kann, um in seinem Script Aufrufe durchzuführen. Insbesondere könnte der Benutzer eine NWS-Bean erstellen, die die NAP-SOAP-API mit folgendem Pseudocode kontaktiert:
    Figure DE202010018488U1_0002
  • Im obigen Beispiel kann das System sowohl das dynamische Proxyobjekt 126 als auch ein Javascript-Objekt-zu-Map-of-Attributes-Script verwenden, um sich zwischen Javascript- und Java-Implementierungen zu bewegen. Da XML und Javascript normalerweise nicht typisiert sind, kann das System 100 die Erzeugung von Java-Klassen insgesamt umgehen. Insbesondere kann das System 100 die WSDL verwenden, um eine "Grammatik" zu erzeugen, welche Objekttypen bestimmte Arten von Feldern haben und welche Methoden welche Argumente und Rückgabewerttypen annehmen. Somit wird das Drittanbieter-Serviceobjekt oder das SOAP-Bean in der Tat zu einer Maschine zum Umwandeln einer WSDL (z. B. erhalten durch Fastnet) in einen Objektgraphen. Das System 100 kann dann Funktionsaufrufe erzeugen, die zu HTTP/Fastnet-Anfragen an den SOAP-Dienst 120 oder einen anderen Drittservice führen. Das System 100 kann zwischen XML (die SOAP-Aufrufe erwarten) und Karten von Attributen (die Javascript-Code bereitstellt und empfängt) arrangieren.
  • Die Befehlszuordnung kann verwendet werden, um Befehle zu erzeugen, die an verschiedene Dienste oder Anwendungen von einer gemeinsamen Makrosprache gesendet werden, die von Benutzern beim Generieren von Makros verwendet wird. Beispielsweise können Regeln definiert werden, um einen Befehl oder eine Gruppe von Befehlen in der Makrosprache zu nehmen und diese in eine Zielsprache (und umgekehrt mit Daten oder Befehlen) zu übersetzen. Wenn mehrere unterschiedliche Dienste oder Anwendungen verwendet werden, können mehrere unterschiedliche Regelsätze oder andere Befehlszuordnungsmechanismen verwendet werden, wobei jeder Dienst oder Anwendung eine Karte zuweisen kann, die ihm zum Übersetzen zwischen ihm und der Makrosprache zugewiesen ist.
  • In bestimmten Fällen kann das System 100 mehrere Makrosprachen unterstützen. In einer solchen Situation können Abbildungsmechanismen zwischen jeder Makrosprache und jeder Dienst- oder Anwendungssprache bereitgestellt werden. Alternativ können Befehle und andere Daten in eine intermediäre, generische Form konvertiert werden, bevor sie wieder in die nächste Komponente konvertiert werden. Ein solcher Ansatz kann vorteilhaft sein, wenn es viele Makrosprachen (M) und viele Dienste oder Anwendungen (N) gibt, sodass es nur M + N-Übersetzer statt M × N-Übersetzer gibt.
  • Im Allgemeinen kann das Makro-Server-Subsystem in Kombination mit der Dienstschnittstelle 102 (die dem gehosteten Computersystem 100 zugeordnet ist) einem Benutzer erlauben, der Makrocode schreibt, um Makros in einer vereinheitlichten und konsistenten Weise zu schreiben, indem eine abstrahierte Version eines Dienstes oder Anwendung bereitgestellt wird. Die abstrakte Version des Dienstes oder der Anwendung wird im Allgemeinen durch seine Beschreibung definiert. Die Beschreibung kann verwendet werden, um einen virtuellen Dienst zu erstellen, auf den mehrere Benutzer unmittelbar beim Aufruf des Dienstes mit einem oder mehreren Makros 104 zugreifen können. Dies bietet dem Endbenutzer eine einfache Methode der Programmierung und Aufruf von Service- oder Anwendungsfunktionalität.
  • 2 ist ein schematisches Diagramm eines gehosteten Computersystems 200, das in der Lage ist, geteilte Makros zu betreiben. Generell stellt das System 200 mehrere Komponenten bereit, die ein Beispiel für eine Art zeigen, in denen Makros von Benutzern auf einem gehosteten System erstellt, gespeichert, geteilt, zugegriffen und ausgeführt werden können.
  • In diesem System 200 stellt ein Makroserver-Subsystem 202 einen Speicherort zum Speichern des Makrocodes in einer persistenten Weise in einem Scriptinformationsdatenspeicher 206 bereit, wobei die gespeicherten Informationen einen Makrobibliotheksnamen, einen Scriptinhalt und einen Identifizierer von einem Makro-Besitzer enthalten können (z. B. mit einer verschleierten Benutzerkennung oder einer anderen Kennung). Wenn ein Makro läuft, kann ein Befehl an das Makroserver-Untersystem 202 gesendet werden, um das jeweilige Makro auszuführen. Der Code kann dann von dem Script-Information speichernden Datenspeicher 206 geholt und eine Instanz in einem Script-Motor oder Script-Ausführer 208 erstellt werden.
  • Java-Objekte, die die programmatische API für verschiedene serverseitige Anwendungen repräsentieren, können konstruiert werden und können in einem fähigkeitsbasierten Sicherheitswrapper verpackt und zu programmierbaren umhüllten Diensten (oder "Beans") werden. Die umhüllten Dienste 210 können alle der relevanten Dienste enthalten, die das Makroserver-Untersystem 202 beispielsweise zu Verbrauchern umhüllter Dienste in Verbindung mit der Makroausführung liefern kann. Ein umhüllter Dienst 210 kann jedes relevante Objekt sein, das eine Sammlung von anderen Objekten ist, die gebündelt sind, sodass sie leicht weitergegeben werden können.
  • Die verpackten Dienste können einen Java Business Delegate enthalten, der öffentliche Methoden, die mit Backend Services interagieren, offenlegt. Die öffentlichen Verfahren können in Paketen oder anderen Mechanismen für Bündelungsverfahren, Bündelungsklassen, Strings, Tabellenkalkulationen, Anwendungsprogrammierungsschnittstellen (application programming interfaces, APIs), und anderen Tools, die von mehreren Computeranwendungen bereitgestellt werden (z. B. Java usw.) enthalten sein. Die öffentlichen Verfahren können z. B. Ressourcen darlegen (oder öffentlich machen), die verwendet werden können, um Makros zu definieren oder auszuführen. Bestimmte Implementierungsdetails der öffentlichen Verfahren können privat gehalten werden, was geeignete Ebenen zum Verbergen und Ablenken von Informationen bereitstellen kann. Der öffentlichen Verfahren können in mehreren verschiedenen Objekttypen ähnlich aussehen, und ein gewissermaßen konsistentes Aussehen und Anfühlen für Makrobenutzer aufweisen, und somit einen Grad an Polymorphie bereitstellen. Als ein Resultat kann die Sammlung von umhüllten Diensten die Verwendung von Makros durch Benutzer in einer objektorientierten, ereignisgeleiteten Umgebung ermöglichen.
  • Diese verpackten Dienste oder Beans sind in diesem Beispielsystem 200 an ein Java-Objekt der obersten Ebene angeschlossen, das öffentliche Elemente für jede Eigenschaft hat (z. B. Kalkulationstabellen, Kalender usw.). Dieses Java-Objekt der obersten Ebene wird in den Bereich für die Umgebung des Script-Executors mit einem Standard- und einem vorgegebenen Label eingefügt. In einigen Implementierungen reflektiert der Script-Ausführer öffentliche Glieder (und nur öffentliche Glieder) zu der Scripting-Umgebung.
  • Daher, wenn ein JavaScript-Code eines Benutzers ausgeführt wird
    Figure DE202010018488U1_0003
    ausführt, wird das Java-Verfahren „create“ auf das Java-Objekt im Feld „spreadsheets“ des Objekts der obersten Ebene aufgerufen. Die Java-Implementierung dieses Verfahrens macht einen remoten Verfahrensruf zu dem Tabellenkalkulationsserver mit einem Befehl „CREATE“ und einem Argument entsprechend dem neuen Titel (z. B. „my new doc“), zusammen mit einem entstellten Identifikator des Script-Ausführers. Der Tabellenkalkulationsserver erstellt die neue Tabellenkalkulation und gibt seinen Schlüssel in der Antwort auf den remoten Verfahrensruf zurück. Der Makroserver erstellt ein neues Java-Objekt, das die neu erstellte Tabellenkalkulation darstellt, die den neuen Schlüssel beinhaltet. Das Java-Objekt beinhaltet Verfahren für mehrere Tabellenkalkulationsvorgänge, wie z. B. „rename“, „insertSheet“ usw. Dieses Objekt wird auch in einem Sicherheits-Wrapper umhüllt und zurückgegeben. Der Script-Ausführer umhüllt intern dieses Objekt in einem NativeJavaObject-Wrapper, und gibt es an das variable „doc“ oben zurück.
  • In einigen Implementierungen von Wrapping-Objekten kann jeder geeignete Dienst (z. B. Kalkulationstabellen, Kalender, E-Mail usw.) Objekte zurückgeben, die in dynamischen Java-Proxys eingehüllt sind. Es kann unterschiedliche Proxys geben, wie z. B. für Sicherheit, Protokollieren und Kontingent. Jeder Proxy kann eine Beschreibung enthalten oder verwenden, was der Dienst darlegt (z. B. eine Java-Schnittstelle, wie z. B. „Spreadsheet“, „SpreadsheetRange“, „EmailService“ usw.), der die öffentlichen Verfahren definieren kann. Es kann Anmerkungen geben, die an den Schnittstellen vorhanden sind, die für die verschiedenen Wrapper geeignet sind.
  • Beispielsweise kann die Methode "create" im Tabellenkalkulationsdienst eine neue Kalkulationstabelle erstellen. Es kann eine Anmerkung haben, die erklärt, dass das Verfahren ein WRITE-Verfahren ist, das einen Mechanismus bereitstellt, um beispielsweise den Benutzer zu warnen, dass das Script versuchen wird, in seine Sammlung von Tabellenkalkulationdokumenten zu schreiben (und das Script wird bei einer Runtime abgebrochen, wenn der Benutzer kein WRITE-Privileg für das Script autorisiert hat). Grundsätzlich hilft der Sicherheits-Wrapper beim Sicherstellen, dass erklärte erforderliche Erlaubnisse eines gegebenen Verfahrens (WRITE usw.) im Autorisierungstoken des Benutzers sind. Wenn das Verfahren autorisiert wird, wird der Ruf zur nächsten Schicht weitergegeben.
  • Die Sicherheit kann auch durch Begrenzung der Häufigkeit, mit der ein bestimmter Benutzer auf eine Operation in Bezug auf ein Makro zugreifen kann, bereitgestellt werden. Zum Durchführen einer solchen Funktion kann eine Kontingent-Anmerkung im Verfahren „create“ vorhanden sein, die besagt, dass Rufe zu diesem Verfahren gegen das Kontingent „"create spreadsheet“ des Endbenutzers gezählt werden sollen. Der Kontingent-Wrapper kann einen Kontingentdienst rufen oder verwenden, der verfolgt, wie oft ein gegebener Benutzer das Ausführen eines Vorgangs veranlasst. Das Verfahren kann beispielsweise abgebrochen werden, wenn der Benutzer über dem Kontingent ist; wenn nicht, wird es wieder abwärts zur nächsten Schicht weitergegeben. Das Kontingent für einen Benutzer kann über einen festgelegten Zeitraum gemessen werden, wie z. B. ein Tag, eine Woche oder ein Monat, und kann zu periodischen Zeitpunkten zurückgesetzt oder reduziert werden.
  • Eine Abschrift der Makroausführungen kann auch von einer Protokollierungsschicht bereitgestellt werden, die eine Zeichenfolgenversion jeder aufgerufenen Methode aufzeichnet und die bereitgestellten Argumente.
  • Der Wrapper-Dienst-Ersteller 212 kann Dienste auf höchster Ebene erstellen, deren Umfang von dem Makro und seiner Umgebung abhängt. Zum Beispiel kann der umhüllte Diensterzeuger 212 die Möglichkeiten untersuchen, die der Endbenutzer, der das Makro laufen lässt, ausdrücklich dem Makro gewährt hat, und er kann „beans“ der obersten Ebene erstellen, die dem Zustand des Makros entsprechen. Der Zustand kann beispielsweise das aktuelle Dokument (z. B. E-Mail, Textdokument, Zeichnungen, Tabellenkalkulation usw.), wenn vorhanden, und eine Benutzerauthentifizierung enthalten. Der umhüllte Diensterzeuger 212 kann umhüllte Dienste der obersten Ebene erzeugen, die eine Möglichkeit haben, die auf der Umgebung beruht, und er kann die umhüllten Dienste 210 in die Ausführungsumgebung des Script-Ausführer 208 einsetzen, wo der Benutzer beispielsweise Makros definieren und ausführen kann. In einem Sinn kann man sich den umhüllten Diensterzeuger 212 als einen Erzeuger oder ein Werk für „beans“ oder als eine „bean factory“ vorstellen.
  • Die Arten von umhüllter Dienste 210, die erstellt werden können, umfassen beispielsweise fähigkeitsgepackte Instanzen von Tabellenkalkulationsanwendungen, Kalenderanwendungen und dergleichen. Dieses Java-Objekt kann in den Ausführungsumfang eingesetzt werden. Die Quelle des Objekts kann dazu verwendet werden, um es zu identifizieren (z. B. mit dem Label „TopLevel“). Damit kann beispielsweise „TopLevel.spreadsheets“ zu einer Referenz für das kapazitätsumhüllte Objekt werden (z. B. das Objekt SpreadsheetApplicationApi). Die öffentlichen Verfahren des Objekts können als Java-Objekte in der JavaScript-Programmierungsumgebung reflektiert und für Makros verfügbar gemacht werden.
  • Zum Beispiel kann JavaScript-Code wie:
    Figure DE202010018488U1_0004
    eine vorhandene Tabellenkalkulation (z. B. eine Tabellenkalkulation genannt „MyOtherDoc“) öffnen den Wert der Zelle A1 von der aktuellen Tabellenkalkulation in die Zelle B2 der neuen Tabellenkalkulation kopieren. Java-Objekte wie z. B. ein Bereichsobjekt, das durch ein Verfahren „find“ zurückgegeben wird, sind wie alle anderen kapazitätsumhüllt, und können scheitern, wenn der authentifizierte Benutzer keinen Zugang zur relevanten Tabellenkalkulation hat. Zum Beispiel sind im vorstehend präsentierten Beispiel für Zelle kopieren/einfügen sind die Zugänge für eine erfolgreiche Ausführung ein Lesezugang (z. B. gefordert durch den getValue) zu der aktiven Tabellenkalkulation, und ein Schreibzugang (z. B. gefordert durch setValue) zu der Ziel-Tabellenkalkulation (z. B. die Tabellenkalkulation „MyOtherDoc“).
  • Der Script-Executor 208 kann für das Erzeugen eines Kontexts für das Makro und Ausführen des tatsächlichen Einfügens des Wrapperdienstes 210 auf höchster Ebene verantwortlich sein. Ein neuer Umfang der obersten Ebene kann für jede Makroausführung erstellt werden, um z. B. die Möglichkeit eines Ausführungs-Scripts zu vermeiden, das den globalen Umfang für andere Scripts „vergiftet“. Der Makrokontext kann mit einer Implementierung eines Klassen-Shutters oder Filters geladen werden, der die Erstellung von Java-Klassen verhindert, die nicht genehmigt sind (z. B. nicht auf der Weißliste der zulässigen Klassen). Zusätzlich kann der Script-Ausführer 208 einen Anweisungszähler zum Drosseln von Runaway-Scripts erstellen, um z. B. zu erkennen, wenn ein Script in einer Endlosschleife ist. In einigen Implementierungen können Runaway-Scripts vorzeitig durch den Scriptmanager 204 beendet werden.
  • Der Script-Executor 208 kann für verschiedene Funktionen verantwortlich sein, einschließlich Parsen, Überprüfen der Syntax, Funktionsaufrufe, Makroausführung und Wiederaufnahme. Die Parse-Funktion kann ein Script untersuchen und eine Liste der Funktionen und Makros zurückgeben, die im Script-Speicher in einem Datenspeicher, wie z. B. der Script-Information-Datenspeicher 206, entdeckt wurden. Zum Beispiel können unter Bezugnahme auf 1 die detektierten Funktionen und Makros als Resultat der Parse-Funktion die Funktion Name erhalten 114, die Funktion Name prüfen 116, die Funktion Standort erhalten 118 oder alle sonstigen Funktionen, Makros usw. enthalten, die im Script oder Makrocode (z. B. Makrocode 112) eingebettet sein können.
  • Andere vom System unterstützte Funktionen können auch verwendet werden, um zu helfen, eine Sammlung von Makros auf einem serverseitigen System 200 zu verwalten. Zum Beispiel kann eine Syntax-Prüfungsfunktion vor dem Speichern eines Scripts bestimmen, ob es Fehler im Script darin gibt (z. B. syntaktische Fehler, Sprachkompilierungsfehler, Missbrauch von Schlüsselworten usw.). Wenn syntaktische oder andere Fehler erkannt werden, können die Fehler mitgeteilt werden, indem der Benutzer oder Script-Programmierer gewarnt wird.
  • Eine Call-Funktion kann eine Funktion in einem Makro „aufrufen“ (oder die Ausführung starten). Diese Ruffunktion kann eine beschränkte Ausführungsversion des Makros sein, wie z. B. eine Version, die gewährte Privilegien für Funktionsrufe in Zellen hat (z. B. in einer Tabellenkalkulation). Zum Beispiel können beschränkte Versionen von Makros darauf beschränkt sein, nur einen Wert zurückzugeben, während es ihnen nicht erlaubt ist, Seiteneffekte zu erzeugen.
  • Makroausführungs- und Wiederaufnahmefunktionen können verwendet werden, um Makros zu starten und wiederaufzunehmen. Zum Beispiel kann die Makroausführungsfunktion die anfängliche Ausführung des Makros starten. In einigen Fällen kann die Ausführung des Makros eine zusätzliche Eingabe vom Benutzer erfordern. In diesem Fall kann die Ausführung des Makros ausgesetzt oder in einen Wartezustand versetzt werden, bis die Eingabe vom Benutzer erhalten wird. Nachdem die Benutzereingabe bereitgestellt wurde, kann die Funktion Makro wiederaufnehmen die Ausführung eines Makros fortsetzen, das unterbrochen wurde.
  • Das Scriptinformations-Repository 206 kann als ein Datenspeicher dienen, Bereitstellen und/oder Stützen von Operationen, wie Script/Makro-Erstellung, Speicherung, Abruf, Aktualisierung, Löschung usw., sein. Gespeicherte Scripts im Script-Information Repositorium 206 nach Benutzerbibliothek, individuellem Script oder Anwendung organisiert werden (z. B. Anwendungen für E-Mail, Tabellenkalkulationen, Wortverarbeitungsdokumente usw.). Vorgänge können über eine gesamte Bibliothek eines Benutzers oder individuelle Elemente in der Bibliothek durchgeführt werden. Zum Beispiel kann ein Vorgang eine Benutzerbibliothek nach ihrer ID abholen (z. B. eine primäre Schlüsselsuche beruhend auf dem Namen der Bibliothek). Ein anderer Vorgang kann alle Benutzerbibliotheken abholen, die mit einem gegebenen Dokument verknüpft sind, wie z. B. ein Dokument, das ein Makro oder Script darstellt.
  • Von dem Scriptinformations-Repository 206 bereitgestellte Abrufoperationen können Operationen umfassen, die die Berechtigung für einen bestimmten Benutzer auf einer bestimmten Benutzerbibliothek abrufen, alle Benutzerbibliotheken, die einem bestimmten Benutzer gehören, sowie einen Fortsetzungsdatensatz durch seine ID abrufen usw.
  • Erstellungs-/Aktualisierungsvorgänge, die von dem Scriptinformations-Repository 206 bereitgestellt werden, können einen Vorgang zum Erzeugen/Aktualisieren einer Benutzerbibliothek, einen Vorgang zum Erzeugen einer Zuordnung von einer Bibliothek zu einem Schlüssel eines abstrakten Objekts (z.B. eine Dokument-ID), die Berechtigungen für einen bestimmten Benutzer auf einer gegebenen Bibliothek zu aktualisieren, eine Operation zum Erstellen eines neuen Fortsetzungsdatensatzes (z. B. mit serialisierten Binärdaten für einen bestimmten Benutzer) und Bibliothek und anderen Erstellungs-/Aktualisierungsvorgängen, umfassen.
  • Operationen, die von dem Scriptinformations-Repository 206 bereitgestellt werden, die Löschungen ausführen, können eine Operation enthalten, die einen Fortsetzungsdatensatz löscht, eine Operation, die eine Zuordnung von einer Bibliothek zu einem abstrakten Objekt löscht, und eine Operation, die eine Bibliothek löscht und alle untergeordneten Objekte, einschließlich Kind, entfernt Objekte, die mit der Autorisierung und der Verlängerung verbunden sind. Eine beispielhafte logische Struktur des Script-Information-Repositoriums 206 wird unten beschrieben unter Bezugnahme auf 5.
  • Der Scriptmanager 204 kann Befehle an die darunterliegenden Komponenten 206 bis 219 des Makroserversubsystems 202 delegieren. Es folgenden Beschreibungen spezifischer beispielhafter Befehle, und die Delegierungskontrollpfade der zugrundeliegenden Komponenten 206 bis 219 sind mit einer Reihe von Fortschrittspfeilen 1 bis 6 mit Buchstaben markiert, die generell chronologisch beschriftet sind, obwohl bestimmte Aktionen, wo möglich, in einer anderen Reihenfolge auftreten können.
  • Ein Befehl, den der Scriptmanager 204 ausführen kann (z. B. durch Delegation), ist es, eine Benutzerbibliothek zu speichern. Der Befehl kann in seiner Ausführung beispielsweise beruhend auf den Benutzerprivilegien oder anderen Sicherheitselementen beschränkt sein. Wenn zum Beispiel die Benutzerbibliothek-Darstellung (z. B. ein Protobuffer bzw. Protocol Buffer) eine Bibliothek-ID beinhaltet, kann der Scriptmanager 204 sicherstellen, dass der ausführende Benutzer berechtigt ist, die Bibliothek zu ändern. Wenn eine Autorisierung erfolgt kann der Scriptmanager 204 sie in die Speicherschicht schreiben und die neue Darstellung der Bibliothek zurückgeben. Wenn keine ID vorhanden ist, kann eine neue ID erstellt und die Darstellung mit der neu erzeugten ID zurückgegeben werden. Ein Speichern einer Bibliothek kann beispielsweise ein Parsen der Funktionen in der Bibliothek (z. B. unter Verwendung des Script-Ausführers 208), Hinzufügen der Funktionen zu dem DAO-Objekt der Bibliothek, Erkennen von Syntax-Fehlern (z. B. unter Verwendung des Script-Ausführers 208), Speichern des Bibliothekinhaltes und Speichern des Besitzers involvieren. In Bezug auf 2, die Komponenten können, die beim Speichern einer Benutzerbibliothek beteiligt sind, zum Beispiel durch die Prozesspfeile 1, 2 und 6 angezeigt werden.
  • Protokollpuffer können beispielsweise, wenn sie für die Benutzerbibliotheksdarstellung verwendet werden, eine Datenstruktur enthalten, die über die Verbindungsleitung serialisiert oder in binärer Form in einer Datenbank beibehalten werden kann. Die Datenstruktur kann stark typisierte Felder verwenden, um Kommunikationsprotokolle zu ermöglichen.
  • Ein anderer Befehl, den der Scriptmanager 204 ausführen kann, ist das Importieren einer Bibliothek. Dieser Befehl kann einen Link oder eine andere Verknüpfung einer Bibliothek mit einem gegebenen Dokument erstellen (z. B. eine Tabellenkalkulation, ein E-Mail-Kalender oder jeder andere anhangfähige Kontext). Zum Beispiel kann eine E-Mail-Nachricht mit dem gegebenen Mailkonto des Benutzers verknüpft werden. Der Zweck dieses Links ist, dass das zugrundeliegende Dokument schnell feststellen kann, welches Makro damit verbunden ist, um z. B. in Menüs „Run“ anzuzeigen. Zum Beispiel kann ein Bibliothek-importierender Befehl einen Tabelleneintrag „Link“ im Datenspeicher erstellen. In Bezug auf 2, die involvierten Komponenten beim Importieren einer Bibliothek können beispielsweise durch Fortschrittspfeile 1 und 2 angezeigt werden.
  • Der Kopierbefehl, der ein anderer Befehl ist, den der Scriptmanager 204 ausführen kann, kopiert eine existierende Bibliothek, wodurch ein Duplikat seines Inhalts erzeugt wird. Zum Beispiel können alle enthaltenen Scripts und Makros in der Bibliothek zu einem neuen Bibliotheknamen kopiert werden. Während der Kopiervorgang ein Duplikat der Inhalte der Bibliothek macht, werden die Verknüpfungen nicht kopiert. Der Besitzer der neu erstellten Bibliothek wird auf den aktuellen Besitzer gesetzt. Bei Vervollständigung des Kopiervorgangs, wird die ID der neuen Bibliothek zurückgegeben. Zum Beispiel kann der Kopierbefehl einen neuen Tabelleneintrag „UserLibrary“ im Datenspeicher erstellen, ohne Links, Fortsetzungen oder Autorisierungen zu kopieren. In Bezug auf 2 können die am Kopieren einer Bibliothek beteiligten Komponenten beispielsweise durch die Prozesspfeile 1 und 2 angezeigt werden.
  • Ein Löschbibliotheksbefehl kann zum Beispiel auf Erlaubnis prüfen, und wenn dies erlaubt ist, kann er die Bibliothek aus dem Datenspeicher löschen (z. B. in den Scriptinformationen 206). Zum Beispiel kann der Befehl Bibliothek löschen den Eintrag aus der Tabelle „UserLibrary“ und allen Tochtertabellen löschen. Das Frontend kann z. B. dafür verantwortlich sein, Abfragen „Sind Sie sicher?“ durchzuführen. Die beim Löschen einer Bibliothek beteiligten Komponenten können beispielsweise durch die Prozesspfeile 1 und 2 angezeigt werden.
  • Ein Befehl zum Abrufen von Bibliotheken durch einen Benutzer kann die Bibliotheken, die einem bestimmten Benutzer gehören, basierend auf der ID des Benutzers zurückgeben. Zum Beispiel kann der Befehl die gespeicherten Einträge der Benutzerbibliothek (z. B. in einer UserLibrary- oder anderen Tabelle) in der Script-Information 206 zurückgeben, wo das Besitzerfeld der aktuelle Benutzer ist. In Bezug auf 2 können die involvierten Komponenten beim Erlangen von Bibliotheken für einen Benutzer beispielsweise durch Fortschrittspfeile 1, 2 und 4 angezeigt werden.
  • Ein Befehl, Bibliotheken nach Dokument zu erhalten, kann Bibliotheken, die von einem bestimmten Dokument importiert werden, zurückgeben. Zum Beispiel kann der Befehl Bibliotheken erhalten die Link-Tabelle nach Feldern „documented“ scannen, die übereinstimmen und die Mutter-„UserLibrary“ zurückgeben. In Bezug auf 2 können die involvierten Komponenten beim Erlangen von Bibliotheken für ein Dokument beispielsweise durch Fortschrittspfeile 1, 2 und 4 angezeigt werden.
  • Ein kategorisierender Bibliotheksbefehl kann eine Zuordnung zu einem "virtuellen" Dokument hinzufügen, z. B. "SAMPLES". Zum Beispiel kann der Befehl Bibliothek kategorisieren einen Eintrag in der Link-Tabelle mit dem gegebenen Namen erstellen (SAMPLES usw.). In Bezug auf 2 können die involvierten Komponenten beim Kategorisieren einer Bibliothek beispielsweise durch Fortschrittspfeile 1 und 2 angezeigt werden.
  • Ein Bibliotheken-für-Kategorie-Befehl kann alle Bibliotheken mit einer bestimmten Kategorisierung zurückgeben. Zum Beispiel kann der Befehl Bibliotheken für Kategorie erhalten ähnlich wie Bibliotheken für ein Dokument erhalten sein. In Bezug auf 2 können die involvierten Komponenten beim Suchen von Bibliotheken nach Kategorie beispielsweise durch Fortschrittspfeile 1 und 2 angezeigt werden.
  • Ein Auswertungsfunktionsbefehl kann die Funktion aus der Bibliothek abrufen und an den Scriptausführer 208 zur Ausführung übergeben. In Bezug auf 2 können die involvierten Komponenten beim Bewerten einer Funktion beispielsweise durch Fortschrittspfeile 1, 2, 3, 5 und 6 angezeigt werden.
  • Ein ausgewerteter Makrobefehl kann, wenn vorgesehene Eingabeparameter (z. B. Bibliotheks-ID, Makroname und kontextbezogene Informationen über das aktuelle Dokument, falls vorhanden) die programmgesteuerten Bohnen mit Wrapper erzeugen und die verpackten Dienste zum Ausführen des Script-Executors 208 zur Ausführung übergeben. In Bezug auf 2, die bei der Auswertung eines Makros beteiligten Komponenten können beispielsweise durch die Prozesspfeile 1, 2, 3, 5 und 6 angezeigt werden.
  • Ein fortschreitender Makrobefehl, wenn er eine Makro-Bibliotheks-ID und eine Fortsetzungs-ID erhält, kann er eine Fortsetzungsoperation auf dem Script-Executor 208 aufrufen. Zum Beispiel kann ein solcher Befehl ein pausiertes ausgeführtes Makro veranlassen, die Ausführung aktiv fortzusetzen. In Bezug auf 2 können die involvierten Komponenten beim Fortsetzen eines Makros beispielsweise durch Fortschrittspfeile 1, 2, 3 und 6 angezeigt werden.
  • Ein Befehl zur Aktualisierung von Berechtigungen kann für einen Satz von Berechtigungen für einen bestimmten Benutzer und eine gegebene Makrobibliothek einen Eintrag im Datenspeicher aktualisieren (oder hinzufügen). In Bezug auf 2 können die involvierten Komponenten beim Aktualisieren von Autorisierungen beispielsweise durch Fortschrittspfeile 1 und 2 angezeigt werden. In einigen Implementierungen können „get library“ und andere Befehle normalerweise nur auf die Script-Speicherschicht wirken und nicht den Script-Ausführer 208 aufrufen.
  • Unter Bezugnahme auf eine andere Komponente des Systems 200 kann das Befehlsservlet 216 Makrobefehle ausführen, indem es auf Anforderungen von einem Makrocontroller (z. B. dem JavaScript-Makrocontroller "MacroController.js") reagiert. Die Antwort kann als Umleitung auftreten, z. B. eine Umleitung, die transparent und automatisch für einen Benutzer ist. In einer beispielhaften Weiterleitungstechnik, kann eine Weiterleitungsregel im Moment, wo ein Browser-Client Anforderungen zu einer spezifischen URL macht, die Anforderung zum Makroserver richten, wie z. B. das Makroserver-Untersystem 202. Die Arten von Anforderungen, die das Befehls-Servlet 216 behandeln kann, enthalten beispielsweise mehrere Anforderungen mit Namen wie z. B., GET_ADMIN_PANEL, SET_SCRIPT usw.
  • Zum Beispiel kann eine GET_ADMIN_PANEL-Anfrage den vollständigen HTML-Inhalt des Makro-Admin-Bedienfelds zurückgeben und der Makro-Controller (z. B. MacroController.js) kann den HTML-Code in einen Schließ-Dialog einfügen. Eine Anforderung SET_SCRIPT kann den Scriptinhalt und die Benutzerbibliothek-ID an das Befehls-Servlet 216 senden. Das Befehls-Servlet 216 kann den Scriptmanager 204 aufrufen, um die Benutzerbibliothek zu erstellen/aktualisieren, was im Zurückgeben der HTML (z. B. erzeugt von einem GXP) für die linke Seite der Tafel resultiert (enthaltend die Kategorien und Bibliotheknamen). Die Makrocontroller.js können diese HTML in der div für das Panel auf der linken Seite abrufen.
  • Eine GET_SCRIPT-Anforderung kann den Scriptinhalt für die angegebene Bibliothek aus dem Script Manager abrufen und einen Inhaltsbereich (der über GXP generiert wird) zur Bearbeitung dieses Scripts zurückgeben. Der MacroController.js kann dieses HTML in das Inhalts-div des Felds setzen.
  • Eine IMPORT_LIB-Anforderung kann den Scriptmanager mit einem Import-Bibliotheksbefehl aufrufen. Die Anforderung kann die linke Seite des Felds über gxp rendern und an den MacroController.js zurückgeben.
  • Eine COPY_LIB-Anfrage kann dem Befehl IMPORT_LIB ähnlich sein, verwendet jedoch einen Kopierbefehl und nicht einen Importbefehl. Eine DELETE_LIB-Anfrage kann der IMPORT_LIB ähnlich sein, kann aber beispielsweise den delete-Befehl verwenden, um das gesamte Admin-Panel HTML über gxp zurückzugeben. Eine Anforderung CATEGORIZE_LIB kann als eine Funktion „add to samples“ verwendet werden. Wie import_lib kann CATEGORIZE_LIB den Scriptmanager mit dem Befehl kategorisieren lib aufrufen und die linke Seite des Bedienfelds zum erneuten Zeichnen zurückgeben.
  • Eine RUN_MACRO-Anforderung kann einen Makronamen, eine Bibliotheks-ID und eine serialisierte Repräsentation des Zustands des Dokuments (z. B. aktuelle Auswahl usw.) annehmen und den Script-Ausführer 208 aufrufen, um das gegebene Makro auszuführen. Wenn ein Fehler auftritt, wird dem Macrocontroller.js eine Fehlermeldung zur Anzeige an den Benutzer zurückgegeben. Wenn der Benutzer das Makro autorisieren muss, kann eine Meldung an den Macrocontroller.js zurückgesendet werden, um den Benutzer dazu aufzufordern.
  • Das Makroserver-Subsystem 202 interagiert mit den Anwendungen 220 und einem Ortsserver 222 über ein Netzwerk 224. Die Anwendungen 220 können Anwendungen sein, die von einem Benutzer durch Verwenden einer Benutzervorrichtung 226 ausgeführt werden, wie z. B. ein Webbrowser, der auf einem Notebook-Computer des Benutzers läuft. Die Benutzervorrichtung 226 kann beispielsweise eine Webseite 226a anzeigen (z. B. unter Verwendung eines Tabellenkalkulationsservers). Der Webbrowser des Benutzers kann einen Makro-Controller 226b verwenden, um die Ausführung von Makros auf der Benutzervorrichtung 226 des Benutzers zu steuern.
  • Externe Ereignisse von Drittprozessen und Webseiten 228 können als Auslösemechanismen für Makros dienen, die innerhalb des Makroserversubsystems 202 definiert sind. Die externen Ereignisse können über ein Netzwerk 230 erhalten werden, wie z. B. das Internet. Die externen Ereignisse können hier den externen Ereignissen 105 entsprechen, wie beschrieben unter Bezugnahme auf 1.
  • Die Systeme können hier auch einem Benutzer erlauben, ein Makro aufzuzeichnen, indem es einen Makrorekorder instanziiert, eine Anzahl von Aktionen durchführt, die vom Makroaufzeichner verfolgt werden, und Speichern einer Darstellung jener Aktionen, die der Benutzer später zur automatischen Ausführung der Maßnahmen aufrufen kann. Eine Makroaufzeichnung kann normalerweise auf der Serverseite in dieser Implementierung durchgeführt werden. Wenn ein Benutzer einen aufzeichnungsfähigen Befehl ausführt (z. B. Festlegen eines Zellenwerts, Einfügen einer Seite usw.) kann ein Befehl an den Tabellenkalkulationsserver gesendet werden. Dieser Server kann erkennen, ob er im „Aufzeichnungsmodus“ ist, und wenn dies der Fall ist, kann er den Befehl suchen und Text in einen laufenden Stringpuffer schreiben, der dem Scriptcode entspricht, der dieselbe Wirkung haben würde.
  • Zum Beispiel, wenn der Benutzer "hello" in Zelle A1 einer Kalkulationstabelle eintippt. Ein Befehl würde an den Tabellen-Server gesendet, samt einer Befehlskennung mit dem Wortlaut "Bereich bestimmen", einem Wert "Hallo", einer Zeile 0, einer Spalte 0 und einer Tabellenblattkennung 0 (wenn es z. B. das erste Blatt ist). Beachten Sie, dass dieser Befehl nicht nur an das Aufzeichnungsgerät ergeht, sondern tatsächlich die Änderung an der Zelle auf dem Tabellen-Server durchführt, sodass dieser Befehl unabhängig davon gesendet wird, ob gerade aufgenommen wird oder nicht. Das Aufzeichnungsgerät gleicht daher im Wesentlichen einer Abhörvorrichtung am vorhandenen Befehlsdatenfluss, der die Tabelle in Betrieb setzt.
  • Der Recorder kann die Befehls-ID nachschlagen und sehen, dass es ein "set range"-Befehl ist. Da es weiß, dass der zu erzeugende Code ein Aufruf "setValue" an einem "Bereichs"-Objekt ist, kann das Aufzeichnungsgerät nachsehen und Zeile und Spalte verwenden, um den entsprechenden Text zu erzeugen. Das Aufzeichnungsgerät kann dann unter der Tabellenblattkennung nachsehen, um zu ermitteln, ob für diese Tabelle bereits eine Variable vorhanden ist. Daraufhin würde das Makro-Aufzeichnungsgerät etwa so einen Text erzeugen:
    Figure DE202010018488U1_0005
  • Somit kann durch diese Strukturen ein Computerbenutzer sich auf einen gehosteten Computerservice anmelden und auf eine Anzahl verschiedener Anwendungen und Dienste zugreifen. Der Benutzer kann sich gezielt für die Ausführung eines Makros entscheiden oder dafür, dass das Makro automatisch ausgelöst wird, und das Makro kann in dieser und anderen einschlägigen Applikationen ausgeführt werden, die sich automatisch durch das Makro instanziieren lassen. Daraufhin kann der Benutzer auf ein breites Spektrum von Daten und Programmiermechanismen zugreifen, um solide Online-Dienste hervorzubringen.
  • 3A ist ein Flussdiagramm eines Prozesses 300 zum Bereitstellen eines Datenobjekts eines dritten Teilnehmers für einen Benutzer. Der Prozess 300 kann beispielsweise in Systemen 100 oder 200 über das Netzwerk 122 oder 228 durchgeführt werden. Im Allgemeinen beinhaltet der Prozess 300 die Verarbeitung von Benutzeranforderungen in einer Makrosprache für Dienste von Drittanbieter-Webdiensten, wobei diese Dienste unter Verwendung einer oder mehrerer anderer Sprachen oder Protokolle kommuniziert werden.
  • Der Prozess 300 beginnt in diesem Beispiel bei Box 302, wo ein System wie das System 100 in 1 besteht, analysiert WSDL in einen Satz von Diensten, die aufrufbare Methoden haben, und Datenobjekte, die Attribute aufweisen. In Schritt 304 kann das System 100 die geparste WSDL verwenden, um Java-Objekte und/oder Dienste zu erzeugen, auf die automatisiert zugegriffen werden kann. Zum Beispiel kann ein Benutzer ein Makro erstellen, um in die erzeugten Java-Objekte zu hooken, indem er einen einfachen Funktionsaufruf für einen bestimmten Dienst durchführt. Im oben beschriebenen NWS-Wetterbeispiel muss der Benutzer nur wissen, dass der Wetterdienst ein "getCurrentWeather"-Verfahren hat und dass das Verfahren ein Objekt mit einem "zipCode"-Parameter erfordert und ein Wetterobjekt mit einem "Temperatur"-Feld zurückgibt. Beispielsweise kann ein Wetterservice ein Dienstobjekt mit Methoden wie "getCurrentWeather" und "getForecast" erstellen, die jeweils eine "regionDescription" nehmen und ein "weatherStatus"-Objekt zurückgeben. Während das System 100 das WSDL scannt, kann die Dienstschnittstelle 100 eine Sammlung dieser Datenobjekte und Dienste für eine zukünftige Verwendung erzeugen.
  • Das System 100 kann Java-Reflexion verwenden, um ein Masqueraded-Objekt zu erzeugen, das zu einem auf dem System 100 laufenden Makro zurückgegeben werden kann. Java-Reflexion ist ein Merkmal der Java-Programmiersprache, bei der ein bestimmtes Objekt ein anderes Objekt maskieren kann. In Schritt 306 maskiert das System 100 die Datenobjekte als nicht existierende Objekte, sodass alle Aufrufe, die an diesem Masqueraded-Objekt ausgeführt werden, als Aufrufe mit einer Zeichenfolge für den Methodennamen und einer Gruppe von Objekten für ein verwandtes Argument enden.
  • An einem gewissen Punkt kann der Benutzer einen Dienst von dem System 100 anfordern, beispielsweise durch explizites Ausführen eines Makros oder durch implizite Ausführung eines Makrolaufs (z. B. durch Einrichten eines Ereignisses, das die Ausführung des Makros auf einem Server-Subsystem auslöst und Durch das Ereignis, das tatsächlich vorkommt und berichtet wird). Der Prozess 300 kann in Schritt 308 bestimmen, ob ein Benutzeraufruf oder eine Dienstanforderung empfangen wurde. Wenn das System 100 feststellt, dass ein Anruf nicht empfangen worden ist, kann das System 100 fortfahren, WSDL in Services oder Verfahren in Schritt 302 zu analysieren. Wenn das System 100 eine Dienstanforderung empfängt, kann das System in Schritt 310 den Dienst in einer gespeicherten Dienstregistrierung nachschlagen. Wenn der Benutzer z. B. "service.getCurrentWeather" aufruft, wird eine Methode "getCurrentWeather" als Methode bereitgestellt. Das System 100 kann dann die Zeichenfolge "getCurrentWeather" in einer gespeicherten Registry von Diensten nachschlagen.
  • In Schritt 312 kann das System 100 bestimmen, ob der angeforderte Dienst verfügbar ist. Beispielsweise kann das System erkennen, ob die Zeichenfolge "getCurrentWeather" in der Registry der Dienste verfügbar ist. Wenn der Dienst nicht verfügbar ist, kann das System 100 im Schritt 302 fortfahren, WSDL in Dienste oder Verfahren zu analysieren. Wenn die Zeichenfolge "getCurrentWeather" in der Registry der Dienste gefunden wird, weiß das System, welche Parameter erforderlich sind, um dem String basierend auf dem vorherigen Analysieren der WSDL zu übermitteln, und welche erforderlichen Parameter für den Kontakt mit dem angeforderten Dienst bereitgestellt werden können. Beispielsweise kann das System 100 feststellen, dass der String "getCurrentWeather" einen Parameter "regionDescription" erfordert und dass er eine "weatherStatus"-String zurückgibt.
  • Im Schritt 314 verwendet das System 100 die Parameterinformation, um ein Eingabeargument in einem Formular zu erstellen, das alle im Parameter "regionDescription" erforderlichen Variablen beinhaltet. In Schritt 316 führt das System 100 dann einen Web-Service-Aufruf zum eigentlichen externen Webdienst durch, der die Nutzdaten mit einer XML-Darstellung des Befehls "getCurrentWeather" und der Variablen in "regionDescription" füllt. Der externe Webdienst gibt ein Snippet von XML zurück und das System 100 erkennt dann, dass das Snippet in Schritt 318 wie ein "weatherStatus"-Objekt aussehen wird. Dementsprechend füllt das System 100 die Variablen für das Objekt "weatherStatus" unter Verwendung von Informationen aus dem zurückgegebenen XML und wandelt diese Information in Schritt 320 auch in ein maskiertes Objekt um. Wenn das Objekt "weatherStatus" beispielsweise ein "Temperatur"-Feld hat, kann das System 100 das Java-dynamische Proxyobjekt 126 erzeugen, welches weiß, dass Anforderungen für "Temperatur" einen bestimmten Wert abrufen sollten, der aus dem XML-Snippet analysiert wurde ist zurückgekommen.
  • Daher erlaubt das System 100 in dem Beispielprozess 300 einem Benutzerzugriff auf einen Drittanbieter-Webdienst unter Verwendung von Dienstanforderungsinhalt und Variablen, die erforderlich sind, um den Dienst auszuführen. Beispielsweise muss der Benutzer lediglich eine Anforderung für einen Wetterservice und die gewünschte Stelle (z. B. Postleitzahl) anfordern, um ein Wetterobjekt mit einem Temperaturfeld zu empfangen, das in einem Makro oder einer Anwendung platziert werden kann.
  • 3B ist ein Flussdiagramm eines Prozesses zum Verwalten von Computermakros. Der Prozess 330 kann zum Beispiel in Systemen 100 oder 200 über das Netzwerk 122 oder 228 ausgeführt werden. Im Allgemeinen beinhaltet der Prozess das Identifizieren eines Makros, das ausgeführt werden soll, um Zugriff auf den Makrocode für das Makro zu erhalten, während die Zeilen des Makros und das Übersetzen oder Umwandeln von Befehlen aus diesem Code in andere Protokolle oder Formate durchlaufen werden, sodass das Makro mit einem weiten Leistungsspektrum von Diensten und Anwendungen interagieren kann.
  • Der Prozess 330 beginnt im Schritt 332, wo ein Makro, das in einem gehosteten Computersystem gespeichert ist, identifiziert wird. Beispielsweise kann das Makro von einer URL identifiziert werden, die das Makro aufruft und das einen Pfad und einen Namen für das Makro beinhaltet. Ein Benutzer kann den Makro 104a zum Zugriff auf eine Wettervorhersage vom National Weather Service (http://www.nws.noaa.gov) jeden Morgen zu einem bestimmten Zeitpunkt, in einer bestimmten Postleitzahl und zum Senden des Wetters an das Handy des Benutzer erstellen.
  • In Schritt 334 kann das System 100 dann das Makro durch Durchlaufen von Zeilen von Befehlen in dem Makro ausführen. Beispielsweise kann das System 100 einen Code analysieren und ausführen, der eine Verbindung zu dem National Weather Service, einer Postleitzahl, einer Mobiltelefonnummer und einer bestimmten Tageszeit umfasst. Das System 100 kann das Makro in einer Datenbank registrieren und eines aus einer Vielzahl von verschiedenen Diensten identifizieren, die in Schritt 336 auf das Makro 104a angesprochen werden. Zum Beispiel kann das System 100 feststellen, dass das Makro 104a auf den Wettervorhersagedienst, der von http://www.nws.noaa.gov zur Verfügung gestellt wird, zutrifft.
  • In Schritt 338 wandelt das System 100 einen oder mehrere Befehle in dem Makro 104a von einem Format zu einem Befehlsformat um, das einer Makrosprache auf dem System 100 zugeordnet ist, das dem identifizierten Dienst oder den identifizierten Diensten zugeordnet ist. Eine solche Umwandlung kann auf verschiedene Arten erfolgen, beispielsweise durch Bezugnahme auf eine Befehlszuordnungsstruktur, die allgemeine Umrisse von Abbildungsoperationen zwischen Sprachen bereitstellt, und dann durch Hinzufügen geeigneter Definitionen, Variablen, Parameter oder anderer geeigneter Informationen zu den übersetzten Befehlen.
  • In bestimmten Fällen können die übersetzten Befehle Informationen von einer oder mehreren internen Diensten des Systems, das die Makros speichert und ausführt, oder von Diensten außerhalb eines solchen Systems abrufen. Somit bestimmt das System 100 im Schritt 340, ob eine Dienstinformation von einem bestimmten Dienstanbieter empfangen worden ist, nachdem eine Anforderung an den Dienstanbieter vorgenommen worden ist, wie z. B. in der Weise, die oben diskutiert wurde. Beispielsweise kann das System 100 feststellen, ob der Nationale Wetterdienst-Dienstanbieter Informationen bereitgestellt hat, die sich auf den identifizierten Makro beziehen. Wenn innerhalb eines vorbestimmten Zeitraums keine Dienstinformation empfangen oder verifiziert worden ist, reagiert das System 100 mit einer Fehlermeldung und verweigert im Schritt 342 den Zugriff auf den Dienst unter Verwendung des Makros 104a. Wenn Dienstinformation empfangen wird, bestimmt das System 100 in Schritt 344, ob vorbestimmte Quoten überschritten worden sind. Wenn die Kontingente überschritten worden sind, antwortet das System 100 im Schritt 342 mit einer Fehlermeldung und verweigert den Zugriff auf den Dienst. Wenn jedoch die Kontingente nicht überschritten worden sind, wandelt das System 100 die empfangene Dienstinformation in ein Format um, das von dem Makro 104a verwendbar ist, oder eine Anwendung, die dem Makro in Schritt 346 entspricht (und das die Informationen über das Makro oder unter der Steuerung des Makros). Das System kann dann in Schritt 348 die konvertierte Dienstinformation zu dem Makro oder einer Anwendung, die dem Makro entspricht, bereitstellen.
  • 4a ist ein Flussdiagramm eines Prozesses 400 zur Ausführung eines Makros, das von einer Webseiten-Applikation aufgerufen wird. Der Prozess beinhaltet im Allgemeinen Im Allgemeinen gleicht der in 4A abgebildete Prozess demjenigen aus 3A und zeigt Beispiele dafür, wie sich der Prozess zwischen unterschiedlichen Komponenten in einem Mehrfachkomponentensystem teilen lässt.
  • Der Beispielprozess 400 beinhaltet Schritte, die Interaktionen zwischen einem Browser 401a und einem Makroserver 401b entsprechen. An der browserseitigen Interaktion des Prozesses kann beispielsweise ein Benutzer beteiligt sein, der ein Mandantengerät verwendet, das eine Tabellenapplikation ausführt, während die ausgeführten Makros bei einem Makro-Serversystem wie etwa dem Makro-Server 401b laufen (und von diesem Daten abrufen) können. Die browserseitig abgebildeten Schritte des Prozesses 400 ergänzen generische Interaktionen ohne Beziehung zu den Makros, die zwischen dem Benutzer und der Tabellenapplikation stattfinden (z. B. von einem Tabellen-Serversystem bereitgestellt). Die makroserverseitig durchgeführten Schritte des Prozesses 400 können beispielsweise durch das Makroserver-Subsystem 202 durchgeführt werden. Der Prozess 400 kann auch Makroausführungen auf den Systemen 100 und 200 repräsentieren, die oben in Bezug zu 1 und 2 genutzt oder herbeigeführt werden. Die Schritte des Prozesses 400 auf Seite des Makroservers 401b können durch den Scriptmanager 204 gesteuert werden.
  • In dem Kasten 402 tritt eine Anforderung zum Ausführen eines Makros auf. Die Anforderung kann beispielsweise von einem Benutzer stammen, der eine Browserapplikation auf einem Mandantengerät ausführt. Der Benutzer kann eine Tastenkombination ausführen, um das Makro zu starten. Alternativ kann das Makro auch durch das Öffnen eines bestimmten Dokuments innerhalb einer Applikation, der Benutzerauswahl eines Steuerelements in der Applikation, oder durch einen von der Interaktion des Benutzers mit dem System getrennten Mechanismus gestartet werden, wie etwa durch ein externes Signal, das am Subsystem empfangen wird.
  • In Schritt 404 wird die Ausführung des Makros initiiert. Die Initiierung kann beispielsweise innerhalb des Makroserver-Subsystems 202 erfolgen. Einer Adresse entsprechender Makro-Code, die vom Mandantengerät übergeben oder identifiziert werden kann, lässt sich auf das Subsystem laden und kann dort auf normalem Weg ausgeführt werden.
  • Eine Bestimmung wird bei Schritt 406 durchgeführt, ob der Benutzer eine Berechtigung zum Ausführen des Makros bereitgestellt hat. Diese Aktion kann zu Beginn der Ausführung des Makro-Codes erfolgen. Die Benutzerautorisierung kann beispielsweise Teil eines Routinevorgangs sein, der verhindert, dass schädlicher Code ausgeführt wird, wie oben beschrieben.
  • Wenn keine Benutzerberechtigung vorhanden ist, werden die Benutzerberechtigungsanforderungen in Schritt 410 abgerufen, und der Benutzer wird in Schritt 412 zur Berechtigung aufgefordert. Wenn der Benutzer die Autorisierung in Schritt 414 erteilt, dann wird die Benutzerautorisierung in Schritt 416 gespeichert; andernfalls endet Prozess 400 bei Schritt 418. Die Autorisierungsaufforderungen des Benutzers können beispielsweise eine Typen-Liste der potenziell schädlichen Wirkungen beinhalten, die eintreten können, wenn die Ausführung des Makros genehmigt wird. Die Liste kann dem Benutzer in Schritt 412 vorgelegt werden.
  • Wenn eine Benutzerberechtigung existiert, werden verpackte Dienste in Schritt 408 erzeugt. Die umschlossenen Dienste (oder "Beans") können beispielsweise durch den Umschlagsdiensteersteller 212 erstellt werden. Diese Aktion kann optional sein und dazu verwendet werden, den ausführenden Code vor schädlichen Störungen zu schützen, wie oben beschrieben.
  • Das Script (oder Makro) wird in dem Script-Executor in Schritt 420 ausgeführt. Zum Beispiel können unter Bezugnahme auf 2, das Script kann durch die Scriptausführung 208 ausgeführt werden. Die Ausführung erfolgt z. B. innerhalb des Makroserver-Subsystems 202 im Gegensatz zur Makroausführung, die lokal auf dem Client geschieht. Die Scriptausführung kann auf normalem Weg erfolgen, wobei ein Teil des Subsystems durch die Schritte des Scripts geht und deren Handlungen Schritt für Schritt ausführt. Bei Schritt 422 wird ermittelt, ob eine Fortsetzung gefunden wurde. Wenn ja, wird die Fortsetzung in Schritt 428 gespeichert. Anhand einer Fortsetzung kann ein Script bis zu einem bestimmten Zeitpunkt oder Ereignis real angehalten werden. Wenn keine Fortsetzung gefunden wird, setzt sich der Prozess bei Schritt 424 fort, wo ermittelt wird, ob ein Fehler gefunden wurde. Wenn kein Fehler gefunden wurde, wird das Makro bei Schritt 430 erfolgreich abgeschlossen. Wenn ein Fehler in Schritt 424 gefunden wird, erhält der Benutzer bei Schritt 426 eine Warnmeldung, bevor die Ausführung des Makros bei Schritt 430 endet. Somit kann durch diesen Prozess ein Benutzer mit einer Funktionalität versorgt werden, die von einem Makro bereitgestellt wird, der durch Aktionen des Benutzers auf einem Clientgerät (oder durch andere Ereignisse) ausgelöst wird und das Makro auf einem von ihm getrennten Untersystem des Clients ausgeführt werden kann. Die Ausführung kann in manchen Fällen erfolgen, wenn der Benutzer nicht online ist, und die Ergebnisse der Makroausführung können dem Benutzer und anderen Benutzern, die auf dem System registriert sind, zur Verfügung gestellt werden.
  • Fortsetzungen können als ein "Schnappschuss" des Ausführungszustands des Scriptinterpreters dienen, so dass die Ausführung später wieder aufgenommen werden kann. Dies entspricht von der Idee her der Operationsweise eines Haltepunkts in einem Debugger oder eines "Warnung" Aufrufs bei standardmäßiger Ausführung von der Browserseite her (z. B. JavaScript). Fortsetzungen kann als eine binäre Serialisierung aller Objekte in dem Interpreter (z. B. alle lokalen Variablen und "Beans") und einen Zeiger auf den aktuellen Ausführungspunkt ausgeführt werden. Die Fortsetzung kann innerhalb der Scriptausführung 208 implementiert werden, welche die Fortsetzung als öffentlich verfügbare Funktion aktivieren kann. Alle Objekte (z. B. inkl. "Beans") können durch die Scriptausführung 208 anhand einer von Java standardmäßig bereitgestellten Serialisierungsfunktion serialisiert werden. Anhand der Java-Serialisierung kann ein Objekt (und all seine Unterobjekte) zu einem binären Datenstrom umgeschrieben werden, der Objektkennungen und den aktuellen Wert aller Felder beinhaltet. Wenn ein Makro fortgesetzt wird, können der Scriptausführung 208 die binären Fortsetzungsdaten übergeben werden, die beispielsweise für die Entserialisierung in neue Java-Live-Objekte verwendet werden können.
  • In einigen Implementierungen können Fortsetzungen in einer Datenbank gespeichert werden. Fortsetzungen werden bis zur Fortsetzung des Makros beispielsweise eher in einer Datenbank als auf dem Serverspeicher gespeichert. Ein Grund für die Datenbankspeicherung kann sein, dass ein Server zwischen dem Auslösen einer Fortsetzung und der Wiederaufnahme der Ausführung durch den Benutzer neu starten kann (z. B. durch das betätigen einer "OK"-Schaltfläche in einem Dialogfeld oder gewisse andere Wiederaufnahmeaktionen). In manchen Implementierungen können Fortsetzungen eine vorgegebene Lebensdauer haben (z. B. sechs Stunden), woraufhin sie verworfen werden können. Auf diese Weise nehmen Fortsetzungen nicht weiter Speicherplatz ein, auch wenn der Benutzer nie dazu kommt die Schaltfläche "OK" zu betätigen.
  • 4B ist ein Schwimmbahnflussdiagramm von Prozess 431 zur Aufzeichnung und Ausführung eines Makros auf einem gehosteten System. Der Beispielprozess 431 beinhaltet Interaktionen zwischen einem Browser, einem Makro-Aufzeichnungsgerät einem Makro-Server und einer Applikation. Der Prozess liefert einem Benutzer im Allgemeinen eine Reihe von Steuerelementen von einem ServerSubsystem für das Makro-Aufzeichnungsgerät, wobei der Benutzer die Steuerelemente einsetzen kann, um anzugeben, wann durch den Benutzer vorgenommene Aktionen und das System aufgezeichnet werden sollten. Diese Aktionen können dann neu in Code für ein Makro formatiert werden, das die Aktion erneut ausführt, wenn das Makro aufgerufen wird.
  • Der Prozess beginnt bei Kasten 432, wo ein Makroschreiber durch den Benutzer ausgewählt wird. Die Auswahl kann im Browser erfolgen, wenn der Benutzer beispielsweise eine Steuerelement auswählt, um mit der Aufzeichnung eines Makros zu beginnen. Das Makro-Aufzeichnungsgerät wird in Schritt 434 bereitgestellt. Das Makro-Aufzeichnungsgerät kann auf dem Browser des Benutzers ausgeführt werden, oder ortsfern, z. B. beim Makroserver-Subsystem 202. Das Makro-Aufzeichnungsgerät kann beispielsweise in einem randlosen Browserfenster angezeigt werden – getrennt von einem Fenster, das gerade eine Applikation auf dem Mandantengerät des Benutzers anzeigt. Das Aufzeichnungsgerät kann auch auf anderem Weg bereitgestellt werden, wie etwa in einem iFrame oder ähnlichem Element, das Teil derselben Seite ist, die gerade die Applikation anzeigt.
  • Im Schritt 436 wird der Makroaufzeichner mit der Anwendung angezeigt. Wenn der Benutzer beispielsweise im Browser auf seinem Laptop eine Tabellenapplikation ausführt, dann kann ein Popup-Fenster oder andere Anzeige erscheinen und das Makro-Aufzeichnungsgerät darstellen. Das Makro-Aufzeichnungsgerät kann samt mehrerer Steuerelemente zur Bedienung des Aufzeichnungsgeräts angezeigt werden, wie etwa Schaltflächen für Aufzeichnen, Pause und Stopp, die ein Benutzer auswählen kann. Die Aufzeichnung wird bei Schritt 438 gestartet, d. h. der Benutzer kann mit Tasteneingaben usw. zur Definition des Makros beginnen. Diese Aufzeichnung kann durch eine Nachricht hervorgerufen werden, die zum Server-Subsystem gesendet wird, welches das Aufzeichnungsgerät mittels des Anzeige-Codes für das Aufzeichnungsgerät bereitstellt, wobei angegeben wird, dass ein Benutzer ein Aufzeichnungs-Steuerelement auf dem Aufzeichnungsgerät ausgewählt hat.
  • In Schritt 440 interagiert der Benutzer mit der Anwendung bzw. den Anwendungen, was bedeutet, dass der Benutzer die Operationen (Tastenanschläge, Selektionen usw.) ausführt, die die Funktionalität des Makros innerhalb der von dem Benutzer verwendeten Anwendung(en) definieren sollen. Der Benutzer kann beispielsweise eine Reihe von Zellen in einer Tabelle auswählen, Befehle für diese Zellen ausführen (z. B. Kopieren, Einfügen, Formeln eingeben usw.) oder andere Aktionen dieser Art durchführen.
  • In Schritt 442 beginnt die Makroaufzeichnungseinrichtung während der Zeit, in der der Benutzer mit der Anwendung/den Anwendungen interagiert, die Aktionen des Benutzers aufzuzeichnen, die Anzeigen von Befehlen enthalten können, wie sie vom Benutzer während des Aufzeichnungsprozesses aufgezeichnet werden. Oben wurde bereits darauf hingewiesen, dass das Aufzeichnungsgerät die Eingaben in gleicher Weise interpretiert, wie dies die Applikation/en tut/tun, und diese interpretierten Aktionen in Befehle umwandeln kann, die das Makro später bei seiner Ausführung den Applikationen zuführt. Der Recorder kann auch die Anwendung (z. B. Browserfenster) verfolgen, in der ein Benutzer Befehle ausführt, sodass das Makro wissen kann, dass es Befehle für die verschiedenen Anwendungen bereitstellen kann, wenn es ausgeführt wird.
  • Während der Benutzer mit den Anwendungen interagiert und die Aktionen aufgezeichnet werden, wird eine Standardausführung der Aktionen des Benutzers im Schritt 444 bereitgestellt. Die Ausführung kann innerhalb der Applikation(en) erfolgen, mit der/denen der Benutzer interagiert. Die Benutzeraktionen können somit parallel an Applikation und Aufzeichnungsgerät geliefert werden, sodass die Aktionen aufgezeichnet werden und auch seitens der Applikation richtig auf sie reagiert wird.
  • Nach Beendigung des Definierens des Makros wird ein Sicherungsbefehl vom Benutzer empfangen, z. B. durch Drücken der Taste "Fertig", eines "Stopp"-Knopfes im Rekorder oder einer anderen Steuerung. Bei Schritt 448 werden die Informationen für das Makro gesendet. Diese Informationen können zum Aufzeichnungszeitpunkt zu Makro-Befehlen uminterpretiert werden, wenn der Benutzer Makro-Befehl ausführt, oder können nach Anhalten der Aufzeichnung interpretiert und konvertiert werden. Das Makro-Aufzeichnungsgerät kann dann Informationen beispielsweise an einen Makro-Speicher senden und einen oder mehr Zeiger (z. B. URLs) auf den Makro-Code generieren, sodass zu einem späteren Zeitpunkt leicht auf den Code zugegriffen werden kann. Das Makro-Aufzeichnungsgerät kann den Benutzer dazu auffordern, eine Schlüsselkombination zu benennen, anhand derer das Makro zu einem späteren Zeitpunkt aufgerufen werden kann.
  • Bei Schritt 450 werden die Makroinformationen gespeichert, einschließlich des Bibliotheksnamens (um den Makro zu speichern), des Script- oder Makroinhalts (wie vom Makroaufzeichnungsgerät aufgezeichnet) und der Benutzer-ID. Weitere Informationen können auch gespeichert und passend zum Makro korreliert werden.
  • Später, entweder einige Momente später oder Tage bis Jahre später, wenn der Benutzer entscheidet, das Makro auszuführen, kann der Benutzer das Makro angeben, das ausgeführt werden soll. Auswahl des Makros kann beispielsweise dadurch erfolgen, dass der Makro-Name aus einer Liste von Makros ausgewählt wird, die für die Applikation(en) definiert sind, mit denen der Benutzer gerade interagiert. Eine für den Benutzer zugängliche Liste von Makros kann beispielsweise in Zusammenhang mit dem Konto des Benutzers gespeichert werden und diese können dem Benutzer in aufgelisteter Form (und mit einem sinnvollen Namen für jedes Makro vom Ersteller) angezeigt werden. Alternativ kann das Makro automatisch ausgewählt werden, beispielsweise wenn andere Makros ausgeführt werden, sich etwas im System unabhängig von bestimmten Benutzeraktionen ereignet oder auf andere Weise. Der Benutzer kann das gespeicherte Makro auch für andere Benutzer verfügbar machen, indem er beispielsweise dazu aufgefordert wird, E-Mail-Adressen oder andere Kontokennungen derjenigen Benutzer anzugeben, denen er das Makro zur Verfügung stellen möchte. Der Benutzer kann auch eine Gruppe von anderen Benutzern bereitstellen, beispielsweise indem er auf eine Messaging-Gruppe (z. B. eine E-Mail-Liste) oder alle Benutzer für eine bestimmte Domäne oder Subdomain (z. B. alle Benutzer, die auf das System von dem Arbeitgeber des Benutzers zugreifen) verweist.
  • Zum Beispiel kann die Eingabe zum Ausführen des Makros wahlweise im Schritt 452a empfangen werden, so zum Beispiel vom Benutzer. Alternativ kann ein Auslöseereignis zur Ausführung des Makros bei Schritt 452b eintreten. Bei beiden Mechanismen wird der dem Makro entsprechende Makro-Code empfangen und bei Schritt 454 ausgeführt.
  • In den Anfangsphasen der Makroausführung werden Objekte in Schritt 456 für die APIs entsprechend den Anwendungen, die dem Makro zugeordnet sind, erzeugt. Diese Objekte können Objekte repräsentieren, die für die Ausführung des Makros benötigt werden und können beispielsweise Objekte, die Befehle von einem in ein anderes Format übersetzen, Objekte, die andere Objekte umschließen, Objekte, die Kontingente auferlegen und sonstige Objekte dieser Art beinhalten.
  • Die Objekte werden bei Schritt 458 in eine Sicherheits-Wrapper eingewickelt. Das Umschließen kann durch den oben beschriebenen Mechanismus erfolgen und kann dazu dienen, den Benutzer davor zu schützen, schädliche Codes auf dem System auszuführen.
  • Im Schritt 460 wird die Anwendung mit der Benutzer-ID aufgerufen (oder aufgerufen oder ausgeführt). Das Aufrufen der Anwendung kann durch das Makroserveruntersystem 202 durchgeführt werden. Die Benutzerkennung ist im Aufruf Enthalten, um Autorisierungen zu prüfen, indem beispielsweise sichergestellt wird, dass der Benutzer autorisiert ist, bestimmte Dateien usw. zu lesen, zu aktualisieren oder zu löschen.
  • Bei Schritt 462 werden Aktionen in Bezug auf die Schritte ausgeführt, die in den aufgerufenen Anwendungen ausgeführt werden sollen. Die Aktionen können beispielsweise individuellen Anweisungen oder Schritten entsprechen, die in einem aufgezeichneten Makro erfasst wurden. Die Ausführung der Schritte erfolgt in der Applikation, die physisch vom Browser, auf dem das Makro aufgezeichnet wurde, getrennt sein kann. Das Makro kann tatsächlich in manchen Beispielen durch einen komplett anderen Benutzer in einem anderen Browser aufgezeichnet und gespeichert worden sein. In diesen Fällen kann der andere Benutzer möglicherweise ein Freund oder Familienmitglied sein, dem die Nutzung des Makros durch den Benutzer, der es ursprünglich aufgezeichnet hat, gestattet wurde.
  • In Schritt 464 werden Schlüssel zurückgegeben, die für die weitere Ausführung notwendig sind. Diese Schlüssel können beispielsweise Eingaben beinhalten, die durch Benutzer geliefert, oder Parameter, die durch die Applikation selbst übergeben wurden. Die von einer Zielapplikation (z. B. eine Tabellenapplikation) zurückgegebenen "Schlüssel" können beliebige Elemente identifizieren, deren Status sich infolge eines erfolgten Befehls geändert haben kann. Ein INSERT_SHEET-Befehl kann beispielsweise eine neue Tabelle zur aktuellen Tabelle machen. Das Makro kann andere Befehle haben (z. B. getActiveSheet), die benutzbar sind, um die neue, aktuelle Tabelle zu reflektieren. Andere Befehle (z. B. INSERT_ROW) können die aktuelle Auswahl ändern, indem sie eine Änderung der aktuell aktiven Zellen vornehmen. Aktuelle Status- und Auswahldaten können an das Makro zwecks Speicherung zurückgegeben werden, falls irgendwelche nachfolgenden Befehle die Informationen benötigen (z. B. getActiveSelection).
  • Die Schritte 460, 462 und 464 können fortlaufend relativ gleichzeitig laufen, bis das Makro abgeschlossen ist. Das Ende ist erreicht, wenn die letzte Anweisung gefunden und bei Schritt 462 ausgeführt wird, oder wenn während der Ausführung des Makros ein Ereignis eintritt, dass die Ausführung des Makros stoppt.
  • 5 zeigt eine Beispielstruktur für Objekte in einem Makro-System, genauer ein Beispiel für eine logische Struktur für Informationen in einer Struktur, wie etwa das Scriptinformations-Repositorium 206 in 2. Die logische Struktur 500 wird durch Knoten 502 bis 508 dargestellt. Für jedes beliebige Makro, das beispielsweise im Script-Repositorium 206 gespeichert ist, kann es mindestens eine Struktur 500 oder Teile davon geben. Fortsetzungsknoten 504, Verknüpfungsknoten 506 und Benutzerautorisierungsknoten 508 haben alle eine 0..N-Beziehung zum Benutzerbibliotheksknoten 502, d. h. dass es für jeden Benutzerbibliotheks-(oder Kopfbereichs-)Knoten auch eine beliebige Zahl (einschließlich Null) von Fortsetzungen, Verknüpfungen und Benutzerautorisierungen geben kann.
  • Der Wurzelknoten der Struktur wird als der Benutzerbibliotheksknoten 502 bezeichnet, der beispielsweise den Namen des Makros und/oder der Bibliothek definiert (z. B. "Macro_XYZ" in "Dan's Cloud-basierte MacroLib"), der Eigentümer der Makrobibliothek (z B. "Dan") und das Script (z.B. Makrocode), das dem Makro zugeordnet ist. Jede Makro-Bibliothek kann eine eindeutige Kennung haben, wie etwa eine 64-Bit Pseudozufallsnummer, die auch als Datenbank-Primärschlüssel dienen kann. In manchen Implementierungen werden Felder, wie etwa der Bibliotheksname und die Reihe von Funktionen, die in der Bibliothek enthalten sind, nicht verwendet, wenn ein Makro von der Datenbank abgerufen wird; sie werden ausschließlich bei Ausführung/Anzeige der Makro-Bibliothek verwendet. Das Feld "Inhaber" kann beispielsweise als Fremdschlüssel bei Arbeitsgängen wie etwa "alle Makros im Besitz von XYZ abrufen" verwendet werden. Die Verknüpfungstabelle kann beispielsweise bei Arbeitsgängen wie etwa "alle von Dokument XYZ verwendeten Makros abrufen" verwendet werden.
  • Der Fortsetzungsknoten 504 kann eine Fortsetzungs-ID, Fortsetzungsdaten (z. B. von zusätzlichen Eintrittspunkten, wie zum Wiederaufnehmen des Makros mit zusätzlichen Eingaben sein, nachdem das Makro in einen Wartezustand gegangen ist) und einen Benutzernamen (z.B. Erzeugen des Fortsetzungsknotens 504). Für ein gegebenes Makro kann es mehrere Fortsetzungsknoten 504 geben. Der "Inhaber" einer Fortsetzung kann primär deshalb aufgezeichnet werden, um Sitzungsentführungen zu unterbinden, sodass Benutzer X beispielsweise kein Makro fortsetzen kann, das als Benutzer Y ausgeführt wurde. Auf diesem Weg können Vorgänge sicherstellen, dass nur Benutzer Y ein Makro fortsetzen können, das von ihnen initiiert wurde. Mehrere dieser Aufzeichnungen können zulässig sein, denn ein Benutzer kann mehrere Fortsetzungen haben (z. B. drei in unterschiedlichen Fenstern geöffnete Tabellen, die alle eine aktive Dialogfeldaufforderung haben). Mehrere Benutzer können auch gleichzeitig ihre eigenen Makroanforderungen ausführen, jede mit ihrer eigenen Dialogfeldaufforderung.
  • Der Verbindungsknoten 504 ermöglicht es externen Einheiten, sich mit dem Makro zu verknüpfen. Der Verknüpfungsknoten 504 kann eine Dokumentenkennung beinhalten, welche der URL oder gewisse andere Pfadnamen sein können, die auf das Makro "zeigen". Es können mehrere Verknüpfungsknoten 506 vorhanden sein, denn dasselbe Makro kann mehrere verschiedene Namen (und mehrere verschiedene URL-Pfade oder andere Pfade) haben.
  • Der Benutzerberechtigungsknoten 508 kann Informationen enthalten, die einen beschränkten Zugriff auf das Makro ermöglichen. Ein Einschränkungs-Proto-Pufferfeld kann den Zugriff anhand eines Protokollwertemusters steuern, während ein Benutzerfeld den Zugriff ausgehend von einer Benutzerkennung steuert. Eines der beiden oder beide können in jedem Knoten 508 verwendet werden. Für ein gegebenes Makro können mehrere Benutzerautorisierungsknoten 508 vorhanden sein, wovon jeder eine andere Autorisierungsstufe identifiziert. Der Benutzerautorisierungsknoten 508 kann nur die Existenz eines Autorisierungsdatensatzes pro Benutzer und Makro erzwingen. Die Erzwingung kann zur Ausführung dieses Makros und der Dinge, die es tun kann, eine Darstellung des Genehmigungsstempels des Benutzers verwenden. Mehrere Datensätze können nur aus dem Grund zulässig sein, wenn unterschiedliche Benutzer das Makro möglicherweise getrennt voneinander und zur Ausführung unterschiedlicher Aktionen autorisiert haben. Wenn Benutzer X ein Makro ausführen, dann wird ihr Autorisierungsdatensatz für dieses Makro abgerufen und alle anderen ignoriert.
  • Wenn die Anforderungen für eine Makroänderung (z. B. wenn der Autor einen Aufruf an einen Blogger hinzufügt), der die Anforderungen, die das Makro ausführen muss, verändert, können die vorhandenen Benutzerberechtigungen als ungültig markiert werden. Infolgedessen können Benutzer erneut zur Autorisierung aufgefordert werden, wenn sie versuchen das Makro nach Hinzufügen der Zusatzanforderung erneut auszuführen. Die Aufforderung kann beispielsweise "dieses Makro erfordert Zugriff auf Kalender und Blogger" lauten, wohingegen das Makro zuvor einfach "dieses Makro erfordert Zugriff auf Kalender" gelautet hat. Wenn Dienste gelöscht werden, kann die Autorisierungsaufforderung entfallen, sie wird nur benötigt, wenn die Anforderungen steigen.
  • 6 zeigt eine Beispielbildschirmaufnahme eines Makro-Konstruktionssystems 600. Dieses System dient einem Benutzer beispielsweise dazu, Parameter und Regeln für Makros festzulegen. Diese Makros können dann z. B. aufgrund externer Ereignisse oder nach Wahl des Benutzers von Hand ausgeführt werden. Das System unterteilt die Makrokonstruktion allgemein in drei Phasen, von denen jede in einer Spalte der Bildschirmaufnahme abgebildet ist. Jede Phase (einschließlich der Subphasen innerhalb jeder Phase) kann sich im Zuge der Konfiguration vorangehender Phasen ändern. Auslöser, für den gewählten Auslöser verfügbare Arbeitsparameter und die den gewählten Parametern entsprechenden Ergebnisse eines Makros lassen sich mittels eines solchen Systems vom Benutzer rasch identifizieren.
  • In einem Beispiel kann der Benutzer ein Makro konstruieren, das eine E-Mail-Funktion auf der Basis eines E-Mail-Ereignisses ausführt. Das Makro kann des Weiteren auch so konstruiert werden, dass es nicht e-mailbezogene Arbeitsgänge durchführt (z. B. Tabellen, Textverarbeitungsprogramme usw.). Noch weiter kann der Benutzer ein Makro auch so konstruieren, dass es zwar etwas ausgibt, aber nicht von einem Auslöseereignis abhängt. Unabhängig von der Art der Applikationen, die diese Ausgaben auslösen, kann das entsprechende Makro automatisch infolge des bloßen Treffens einer Auswahl auf dem Bildschirm durch den Benutzer konstruiert werden. Eingaben und Auswahl des Benutzers auf der Benutzeroberfläche, die in 6 abgebildet ist, können beispielsweise von im Hintergrund ausgeführte Softwareapplikationen verarbeitet werden. Aus Eingaben und Auswahl kann automatisch ein Makro konstruiert werden samt Einfügen der passenden Makrosyntax, mehrerer applikations- und sprachenspezifischer API-Aufrufe und anderen Komponenten des Makros, die für seine Ausführung erforderlich sind. All dies kann für den Benutzer transparent sein, der einfach ein paar Eingaben in ein paar Felder eingibt, die sinnvoll sind.
  • Der Screenshot 600 beinhaltet ein Makronamensfeld 601, das das momentan konstruierte Makro (z. B. wie anfänglich durch den Benutzer definiert oder später aktualisiert) identifiziert. Wie oben erwähnt kommen für die Definition des Makros drei allgemeine Bereiche infrage: ein Makroauslöser-Datenbereich 602, ein Makroverarbeitungs-Datenbereich 604 und ein Makroausgabe-Datenbereich 606. Der Makroauslöser-Datenbereich 602 beinhaltet Steuerelemente und Felder, anhand derer der Benutzer über Bedingungen und Ereignisse zur Auslösung des Makros entscheiden und diese identifizieren kann. Anhand des Makroverarbeitungs-Datenbereichs 604 kann die bei Ausführung des Makros laufende Verarbeitung definiert werden. Der Makroausgabe-Datenbereich 606 kann die Ausgabe des Makros identifizieren, wie etwa die Art der Applikationsdaten, auf die das Makro angewendet wird und die an diesen Daten vorgenommenen Aktionen (oder Operationen). Zusätzlich zu den Datenbereichen 602606 gibt es möglicherweise andere Datendefinitionsbereiche, wie etwa Multimakroausgabe-Datenbereiche 606 für Fälle, in denen Daten in mehreren Applikationen von demselben Makro aktualisiert werden sollen. In manchen Implementierungen können Techniken zum Bestätigen/Zurücksetzen verwendet werden, um sicherzustellen, dass alle oder keine der Aktualisierungen ausgeführt werden, was zum Schutz der Datenintegrität beiträgt.
  • Die drei Datenbereiche 602, 604 und 606 können so ausgelegt sein, dass sie in der Regel nacheinander abgeschlossen werden. Die Benutzerauswahl eines Bereichs kann sich in manchen Implementierungen darauf auswirken, was im Feld oder Steuerelement darunter oder rechts von dem Bereich angezeigt wird. Dateneingaben im Makroauslöser-Datenbereich 602 können sich beispielsweise auf die Arten der Felder und Datenauswahl auswirken, die in anderen Bereichen (z. B. Datenbereiche 604 und 606) angezeigt werden (oder für den Benutzer wählbar sind). Wenn der Benutzer beispielsweise "E-Mail" als Auslösemechanismus des Makros auswählt (z. B. indem er "E-Mail" im Eigenschaftsfeld 608 angibt oder auswählt), dann können die verfügbaren Auswahlmöglichkeiten im Makroverarbeitungs-Datenbereich 604 auf E-Mail-Eigenschaften zugeschnitten sein.
  • Der Makro-Trigger-Datenbereich 602, wie in diesem Beispiel dargestellt, beinhaltet ein Eigenschaftsfeld 608, ein Aktivitätsfeld 610 und ein Parameterfeld 611. Die im Aktivitätsfeld 610 angezeigten (und vom Benutzer wählbaren) Werte können davon abhängen, was der Benutzer im Eigenschaftsfeld 608 ausgewählt hat. Wird im Eigenschaftsfeld 608 beispielsweise "E-Mail" gewählt, dann beinhaltet das Aktivitätsfeld 610 e-mailbezogene Auswahlmöglichkeiten (z. B. eingehende Nachricht, Größe des Posteingangs, Größe der Markierung usw.) Die Wahl einer anderen Eigenschaft (z. B. Online-Versteigerung) kann im Aktivitätsfeld 610 zu einer anderen Liste von Einträgen führen (z. B. Anzahl Artikel, Artikelkategorie usw.) Anhand des Parameterfeldes 611 kann man einer Aktivität einen Wert zuweisen. Zu den möglichen Werten, die vom Benutzer im Parameterfeld 611 eingegeben oder ausgewählt werden können gehören beispielsweise: Größen, Farben, Dollarbeträge, Zeitabschnitte, Sprache, Geschlecht oder so ziemlich jeder beliebige qualitative oder quantitative Wert, der zu der bestimmten Applikation passt. Je nach dem Wert des Aktivitätsfelds 610 können in manchen Implementierungen Bezeichnungen im Parameterfeld 611 automatisch erfolgen (z. B. Größe, Farbe, Preis usw.)
  • Der Makroverarbeitungsdatenbereich 604 beinhaltet ein Zustandsfeld 612, ein Prüfdienstfeld 614 und ein Dienstleistungsfeld 616. Das Bedingungsfeld 612 bietet Auswahlmöglichkeiten für das Nennen von Bedingungen, die das Makro veranlassen gewisse Aktionen auszulösen (z. B. dass eine eingehende E-Mail auf eine bestimmte Weise weitergeleitet wird). Die exakten Werte (z.B. "vom Benutzer" oder "vom Benutzer in der Gruppe" usw.), die im Bedingungsfeld 612 angezeigt werden, können z. B. vom Eintrag des Benutzers (z. B. "E-Mail") im Eigenschaftsfeld abhängen 608. Wenn der Benutzer für das Objektfeld 608 einen anderen Wert wählt (zum Beispiel "Kalkulationstabelle "), kann ein andere Satz von Werten im Bedingungsfeld 612 (zum Beispiel im Zusammenhang mit Tabellen) angezeigt werden.
  • Das Prüfdienstfeld 614 kann Dienste außerhalb der Anwendung und des Makros identifizieren, die von dem Makro geprüft werden sollen, um Informationen für das Ausführen des Makros zu sammeln. Wird im Dienstprüffeld 614 z. B. "Locator" ausgewählt, so kann der Benutzer dadurch definieren, dass das Makro bei seiner Ausführung den Standort des Senders, den Standort des Benutzers X oder den Standort eines bestimmten Benutzers, der in der Cc-Zeile einer E-Mail steht, oder eine andere Auswahl prüfen sollte. Das Dienstwertefeld 616 identifiziert die bestimmten Werte, die an das Makro von dem Dienst oder den Diensten, auf die verwiesen wird, zurückgegeben werden sollen. Bei den Standorten kann es sich beispielsweise um echtzeitnahe Verarbeitung von GPS-Daten, auf Triangulierung basierende GSM-Ortung, Straßenadressen, Postleitzahlen oder jedwedes passende Ortungskriterium handeln.
  • In einigen Implementierungen kann der Makroverarbeitungsdatenbereich 604 verschiedene Mechanismen zum Verwenden Boolescher Operatoren in Makros beinhalten. Diese Mechanismen können das implizite "UND", das durch das Vorhandensein eines Bedingungsfelds 612 UND eines Dienstprüffelds 614 nahegelegt wird, ergänzen. Anhand des Bedingungsfelds 612 kann die Spezifizierung der UND/ODER-Operatoren und Logik mit einer Reihe von Any/All-Steuerungen 617, die als Optionsschaltflächen abgebildet sind, erleichtert werden. Beispielsweise kann der Benutzer die Option "Alle" (oder die Option "Alle") der beliebigen/oder aller Steuerelemente 617 auswählen, um festzulegen, dass irgendwelche (oder alle) der einzelnen Optionen, die in dem Kontrolldienst-Feld 614 überprüft werden, Für das Makro berücksichtigt werden.
  • In einigen Implementierungen können zusätzliche Boolesche Steuerelemente und Felder für andere Felder usw. auf dem Makrokonstruktionssystem 600 bereitgestellt werden, wie beispielsweise die direkte Texteingabe von Feldnamen, Feldwerten, booleschen Operatoren und die gut platzierten Klammern. Diese Arten oder erweitertere Arten von Bedienelementen können beispielsweise in Anzeigen oder andere Schnittstellen mit aufgenommen werden, auf die durch Wahl eines erweiterten Booleschen Bedienelements 618 zugegriffen werden kann. Durch Verwenden der erweiterten booleschen Bedienelements 618 kann der Benutzer in manchen Implementierungen die bestehende Logik für das gesamte Makro sehen. Er kann nun die durch Auswahl und Eingaben von Benutzern aktualisierte Logik aus den Datenbereichen 602 bis 606 mit darin aufnehmen. Das System 600 kann automatische Syntaxprüfungen durchführen, um zu kontrollieren, das Felder, die vom Benutzer eingegeben (oder aus einer Liste gewählt wurden) mit den Werten kompatibel sind, die zur Prüfung herangezogen werden.
  • Der Makroausgangsdatenbereich 606 beinhaltet ein Eigenschaftsfeld 620, ein Aktionsfeld 622 und ein Parameterfeld 624. Diese Felder können beispielsweise dafür verwendet werden, die bestimmte Ausgabe des Makros festzulegen (z. B. tue dies, sende das, aktualisiere eine bestimmte Datei, Feld oder Tabellenzelle). Im Beispiel, dargestellt in 6, ist als Eigenschaft 620 "E-Mail" ausgewählt worden, woraufhin im Aktionsfeld 622 e-mailbezogene Einträge angezeigt werden. Die Ausgabe dieses Makros besteht also darin, eine Art von E-Mail an eine gewisse Adresse oder Adressen zu senden.
  • Das Parameterfeld 624 kann bei Bedarf (z. B. basierend auf Selektionen und Feldern darüber) verwendet werden, um einem Feld oder einer Selektion einen Wert zuzuweisen. Feldwerte können im Feld hinterlegt sein, sodass durch Doppelklick ein Popup zur Definition eines Werts für das Feld und durch darauf Zeigen mit der Maus der aktuelle Feldwert angezeigt werden kann.
  • Im Beispiel des Makrokonstruktionsbildschirms wie in 6 dargestellt ist, wird der Makroauslöser-Datenbereich 602 so definiert, dass das Makro bei Empfang einer "eingehenden Nachricht" (z. B. im Aktivitätsfeld 610 identifiziert) von einer E-Mail-Applikation (z. B. gemäß Eigenschaftsfeld 608) ausgelöst wird. Der Makroverarbeitungs-Datenbereich 604 beinhaltet Bedingungen 612 zur Bestimmung eines bestimmten Benutzers, der bestimmte Wörter im Textkörper der E-Mail beinhaltet, und basierend auf dem Standort von Benutzer X. Die Werte für diese Bedingungen können beispielsweise in anderen Parameterfeldern (nicht in 6 abgebildet) definiert werden. Das Makro wird also bei Erfüllung dieser Bedingungen vollständig ausgeführt. Der Makroausgabe-Datenbereich 606 zeigt, dass "E-Mail" die Ausgabeart des aktuellen Makros ist und dass die durchzuführende Aktion "Schreib mir eine SMS" lautet (z. B. so im Aktionsfeld 622 definiert). Als Ergebnis der Werte, die in den Datenbereichen 602 bis 606 eingegeben werden, wird bei der Erfassung eines auslösenden Ereignisses einer eingehenden E-Mail-Nachricht von einem bestimmten Benutzer, die bestimmte Wörter in der Betreffzeile beinhaltet, und basierend auf der Position des Benutzers X, das Makro erfasst und eine Messaging-Anwendung verwendet, um eine Textnachricht an das Ziel der eingehenden E-Mail zu senden und mitzuteilen, dass eine solche E-Mail empfangen wurde. Zu den Vorteilen der Makrokonstruktionsanzeige gehört, dass sie dem Benutzer diese Informationen in einem übersichtlichen GUI-Format liefert und das darunterliegende Makro, welches die Funktion erbringt, ausblendet. Der Benutzer braucht nicht einmal zu wissen, wie man ein Makro schreibt, geschweige denn eines erkennt. Anhand der Anzeige kann ein vollständiges oder ein Teil eines Makros konstruiert werden, und der Benutzer kann darin dem Makro Code hinzufügen, der nicht in der Anzeige bereitgestellt werden konnte.
  • Die Benutzeroberfläche zum Definieren der Makros kann beispielsweise Schaltflächen oder Steuerelemente 626 umfassen, um das Makro, das eingegeben oder aktualisiert wird, zu "speichern", und um ein oder mehrere Aktualisierungen oder Änderungen an dem Makro "rückgängig zu machen", wodurch resultierendes Makro "angezeigt" oder die Bearbeitung ohne das Speichern abzubrechen durchgeführt werden kann. Anhand eines "Copy from" (kopieren von) Felds 628 kann der Benutzer ein neues Makro erstellen oder definieren, indem er ein vorhandenes Makro kopiert, oder Parameter für ein vorhandenes Makro kopieren, um die Anzeige in einen voreingestellten Anfangszustand zu versetzen, den der Benutzer dann ändern kann. Anhand eines Beschreibungsfelds 630 kann der Benutzer den Sinn oder Zweck eines Makros näher bestimmen, sofern dies nicht aus dem Namen des Makro hervorgeht.
  • In einigen Implementierungen können Makrodefinitionen mit ihnen verbundene Zeitelemente aufweisen, wie beispielsweise ein effektives Datum 632 für den Zeitpunkt, zu dem das Makro wirksam wird, ein Ablaufdatum 634, wenn das Makro nicht mehr ausgeführt wird, und ein Zeitplan oder " Feld 636, das zum Beispiel verwendet werden kann, um die Tage (Wochentage, Montagen, Wochenenden usw.) anzugeben, die das Makro ausführt. Datumsfelder können bestimmte Daten oder Datenbereiche und/oder Zeiten oder Aufzählungsformen (z. B. jetzt, nie, an Wochentagen usw.) beinhalten.
  • In einigen Implementierungen kann die Benutzerschnittstelle, die von dem System 600 bereitgestellt wird, so angepasst sein, um auf Benutzergeräten mit kleineren Anzeigen, wie Smartphones, etc., ausgeführt zu werden. Die Datenbereiche 602 bis 606 und andere Felder können beispielsweise sequenziell geliefert werden. Bildlaufleisten können in manchen Implementierungen für den gesamten Bildschirm geliefert werden, damit der Benutzer jeweils einen allgemeinen Bereich auf einmal ansteuern kann.
  • Die mit dem System 600 aufgebauten Makros können mit den oben beschriebenen Sicherheitsaspekten in Bezug auf die Systeme 100 und 200 und die 1 und 2 genutzt oder herbeigeführt werden. Insbesondere kann jedes konstruierte Makro von einem fähigkeitenbasierten Sicherheits-Wrapper umschlossen werden. Das System 600 kann sicherheitsbezogene Felder beinhalten (nicht abgebildet), die Sicherheit vereinfachen, inkl. Name anderer Benutzer, die die Makros verwenden dürfen, und Ausmaß der für sie zulässigen Arbeitsgänge (z. B. E-Mail senden, Tabellen aktualisieren usw.).
  • Diese fähigkeitsbasierte Sicherheit kann Vorteile bieten, indem sie die Intentionen eines Benutzers berücksichtigt, wenn er den Code zur Ausführung autorisiert. In einem solchen System erstellt der ausführende Benutzer beispielsweise Objekte, die Fähigkeiten genannt werden. In diesen Objekten sind all die Arbeitsgänge verkapselt, die der Benutzer zulassen möchte. Der Benutzer gibt diese Objekte an nicht vertrauenswürdigen Code weiter, der ausgeführt werden soll. Diese Objekte werden zu einem Teil der Nutzlast (z. B. Teil des Wrappers), wenn das System nicht vertrauenswürdigen Code ausführt, und können vom vertrauensunwürdigen Code nicht verändert oder erstellt werden. Wenn der nicht vertrauenswürdige Code versucht, auf hinterlegte, vertrauenswürdige Objekte zuzugreifen (für gewöhnlich bspw. ein Dateiensystem usw.), dann ist dies für ihn nur über ein vom Benutzer erstelltes Objekt möglich, das die vertrauenswürdige Ressource umschließt. Fähigkeiten können dem Zugriff, der nicht vertrauenswürdigem Code zu gestatten ist, feinkörnig kontrollieren und können eine Ausführungsumgebung aufbauen, die nach dem Prinzip der geringsten Rechte verfährt. Das heißt dass beliebig vorhandene Module nur die geringste Reihe jener Aktionen durchführen dürfen, die für die Ausübung ihrer Funktionen unabdingbar sind, und nicht mehr.
  • Die folgenden Abschnitte beschreiben eine Reihe von Beispielen für die Verwendung solcher Systeme und Prozesse, von denen viele erklären, wie ein System die fähigkeitsbasierte Sicherheit nutzen kann, um jeden dieser Fälle zu behandeln, wie einige Risiken, die ein Teil dieser Beispiele sein kann, zu mildern.
  • Beispiel Nr. 1: Durchsetzung von Verkaufsrichtlinien
  • Stellen Sie sich ein Szenario vor, in dem die Vertriebsabteilung für eine Organisation, in einer Kalkulationstabelle, Vorschläge für potenzielle Kunden erstellt. Die Tabelle beinhaltet sämtliche Kosten der Produkte und Eigenschaften, die das Unternehmen herstellt. Eine Vertriebsmitarbeiterin, die durch die Tabelle geht, markiert einzelne Eigenschaften in der danebenliegenden Spalte als aktiv (1) (d. h. derzeit an Lager) oder inaktiv (0). Die Tabelle beinhaltet möglicherweise Formeln zur Berechnung von Preisen, inkl. verschiedene Preisnachlässe und Preismultiplikatoren.
  • Möglicherweise gibt es viele Abhängigkeiten zwischen den Werbebuchungen, zum Beispiel einige Features, die sich gegenseitig ausschließen können. Diese Regeln können in Form von Makros ausgedrückt werden. Alternativ könnten die Regeln in einer Regelsprache ausgedrückt und dann zu Makros kompiliert werden, die der Tabelle angefügt würden, um die Regeln durchzusetzen. Zusätzliche Regeln können Fehlerprüfungen und sonstige Konsistenzprüfungen beinhalten. Außerdem kann es Regeln geben, die ausgehend von der Region oder anderen Faktoren mit Verkaufsaktionen oder ausgelösten Veranstaltungen assoziiert sind.
  • Eine Sache, die bei solchen Regeln zu beachten ist, wie diese verwaltet werden sollten. Es kann beispielsweise hilfreich sein, die Makros und/oder Regeln live in einer geteilten Bibliothek bereit zu halten, auf die die Tabelle verweist, damit ein Administrator Tabellenwerte einfach aktualisieren kann. Das Makro sollte außerdem Teil einer Werkzeugserie sein, die ein Systemadministrator Inhabern kleiner Geschäfte zur Verfügung stellt und diesen Benutzern ermöglicht, auf das Makro zuzugreifen und es auszuführen. Der Administrator kann das Makro von einem zentralen Stelle eines gehosteten Systems aus immer wieder aktualisieren und alle Benutzer können das Makro von dort aus ausführen.
  • Somit kann das Makro in einem gemeinsam genutzten Modus veröffentlicht werden, wobei für jede Tabellenkalkulation, die auf das Makro zugreift, ein einzelner "Slot" vorhanden ist. Andere Benutzer können das Makro nach ihren Tabellen importieren, indem sie eine URL in ihre Tabelle einbinden, die auf das Makro zeigt, und dieses dazu autorisieren, auf die Tabelle zu schreiben.
  • Beispiel Nr. 2: Investment-Benutzeroberfläche
  • Betrachten wird ein Szenario, in dem eine Wertpapierfirma in einer Kalkulationstabelle Preismodelle hat, und möchte Aktienkurse von einem externen Dienst ziehen und diese in eine Kalkulationstabelle einfügen, um Empfehlungen zu generieren (z. B. kaufen, behalten usw.).
  • Das Script muss möglicherweise aus der Tabelle lesen und schreiben sowie auf einen externen Angebotsdienst zugreifen. Der Autor kann dem Script Zugriff so gewähren, dass das Script nur auf den bestimmten Angebotsdienst beschränkt bleibt. Wenn der Autor hier eine Leerstelle lässt, dann sollte der Benutzer, der den Dienst aufruft, nicht nur gefragt werden, ob dem Script die Kontaktaufnahme mit dem Dienstes gestattet werden sollte, sondern auch welcher Dienst genau kontaktiert werden sollte. Auf diesem Weg kann der Benutzer den Aktionen des Scripts Grenzen setzen. Das Script wird keinerlei andere Dienste kontaktieren können.
  • Wenn ein Benutzer dieses Makro mit anderen Benutzern für die Aufnahme in seine eigenen Tabellen freigeben wollte (z. B. um das Makro zu kopieren und nicht darauf zu verweisen), müssten die anderen Benutzer ihre eigene Berechtigung haben, um auf den externen Angebotsdienst zuzugreifen. Wenn der Benutzer das Makro von einer zentralen Stelle aus teilt, indem er andere darauf zeigen lässt, so können die Benutzer das Makro verwenden, selbst wenn sie selber nicht berechtigt sind, den externen Aktienangebotsdienst zu kontaktieren. Sie würden in diesem Fall die Autorisierung des Scripts gewährt bekommen (obwohl sie von ihren eigen Scripts aus nicht auf den Dienst zugreifen können).
  • Beispiel Nr. 3: Unfallmeldung
  • Betrachten wird ein Szenario, in dem ein Bustransportunternehmen an der Automatisierung seines Unfallberichts interessiert ist. Ein in einen Unfall verwickelter Fahrer kann auf einen gehosteten Dienst zugreifen, um ein tabellarisches Formular auszufüllen, welches Angaben wie etwa zum Standort des Busses usw. erfasst. Anhand eines Makros kann die Meldung an verschiedene Vorgesetzte zur Überprüfung weitergeleitet werden.
  • Das Makro muss möglicherweise einen Supervisor identifizieren (z.B. über ein anderes Tabellenblatt, auf das es Zugriff hat, eine Datenbankabfrage usw.), eine korrekte E-Mail-Adresse der Rechtsabteilung generieren und das Dokument mit diesen Personen teilen sowie ein E-Mails und Zugriff auf andere Kalkulationstabellen (z. B. eine Kalkulationstabelle, die einen Datensatz beinhaltet, über den Unfallmeldungen anstehen). Möglicherweise müssen diese Leute die Tabelle weiter bearbeiten und dann ein Ereignis auslösen können, das das Makro weiterleitet. Das Makro kann im Fortsetzungsmodus laufen, sodass es jedes Mal pausiert, wenn ein bestimmter Benutzer eine Phase des Makros abgeschlossen hat, und dann darauf wartet, dass ein nächster Benutzer es wieder aufnimmt. Wenn es durch ein Ereignis aktiviert wird, kann es prüfen, wer das Dokument abgezeichnet hat (z. B. ist dies aus dem Dokument selbst oder aus Informationen ersichtlich, die mit dem Makro versendet worden sind). Wenn noch nicht alle zur Abzeichnung stehenden abgezeichnet haben, kann das Makro warten, bis dies der Fall ist und dann jemand anders benachrichtigen und (z. B. in noch einer anderen Tabelle) verzeichnen, dass der Zwischenfall vollständig verarbeitet worden ist. Wenn zwei Ereignisse gleichzeitig eintreffen, können diese in eine Warteschlange gestellt werden, sodass das Makro nur eine Fortsetzung auf einmal verarbeitet. Der Workflow-Zustand kann einfach im lokalen variablen Kontext des Makros gehalten werden, sowie teilweise in Kalkulationstabellen aufgezeichnet werden.
  • In einem verwandten Szenario können Unfallberichte, die nicht vollständig verarbeitet und geschlossen wurden (z. B. basierend auf dem Arbeitsablauf), abgefragt werden. Diese Abfrage erfordert möglicherweise das Zugreifen auf die Tabelle (oder einfach das Öffnen der Tabelle), die Statusinformationen zur Unfallmeldung beinhaltet.
  • Beispiel Nr. 4: Busfahrplan-Berichterstattung
  • Betrachten wird ein Szenario, in dem ein Bustransporteur gerne in der Lage wäre, Kunden über Verzögerungen bei bestimmten Buslinien zu informieren. Das Unternehmen kann eine Tabelle bearbeiten, um die voraussichtlichen Zeiten/Positionen seiner Busse zu aktualisieren. Dieses Bearbeiten kann beispielsweise auch automatisch mittels eines Makros erfolgen, das Positionsdaten der Busse empfängt und ausgehend davon geschätzte Ankunftszeiten berechnet (z. B. indem der Bus als Haltestelle X verlassend identifiziert und Zeit Y dazu addiert wird, um die Ankunftszeit bei Haltestelle X + 1 zu berechnen). Ein Makro kann in der Tabelle identifizieren, wenn Buslinien ungewöhnliche Verspätung haben und in diesem Fall Textnachrichten an Kunden senden, die beim Meldedienst registriert sind. Ein Benutzer könnte beispielsweise Textnachrichten abonnieren, die ihn solange er sich im Stadtzentrum aufhält darüber informieren, wenn irgendeiner seiner im Linienverkehr befindlichen Busse (z. B. Busnummern 692, 698 usw.) wahrscheinlich mehr als fünf Minuten später an jener Straßenkreuzung ankommt, wo er normalerweise zusteigt. Eine auf dem Mobilgerät des Benutzers installierte Applikation kann ausgelöst werden, wenn sich der Benutzer am entsprechenden Standort befindet, sodass ein gehosteter Dienst veranlasst wird, das Verzeichnis des Benutzers zu kennzeichnen, damit der Benutzer zum aktuellen Standort des Benutzers geleitete Aktualisierungen empfängt, ohne dass der Benutzer den Standort von Hand eingeben müsste (z. B. indem die GPS-Koordinaten des Benutzers in jene der nächsten Bushaltestelle konvertiert werden).
  • Aus Sicherheitsgründen kann der Verfasser des Makros die Möglichkeit haben, eine Textnachricht an eine begrenzte Gruppe von Benutzern zu senden (z. B. die in einer anderen von einem Administrator gesteuerten Kalkulationstabelle) und wahrscheinlich dieses Makro nur lokal zu veröffentlichen und es nicht öffentlich zugänglich machen. Der Autor würde dem Makro nicht die Fähigkeit verleihen, in die Tabelle zu schreiben. Dieses Szenarium nutzt die Möglichkeit, die Breite einer Fähigkeit durch Verweis auf eine Gruppe, die in einem Dokument oder sonstigen Sammlung (z. B. in einer Tabelle oder gewissen anderen Gruppendefinitionen) definiert ist, festzulegen.
  • Beispiel Nr. 5: Positionsbasierter Veranstaltungsauslöser
  • Betrachten wird ein Szenario, in dem ein Benutzer eine Reihe von Konzert Empfehlungen in einer Kalkulationstabelle, einschließlich der Adresse und Datum/Uhrzeit jedes Konzertes aktualisiert. Andere Benutzer können Benachrichtigungen von dieser Tabelle abonnieren, von der sie immer dann benachrichtigt werden wollen, wenn in ihrer Umgebung eines dieser Konzerte stattfindet und der Konzerttermin näher rückt. In diesem Fall können beispielsweise Benachrichtigungen verwendet werden, wie ein Mapping-Dienst, ein sozialer Netzwerkdienst (zur Identifizierung der Freunde des Benutzers, der die Empfehlungen macht), einen Standortdienst (zum Identifizieren, wenn Freunde an einem bestimmten Ort sind) und einen SMS-Dienst, um die Benachrichtigungen zu senden. Ein gehostetes Makro eignet sich daher besonders gut für ein solches Szenarium.
  • Beispiel Nr. 6: Umfragen
  • Betrachtet wird ein Szenario, in dem ein Benutzer eine Umfrage oder ein anderes Dateneingabeformular erstellt, ein E-Mail-Formular an eine Anzahl anderer Benutzer sendet und eine Zeile zu einer Tabelle hinzufügt, die angibt, wie jeder Benutzer das Formular ausgefüllt hat.
  • Dem Makro sollte die Möglichkeit eingeräumt werden, eine Gruppe von Personen von einer bestimmten Adresse zu einer Reihe von Adressen zu senden, die vom Benutzer bereitgestellt werden. Das Makro kann den Empfang von Benutzerdaten durch das Formular nachverfolgen, indem es beispielsweise auf eine den Benutzer identifizierende Eigenschaft zugreift oder eine Benutzerkennung in der Antwort identifiziert (z. B. eine E-Mail-Adresse). Das Makro kann dann auf die Tabelle zugreifen, die Benutzerkennung in eine Spalte der Tabelle und die Antwort oder Antworten des Benutzers in andere Spalten der Tabelle eintragen. Auf diese Weise kann ein erster Benutzer einer Gruppe (die z. B. durch eine Liste von Freunden oder Mailingliste bestimmt ist) schnell ein Formular senden und die Kommentare der Gruppe automatisch in tabellarischer Form darstellen.
  • Beispiel Nr. 7: Bestellungsgenehmigung
  • Betrachtet wird ein Szenario, in dem ein Benutzer eine Bestellung erstellt (z. B. "Ich möchte X tausend Mengen Ohrenstäbchen bestellen und ich bevorzuge den Lieferanten XYZ"). Wenn der Benutzer die Bestellung aufgibt, kann ein Makro ausgehend von Angaben wie etwa den Artikeln, dem Gesamtpreis, der Abteilung usw. ermitteln, wer die Bestellung genehmigen muss. Wenn die Gesamtsumme z. B. einen festgesetzten Schwellenwert überschreitet, dann könnte die Bestellung die Genehmigung des Vorstands erfordern. Im Zuge ihrer Genehmigung von verschiedener Stelle kann die Bestellung einen Arbeitsablauf entlanggeführt werden. Dabei kann es sich um eine im Makro definierte Benutzerliste, eine Datenbank oder eine Tabelle handeln. Das Makro behält dabei seinen lokalen Status bei, um zu wissen, wer die Bestellung schon genehmigt hat und wer nicht. Wenn alle Stellen der Bestellung zugestimmt haben, wird die Bestellung an den Einkauf gesendet.
  • Dieses Makro kann am besten in Bezug auf Fortsetzungen laufen. Das Makro hätte die Fähigkeit, gewissen Benutzern eine E-Mail samt Verknüpfung oder Anhang eines Dokuments zu senden, in der die Benutzer durch das Anklicken von Formen oder URLs eine gegebene Bestellung genehmigen oder ablehnen können und Zugriff auf andere Tabellen oder Datenbanken mit Informationen wie etwa dem Abteilungsleiter usw. hätten.
  • Beispiel Nr. 8: Mailzusammenführung
  • Betrachtet wird ein Szenario, in dem ein Benutzer eine Namenskalkulationstabelle mit Namen, Adressen, E-Mail-Adressen usw. und ein anderes Dokument (z. B. E-Mail, Kalkulationstabelle usw.) hat und Felder des letzteren Dokuments durch die Felder aus dem Feld der Liste ersetzen möchte und E-Mail des zusammengeführten Dokuments an die im Namensblatt angegebenen Empfänger senden will.
  • Aus Sicherheitsgründen ist dies ein Makro, das vollständig im Kontext eines bestimmten Dokuments und einer Namensliste ausgeführt werden kann. Die Fähigkeiten sind: "Versenden von E-Mails an die Liste zulassen, so wie in der ersten Spalte der Tabelle angegeben", sowie Zugriff auf eine Dokumentvorlage. Das Makro versendet E-Mails an Personen in der Liste samt den aus der Tabelle und einigen Vorlagen berechneten Daten. Einzelne Ausführungen von Makros zur Zusammenführung von E-Mails sind allseits bekannt.
  • Beispiel Nr. 9: Ärzteschichteinteilung
  • Betrachten Sie ein Szenario, in dem eine Reihe von Ärzten auf die gleiche Kalkulationstabelle zugreifen und bearbeiten. Ein Makro könnte die Tabelle prüfen, um sicherzustellen, dass jeder Arzt sich an die Formatierungs- und Schichteinteilungsregeln der Tabelle hält (z. B. Mindest- oder Höchstzahl von Schichten innerhalb eines Zeitabschnitts). Durch das Klicken auf eine Schaltfläche könnte jeder Benutzer das Makro ausführen, um die Tabelle beispielsweise für intuitiveren Zugang mit einer Kalenderapplikation abzugleichen (z. B. zum Erstellen von sich wiederholenden Schichteinteilungen). Es kann auch zu Zwei-Wege-Synchronisation kommen.
  • Das Makro kann erweitert werden, um mit einer Vielzahl anderer Kalenderanwendungen in Verbindung treten zu können. Das Makro kann Ärzten auch helfen, die Einhaltung der Regeln ihrerseits zu überprüfen, die Anzahl Schichten, für die sie sich eingetragen haben, nachzuverfolgen und die Tabelle mit einer Kalenderapplikation zu synchronisieren.
  • Beispiel Nr. 10: E-Mail-Plug-in
  • Ein Benutzer kann einen Makro definieren, um jede Instanz einer eingehenden E-Mail zu ihrem Konto zu identifizieren und die Absenderkennung und Betreffzeile der E-Mail zu kopieren, die von der E-Mail kopiert werden soll, und in eine nächste offene Zeile einer Kalkulationstabelle, die dem Benutzerkonto zugeteilt ist. Auf diese Weise kann der Benutzer ein aktualisiertes Protokoll von auf seinem Konto eingehenden E-Mails führen.
  • Beispiel Nr. 11: Blogging-Plug-in
  • Ein Benutzer, der ein Blogger eines Dienstes ist, kann ein Makro für die Behandlung von Benutzerkommentaren zum Blog entwickeln. Informationen zu einem Kommentarschreiber können verwendet werden, um beispielsweise eine Position des Kommentarschreibers neben dem Kommentar anzuzeigen (z. B. mittels einer IP-Adresse, die dem Benutzerkommentar entspricht). Der Benutzer kann außerdem alle Kommentare mit einer schwarzen Liste von Signalwörtern wie etwa Flüchen vergleichen, sodass er immer dann eine Warnmeldung per Textnachricht empfängt, wenn ein Kommentar mit einem unanständigen Wort gepostet wird. Der Benutzer konnte sich dann in das Blog einloggen, um es aufzuräumen
  • Beispiel Nr.12: Verrechenbare Stunden
  • Ein Benutzer, der ein Berater ist, kann seine abrechenbaren Stunden in einer Kalenderanwendung verfolgen. Er oder sie könnte ein Makro verwenden, um diese Einträge regelmäßig (z. B. jede Woche oder jeden Monat) herauszufiltern (z. B. indem ein Zeiteintrag in der Form x.x erkannt wird). Das Makro könnte dann den mit dem Eintrag assoziierten Text verwenden, um eine Projektnummer zu identifizieren, für die die Zeit verrechnet werden sollte (z. B. anhand einer Liste, die Schlüsselwörter und Kundennamen mit einem bestimmten Projekt korreliert), und dann Daten in die Zellen einer Tabelle einfügen, um die Rechnungsstellung auszuführen. Das Makro kann dann die Werte aus der Tabelle (nach Anwendung eines Stundensatzes für die Rechnungsstellung) mit einer Rechnung zusammenführen, die von einem Textverarbeitungsprogramm erzeugt wird, und dann das daraus entstandene Dokument als E-Mail an den Kunden senden. Wenn der Kunde ein auf dem gehosteten System registrierter Benutzer ist, kann das Makro eine direkte Zahlungsaufforderung machen (inkl. über ein Formular, das einen wählbaren Mechanismus beinhaltet, anhand dessen der Kunde seine Zahlungsabsicht angeben kann). Der Kunde kann daraufhin das Bedienelement auswählen, um die Zahlungsüberweisung von einem Kundenkonto auf das Beraterkonto auszuführen.
  • Beispiel Nr. 13: Anfahrtsbeschreibung per E-Mail-Zusammenführung verschicken
  • Ein Benutzer eines gehosteten Systems kann verlangen, Einladungen für eine bevorstehende Partei zu einer Anzahl von seinen Freunden zu senden. Der Benutzer kann zunächst einen Rahmen für die Partyeinladung erstellen. Der Benutzer kann dann mit einem Makro auf eine Freundesliste samt Adressen (z. B. in einer Kontakte-Applikation auf dem gehosteten System) zeigen, um diese mit der Einladung als E-Mail zusammenzuführen. Der Benutzer kann allerdings auch seine eigene Adresse angeben (den Ort der Party) und diejenige Freundesadresse von der Liste, deren Einladung gerade erstellt wird, an einen Zuordnungsdienst liefern, der gemäß einer standardmäßigen API ein Bild zurückgeben kann, auf dem eine Karte mit einer darübergelegten Anfahrtsbeschreibung vom Haus des Freunds zur Party zu sehen ist. Das Makro kann das Bild in die Einladung integrieren, die dann an den Freund samt automatisch generierter und angepasster Anfahrbeschreibung gesendet werden kann.
  • 7 zeigt ein Beispiel eines allgemeinen Computergeräts 700 und eines allgemeinen mobilen Computergeräts 750, die mit den hier beschriebenen Techniken verwendet werden können. Die Rechenvorrichtung 700 dient zur Darstellung verschiedener digitaler Computer, wie Laptops, Desktops, Workstations, Personal Digital Assistants, Server, Blade Server, Mainframes und anderer geeigneter Computer. Computergerät 750 soll verschiedene Formen mobiler Geräte, wie Personal Digital Assistants, Mobiltelefone, Smartphones und andere ähnliche Computergeräte, darstellen. Die hier gezeigten Komponenten, ihre Verbindungen und Beziehungen und ihre Funktionen sollen nur exemplarisch sein und sollen Implementierungen der in diesem Dokument beschriebenen und/oder beanspruchten Erfindungen nicht einschränken.
  • Das Computergerät 700 beinhaltet einen Prozessor 702, Speicher 704, ein Speichergerät 706, eine Hochgeschwindigkeitsschnittstelle 708, die mit dem Speicher 704 und Hochgeschwindigkeits-Erweiterungsanschlüssen 710 verbindet, und eine langsame Schnittstelle 712, die mit einem langsamen Bus 714 und dem Speichergerät 706 verbindet. Alle der Komponenten 702, 704, 706, 708, 710 und 712 sind mithilfe verschiedener Busse miteinander verbunden und können an einer gemeinsamen Hauptplatine oder auf andere Weise, wie geeignet, angebracht sein. Der Prozessor 702 kann Anweisungen zur Ausführung innerhalb des Computergeräts 700 verarbeiten, einschließlich Anweisungen, die im Speicher 704 oder auf dem Speichergerät 706 gespeichert sind, um grafische Informationen für eine GUI auf einem externen Eingabe-/Ausgabegerät anzuzeigen, wie Anzeige 716, die an die Hochgeschwindigkeitsschnittstelle 708 gekoppelt ist. In anderen Implementierungen können mehrere Prozessoren und/oder mehrere Busse, wie angemessen, zusammen mit mehreren Speichern und Speichertypen verwendet werden. Außerdem können mehrere Computergeräte 700 verbunden sein, wobei jedes Gerät Teile der nötigen Operationen bereitstellt (z. B. als Serverbank, eine Gruppe von Blade-Servern oder ein Multiprozessor-System).
  • Der Speicher 704 zeichnet Informationen im Computergerät 700 auf. In einer Implementierung ist der Speicher 704 ein flüchtiges Speichergerät oder flüchtige Speichergeräte. In einer anderen Implementierung ist der Speicher 704 ein nicht flüchtiges Speichergerät oder nicht flüchtige Speichergeräte. Der Speicher 704 kann auch eine andere Form von computerlesbarem Medium sein, zum Beispiel ein magnetischer oder optischer Datenträger.
  • Das Speichergerät 706 ist geeignet, Massenspeicherung für das Computergerät 700 bereitzustellen. In einer Ausführungsform kann das Speichergerät 706 ein computerlesbares Medium sein oder enthalten, zum Beispiel ein Diskettengerät, ein Festplattengerät, ein optisches Datenträgergerät oder ein Bandgerät, ein Flash-Speicher oder ein anderes ähnliches Solid-State-Speichergerät oder eine Reihe von Geräten, zum Beispiel Geräte in einem Storage Area Network oder anderen Konfigurationen. Ein Computerprogrammprodukt kann greifbar in einem Informationsträger ausgeführt sein. Das Computerprogrammprodukt kann auch Anweisungen enthalten, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren wie die oben beschriebenen durchführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, zum Beispiel der Speicher 704, das Speichergerät 706, Speicher auf Prozessor 702 oder ein propagiertes Signal.
  • Der Hochgeschwindigkeits-Controller 708 verwaltet bandbreitenintensive Vorgänge für das Computergerät 700, während der langsame Controller 712 Vorgänge mit niedrigerer Bandbreite verwaltet. Eine solche Zuordnung von Funktionen ist nur exemplarisch. In einer Implementierung ist der Hochgeschwindigkeits-Controller 708 an den Speicher 704, die Anzeige 716 (z. B. durch einen Grafikprozessor oder -beschleuniger) und an die Hochgeschwindigkeits-Erweiterungsanschlüsse 710 gekoppelt, die verschiedene Erweiterungskarten aufnehmen können (nicht gezeigt). In der Implementierung ist der langsame Controller 712 an das Speichergerät 706 und an den langsamen Erweiterungsanschluss 714 gekoppelt. Der langsame Erweiterungsanschluss, der verschiedene Kommunikationsanschlüsse (z. B. USB, B, Ethernet, Funkethernet) beinhalten kann, kann an ein oder mehrere Eingabe-/Ausgabevorrichtungen, wie eine Tastatur, ein Zeigegerät, einen Scanner oder ein Netzwerkgerät, wie einen Switch oder Router, z. B. durch einen Netzwerkadapter gekoppelt sein.
  • Das Computergerät 700 kann in einer Reihe verschiedener Formen implementiert werden, wie in der Figur gezeigt. Es kann zum Beispiel als Standardserver 720 oder mehrmals in einer Gruppe solcher Server implementiert sein. Es kann auch als Teil eines Rackserversystems 724 implementiert sein. Außerdem kann es in einem Personal Computer, wie Laptop-Computer 722, implementiert sein. Alternativ können Komponenten von Computergerät 700 mit anderen Komponenten in einem mobilen Gerät kombiniert sein (nicht dargestellt), z. B. Gerät 750. Jedes solcher Geräte kann eines oder mehrere Computergeräte 700, 750 enthalten, und ein gesamtes System kann aus mehreren Computergeräten 700, 750 bestehen, die miteinander kommunizieren.
  • Das Computergerät 750 beinhaltet einen Prozessor 752, Speicher 764, ein Eingabe-/Ausgabegerät, wie eine Anzeige 754, eine Kommunikationsschnittstelle 766 und einen Sende-Empfänger 768, unter anderen Komponenten. Das Gerät 750 kann auch mit einem Speichergerät ausgestattet sein, zum Beispiel einem Microdrive oder anderem Gerät, um zusätzlichen Speicher bereitzustellen. Alle der Komponenten 750, 752, 764, 754, 766 und 768 sind mithilfe verschiedener Busse miteinander verbunden und mehrere der Komponenten können an einer gemeinsamen Hauptplatine oder auf andere Weise, wie geeignet, angebracht sein.
  • Der Prozessor 752 kann Anweisungen im Computergerät 750 ausführen, zum Beispiel Anweisungen, die in Speicher 764 gespeichert sind. Der Prozessor kann als ein Chipsatz von Chips implementiert werden, die separate und mehrere analoge und digitale Prozessoren beinhalten. Der Prozessor kann zum Beispiel für die Koordination der anderen Komponenten des Geräts 750 sorgen, zum Beispiel die Kontrolle von Benutzeroberflächen, Anwendungen, die vom Gerät 750 ausgeführt werden, und die drahtlose Kommunikation durch Gerät 750.
  • Prozessor 752 kann mit einem Benutzer über Steuerschnittstelle 758 und Displayschnittstelle 756 kommunizieren, die mit einem Display 754 gekoppelt ist. Die Anzeige 754 kann zum Beispiel eine TFT-LCD-(Thin-Film-Transistor Liquid Crystal Display) oder eine OLED-Anzeige (organische Leuchtdiode) oder eine andere angemessene Anzeigetechnologie sein. Die Displayschnittstelle 756 kann eine geeignete Schaltung enthalten, die das Display 754 dazu bringt, einem Benutzer grafische und andere Informationen zu präsentieren. Die Steuerschnittstelle 758 kann Befehle von einem Benutzer empfangen und sie für die Sendung an Prozessor 752 umwandeln. Zusätzlich kann eine externe Schnittstelle 762 Kommunikation mit dem Prozessor 752 bereitstellen, zum Beispiel, um Nahbereichskommunikation des Geräts 750 mit anderen Geräten zu ermöglichen. Die externe Schnittstelle 762 kann zum Beispiel in einigen Implementierungen eine kabelgebundene Kommunikation bereitstellen, oder in anderen Implementierungen eine drahtlose Kommunikation und es können auch mehrere Schnittstellen verwendet werden.
  • Der Speicher 764 zeichnet Informationen im Computergerät 750 auf. Der Speicher 764 kann als eines oder mehrere computerlesbare Medien, flüchtige Speichergeräte oder nicht flüchtige Speichergeräte implementiert werden. Erweiterungsspeicher 774 kann ebenfalls bereitgestellt und mit dem Gerät 750 über Erweiterungsschnittstelle 772 verbunden werden, die zum Beispiel eine SIMM(Single In Line Memory Module)-Kartenschnittstelle umfassen kann. Ein solcher Erweiterungsspeicher 774 kann zusätzlichen Speicherplatz für Gerät 750 bereitstellen oder er kann auch Anwendungen oder andere Informationen für Gerät 750 speichern. Insbesondere kann Erweiterungsspeicher 774 Anweisungen zum Ausführen oder Ergänzen der oben beschriebenen Prozesse enthalten und er kann außerdem sichere Informationen enthalten. Somit kann Erweiterungsspeicher 774 zum Beispiel als Sicherheitsmodul für Gerät 750 bereitgestellt werden und er kann mit Anweisungen programmiert sein, die die sichere Verwendung von Gerät 750 erlauben. Zusätzlich können sichere Anwendungen über die SIMM-Karten zusammen mit zusätzlichen Informationen bereitgestellt werden, wie einem Platzieren von Informationen auf der SIMM-Karte in einer Weise, die nicht gehackt werden kann.
  • Der Speicher kann beispielsweise Flash Speicher und/oder NVRAM-Speicher beinhalten, wie nachstehend erörtert. In einer Implementierung ist ein Computerprogrammprodukt greifbar in einem Informationsträger ausgeführt. Das Computerprogrammprodukt beinhaltet Anweisungen, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren wie die oben beschriebenen durchführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie der Speicher 764, das Speichergerät 774, Speicher auf Prozessor 752 oder ein weitergeleitetes Signal, das zum Beispiel über den Sende-Empfänger 768 oder die externe Schnittstelle 762 empfangen werden kann.
  • Das Gerät 750 kann drahtlos über die Verbindungsschnittstelle 766 kommunizieren, die digitale Signalverarbeitungsschaltkreise beinhalten kann, falls erforderlich. Die Verbindungsschnittstelle 766 kann Verbindungen mit verschiedenen Kommunikationstypen oder -protokollen aufbauen, darunter GSM-Sprachanrufe, SMS, EMS, oder MMS-Messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 oder GPRS unter anderen. Eine solche Kommunikation kann zum Beispiel über Funkfrequenzempfänger 768 erfolgen. Zusätzlich kann eine Kurzstreckenkommunikation stattfinden, wie unter Verwendung eines Bluetooth-, WLAN- oder anderen solchen Sende-Empfängern (nicht gezeigt). Außerdem kann GPS(Global Positioning System)-Empfängermodul 770 zusätzliche mit der Navigation und dem Ort verbundene drahtlose Daten für Gerät 750 bereitstellen, die ggf. von Anwendungen verwendet werden können, die auf Gerät 750 ausgeführt werden.
  • Das Gerät 750 kann mithilfe des Audio-Codec 760 auch akustisch kommunizieren, das gesprochene Informationen von einem Benutzer empfangen und diese in nutzbare digitale Informationen konvertieren kann. Audio-Codec 760 kann ebenfalls akustische Töne für einen Benutzer erzeugen, zum Beispiel durch einen Lautsprecher zum Beispiel in einem Handgerät von Gerät 750. Solche Töne können Töne von Sprachtelefonanrufen beinhalten, können aufgezeichnete Töne (z. B. Sprachnachrichten, Musikdateien usw.) beinhalten und können auch Töne, die von Applikationen erzeugt werden, die auf Gerät 750 laufen, beinhalten.
  • Das Computergerät 750 kann in einer Reihe verschiedener Formen implementiert werden, wie in der Figur gezeigt. Es kann zum Beispiel als Mobiltelefon 780 implementiert werden. Es kann außerdem als Teil eines Smartphones 782, Personal Digital Assistant oder eines anderen ähnlichen mobilen Geräts implementiert werden.
  • Das Gerät 750 kann auch ein oder mehrere verschiedene Geräte beinhalten, die fähig sind, Bewegung zu erfassen. Beispiele beinhalten, sind jedoch nicht beschränkt auf Beschleunigungsmesser und Kompasse. Beschleunigungsmesser und Kompasse oder andere Geräte, die fähig sind, Bewegung oder Position zu erkennen, sind von einer Vielzahl von Anbietern erhältlich und können Bewegung auf eine Vielfalt von Weisen erfassen. Beschleunigungsmesser können zum Beispiel Beschleunigungsänderungen erkennen, während Kompasse Orientierungsänderungen in Bezug auf den magnetischen Nord- oder Südpol erkennen können. Diese Bewegungsänderungen können vom Gerät 750 erkannt werden und verwendet werden, um die Anzeige der jeweiligen Geräte 750 nach den hierin beschriebenen Prozessen und Techniken zu aktualisieren.
  • Verschiedene Implementierungen der hier beschriebenen Systeme und Techniken können in digitalen elektronischen Schaltkreisen, integrierten Schaltkreisen, speziell konzipierten ASICs (anwendungsorientierten integrierten Schaltkreisen), Computerhardware, Firmware, Software und/oder Kombinationen davon realisiert werden. Diese verschiedenen Implementierungen können eine Implementierung in einem oder mehreren Computerprogrammen beinhalten, die auf einem programmierbaren System ausführbar und/oder interpretierbar sind, das mindestens einen programmierbaren Prozessor beinhaltet, der ein spezieller oder für allgemeine Zwecke sein kann und der zum Empfangen von Daten und Anweisungen von und zum Übertragen von Daten und Anweisungen an ein Speichersystem, mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung gekoppelt ist.
  • Diese Computerprogramme (auch bekannt als Programme, Software, Softwareanwendungen oder Code) beinhalten Maschinenanweisungen für einen programmierbaren Prozessor und können in einer höheren prozeduralen und/oder objektorientierter Programmiersprache und/oder in Assembler-/Maschinensprache implementiert werden. Wie hier verwendet, bezeichnen die Begriffe „maschinenlesbares Medium“, „computerlesbares Medium“ ein beliebiges Computerprogrammprodukt, eine beliebige Vorrichtung und/oder ein beliebiges Gerät (z. B. Magnetplatten, optische Platten, Speicher, programmierbare Logikbausteine (PLDs)), die verwendet werden, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen, einschließlich eines maschinenlesbaren Mediums, das Maschinenanweisungen als ein maschinenlesbares Signal empfängt. Der Begriff „maschinenlesbares Signal“ bezeichnet ein beliebiges Signal, das verwendet wird, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen.
  • Zur Interaktion mit einem Benutzer können die hier beschriebenen Systeme und Techniken auf einem Computer mit einem Anzeigegerät (z. B. ein CRT-[Kathodenstrahlröhre] oder ein LCD-[Flüssigkristallanzeige] Monitor) implementiert werden, um Informationen für den Benutzer anzuzeigen, und eine Tastatur und ein Pointergerät (z. B. Maus oder Trackball), mit denen der Benutzer Eingaben in den Computer vornehmen kann. Andere Arten von Geräten können auch verwendet werden, um eine Interaktion mit einem Benutzer bereitzustellen; zum Beispiel kann eine dem Benutzer bereitgestellte Rückmeldung irgendeine Form von Sinnesrückmeldung sein (z. B. visuelle Rückmeldung, auditive Rückmeldung oder Tastrückmeldung); und eine Eingabe vom Benutzer kann in einer beliebigen Form empfangen werden, einschließlich akustischer, Sprach- oder Tasteingaben.
  • Die hier beschriebenen Systeme und Techniken können in einem Computersystem implementiert werden, das eine Back-End-Komponente beinhaltet (z. B. als Datenserver) oder das eine Middleware-Komponente (z. B. einen Anwendungsserver) beinhaltet oder das eine Front-End-Komponente (z. B. einen Client-Computer, der eine grafische Benutzeroberfläche oder einen Webbrowser aufweist, durch die ein Benutzer mit einer Implementierung der hier beschriebenen Systeme und Techniken interagieren kann) oder eine beliebige Kombination solcher Back-End, Middleware- oder Front-End-Komponenten beinhaltet. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium von digitaler Datenkommunikation (z. B. ein Kommunikationsnetzwerk) miteinander verbunden sein. Beispiele von Kommunikationsnetzwerken beinhalten ein lokales Netzwerk („LAN“), ein Fernnetz („WAN“) und das Internet.
  • Das Computersystem kann Clients und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung von Client und Server ergibt sich durch Computerprogramme, die auf den jeweiligen Computern laufen und eine Client-Server-Beziehung zueinander umfassen.
  • Eine Anzahl von Ausführungsformen wurden beschrieben. Allerdings wird dabei vorausgesetzt, dass unterschiedliche Modifikationen gemacht werden können, ohne von der Reichweite und dem Umfang der Erfindung abzuweichen. Zum Beispiel wurde ein Großteil dieses Dokuments in Bezug auf bestimmte Mechanismen zum Zusammenschalten zwischen Makros, die für eine erste Sprache geschrieben wurden, und Anwendungen, die für die Kommunikation in verschiedenen Sprachen entworfen wurden, beschrieben, aber es können auch andere Mechanismen zum Bereitstellen einer einzigen Entwicklungsumgebung über mehrere Systeme verwendet werden.
  • Außerdem erfordern die in den Figuren dargestellten logischen Abläufe nicht die bestimmte dargestellte Reihenfolge oder sequenzielle Reihenfolge, um wünschenswerte Ergebnisse zu erzielen. Darüber hinaus können andere Schritte bereitgestellt oder Schritte aus den beschriebenen Abläufen eliminiert werden und andere Komponenten können zu den beschriebenen Systemen hinzugefügt werden oder aus diesen entfernt werden. Dementsprechend liegen Ausführungsformen innerhalb des Umfangs der nachfolgenden Ansprüche.

Claims (7)

  1. Computerimplementiertes System zum Verwalten von Computermakros, wobei das System Folgendes umfasst: eine Vielzahl von gehosteten Anwendungen, die von dem gehosteten Computersystem betreibbar sind; einen Makrodatenspeicher, der eine Vielzahl von Makros speichert, die jeweils einem Benutzerkonto auf dem gehosteten Computersystem zugeordnet sind und jeweils eine Reihe von Aktionen definieren, die von mindestens einer der Vielzahl von gehosteten Anwendungen ausgeführt werden sollen; und einen Prozessor, um eine Dienstschnittstelle auszuführen, die, wenn sie ausgeführt wird, ein oder mehrere Objekte für jeden einer Vielzahl von Diensten definiert, die durch das System zugänglich sind, wobei das eine oder die vielen Objekte jeweils Kommunikationen von der Vielzahl von Makros in einer ersten Sprache zu einer oder mehreren der Vielzahl von Diensten in einer zweiten Sprache übersetzt wird, die sich von der ersten Sprache unterscheidet.
  2. System nach Anspruch 1, ferner umfassend eine Ereignisbehandlungsroutine, die so programmiert ist, dass sie Benachrichtigungen von Ereignissen empfängt, die bei der Vielzahl von gehosteten Anwendungen auftreten, und die Ausführung der Vielzahl von Makros als Antwort auf das Empfangen der Ereignisbenachrichtigungen zu bewirken.
  3. System nach Anspruch 1, worin das eine oder die mehreren Objekte jeweils ein Zugriffsverfahren beinhalten, das einen Kommunikationsmechanismus zum Kommunizieren mit einer der Vielzahl von Diensten definiert.
  4. System nach Anspruch 1, ferner umfassend ein oder mehrere Sicherheits-Wrapper, die als Adapter zwischen dem Ausführen von Makros und dem einen oder mehreren Objekten arbeiten und die verhindern, dass ein Makro ohne positive Benutzeranweisungen bezüglich des Makros ausgeführt wird.
  5. System nach Anspruch 1, ferner umfassend eine oder mehrere kontingenterzwingende Schichten, die so programmiert sind, dass sie die Ausführung eines oder mehrerer der mehreren Makros oberhalb eines bestimmten Pegels verhindern.
  6. System nach Anspruch 5, worin das bestimmte Niveau durch eine Anzahl von Ausführungen eines Makros im Auftrag eines bestimmten Benutzerkontos in einer Zeitperiode definiert ist.
  7. Computerimplementiertes System zum Verwalten von Computermakros, Folgendes umfassend: eine Vielzahl von gehosteten Anwendungen, die von dem gehosteten Computersystem betrieben werden können; einen Makrodatenspeicher, der eine Vielzahl von Makros speichert, die jeweils einem Benutzerkonto auf dem gehosteten Computersystem zugeordnet sind und jede eine Reihe von Aktionen definieren, die von mindestens einer der Vielzahl von gehosteten Anwendungen ausgeführt werden sollen; und ein Mittel zum Ausführen eines oder mehrerer der Makros in einem ersten Format und zum Übersetzen von Informationen aus der Ausführung zu einem oder mehreren Diensten, die Informationen als Antwort auf einen Anruf aus dem Makro in einem zweiten Format bereitstellen, das sich von dem ersten Format unterscheidet.
DE202010018488.6U 2009-08-13 2010-08-13 Virtuelle Objektreferenzierung in einer gehosteten Computerumgebung Expired - Lifetime DE202010018488U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/540,927 2009-08-13
US12/540,927 US8826304B2 (en) 2009-08-13 2009-08-13 Virtual object indirection in a hosted computer environment

Publications (1)

Publication Number Publication Date
DE202010018488U1 true DE202010018488U1 (de) 2017-01-23

Family

ID=43586883

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202010018488.6U Expired - Lifetime DE202010018488U1 (de) 2009-08-13 2010-08-13 Virtuelle Objektreferenzierung in einer gehosteten Computerumgebung

Country Status (8)

Country Link
US (1) US8826304B2 (de)
EP (1) EP2465046B1 (de)
JP (1) JP5583769B2 (de)
KR (1) KR101557322B1 (de)
CN (1) CN102549559B (de)
AU (1) AU2010282299B2 (de)
DE (1) DE202010018488U1 (de)
WO (1) WO2011020066A2 (de)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301705B2 (en) * 2008-02-29 2012-10-30 Sap Ag Subject line personalization
US8775454B2 (en) 2008-07-29 2014-07-08 James L. Geer Phone assisted ‘photographic memory’
US9128981B1 (en) 2008-07-29 2015-09-08 James L. Geer Phone assisted ‘photographic memory’
US8527985B2 (en) 2009-12-29 2013-09-03 Oracle International Corporation Techniques for rapid deployment of service artifacts
US8924489B2 (en) 2011-01-05 2014-12-30 Apple Inc. Message push notification client improvements for multi-user devices
US8671416B2 (en) 2011-01-14 2014-03-11 Apple Inc. Dynamic service discovery
US8875161B2 (en) * 2011-06-08 2014-10-28 The Mathworks, Inc. Methods and systems for setting access to a list of class entities
US9262133B2 (en) * 2012-01-27 2016-02-16 Amx Llc Mapping and formatting input commands to a third party protocol
US9916545B1 (en) * 2012-02-29 2018-03-13 Amazon Technologies, Inc. Portable network interfaces for authentication and license enforcement
US9665382B2 (en) * 2012-09-12 2017-05-30 Change Healthcare Llc Method and apparatus for providing a cross-device macro framework
CN102946428A (zh) * 2012-11-07 2013-02-27 浪潮电子信息产业股份有限公司 一种基于云存储的计费系统设计方法
US20140136936A1 (en) * 2012-11-09 2014-05-15 Microsoft Corporation Spreadsheet functions to call rest api sources
US9009741B2 (en) * 2013-02-04 2015-04-14 Futurewei Technologies, Inc. Mechanism to initiate calls between browsers without predefined call signaling protocol
US20140310681A1 (en) * 2013-04-12 2014-10-16 Microsoft Corporation Assisted creation of control event
CN103281311B (zh) * 2013-05-12 2016-09-14 南京载玄信息科技有限公司 一种使用Protobuf描述的物联网协议解析方法
US9171168B2 (en) * 2013-09-30 2015-10-27 Hewlett-Packard Development Company, L.P. Determine anomalies in web application code based on authorization checks
US20150100890A1 (en) * 2013-10-04 2015-04-09 Samsung Electronics Co., Ltd. User interface management method and system
CN104077128B (zh) * 2014-06-09 2017-07-11 中国建设银行股份有限公司 一种数据处理方法及装置
CN105516373A (zh) * 2014-09-23 2016-04-20 中兴通讯股份有限公司 对象信息处理方法、装置及ors应用网关
US9762585B2 (en) 2015-03-19 2017-09-12 Microsoft Technology Licensing, Llc Tenant lockbox
US10931682B2 (en) 2015-06-30 2021-02-23 Microsoft Technology Licensing, Llc Privileged identity management
US9965618B1 (en) * 2015-08-27 2018-05-08 Amazon Technologies, Inc. Reducing privileges for imported software packages
US10063601B2 (en) * 2016-03-21 2018-08-28 Microsoft Technology Licensing, Llc Client identification for enforcing computer resource quotas
US10277529B2 (en) 2016-03-21 2019-04-30 Microsoft Technology Licensing, Llc Visualization of computer resource quotas
CN108965356B (zh) * 2017-05-18 2022-06-07 腾讯科技(深圳)有限公司 一种信息交互方法及电子设备
US10936738B1 (en) * 2017-06-26 2021-03-02 Amazon Technologies, Inc. Moderator to extend application functionality
CN107819876A (zh) * 2017-11-27 2018-03-20 北京旷视科技有限公司 一种基于云平台的数据处理方法及系统
KR102617423B1 (ko) * 2017-12-29 2023-12-26 주식회사 넥슨코리아 매크로의 생성을 적응적으로 추천하는 장치, 방법 및 컴퓨터 프로그램
US10747600B2 (en) * 2018-06-12 2020-08-18 commercetools GmbH Extensibility for third party application programming interfaces
US11120211B2 (en) 2019-04-23 2021-09-14 Microsoft Technology Licensing, Llc Combining spreadsheet recorded operations
US11144338B2 (en) * 2019-08-20 2021-10-12 Hyland Software, Inc. Computing system for macro generation, modification, verification, and execution
US11204789B2 (en) 2019-08-20 2021-12-21 Hyland Software Inc. Graphical user interface for macro generation, modification, and verification
CN110944018A (zh) * 2019-12-27 2020-03-31 浪潮通用软件有限公司 一种基于注解和动态代理的rpc通信方法及设备、介质
US11550583B2 (en) * 2020-11-13 2023-01-10 Google Llc Systems and methods for handling macro compatibility for documents at a storage system
CN112882691B (zh) * 2021-03-30 2024-07-02 中信银行股份有限公司 一种基于宏服务的业务服务方法及系统
CN117999542A (zh) 2021-08-31 2024-05-07 胡桃钳医疗公司 基于状态机的脚本应用程序和系统

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1196009A (ja) 1997-09-22 1999-04-09 Toshiba Corp オブジェクトインターフェース変換方法及び記録媒体
US6658453B1 (en) 1998-05-28 2003-12-02 America Online, Incorporated Server agent system
JP2001216211A (ja) 1999-11-24 2001-08-10 Sharp Corp インターネットサービス提供システムおよび方法、ならびにインターネットサービス提供システムで用いられるマクロサーバ
JP2002189841A (ja) * 2000-12-20 2002-07-05 Hitachi Ltd ワークフロー管理方法およびシステム並びにその処理プログラムを格納した記録媒体
US20020082988A1 (en) * 2000-12-27 2002-06-27 Kazuyuki Ujiie Server device for evaluating quality of service, service providing method and medium
US7433942B2 (en) 2001-02-27 2008-10-07 Intel Corporation Network management
US6941337B2 (en) * 2001-06-07 2005-09-06 Nokia Corporation Interaction arrangement for a sequence of interactions providing a service to a user
US7000238B2 (en) 2001-10-10 2006-02-14 Borland Software Corporation Development system providing extensible remoting architecture
US20030097649A1 (en) * 2001-10-31 2003-05-22 Terrence Jones Embedded language interpretation for configuration of fixturing applications
US20030236921A1 (en) * 2002-06-19 2003-12-25 Pitney Bowes Incorporated Method and system for creation and use of webs of linked documents
US7275240B2 (en) * 2003-01-08 2007-09-25 Microsoft Corporation Method and system for recording macros in a language independent syntax
JP2004213529A (ja) * 2003-01-08 2004-07-29 Microsoft Corp 言語非依存の構文でマクロを記録する方法およびシステム
US7765254B2 (en) 2005-10-26 2010-07-27 International Business Machines Corporation Integration of legacy applications
US7882547B2 (en) 2005-12-12 2011-02-01 Microsoft Corporation Securely calling web services from macros
US20080104042A1 (en) * 2006-10-25 2008-05-01 Microsoft Corporation Personalized Search Using Macros
JP2008172725A (ja) * 2007-01-15 2008-07-24 Ricoh Co Ltd 情報処理装置、画像処理装置、情報処理方法及び情報処理プログラム
US7757040B2 (en) * 2007-01-30 2010-07-13 International Business Machines Corporation Memory command and address conversion between an XDR interface and a double data rate interface
US7873591B2 (en) 2007-02-02 2011-01-18 Microsoft Corporation User-interface architecture for manipulating business models
US20080301120A1 (en) 2007-06-04 2008-12-04 Precipia Systems Inc. Method, apparatus and computer program for managing the processing of extracted data
JP5173388B2 (ja) 2007-12-11 2013-04-03 キヤノン株式会社 情報処理装置および情報処理方法
US8082494B2 (en) * 2008-04-18 2011-12-20 Microsoft Corporation Rendering markup language macro data for display in a graphical user interface
US8453126B1 (en) * 2008-07-30 2013-05-28 Dulles Research LLC System and method for converting base SAS runtime macro language scripts to JAVA target language
US20120131645A1 (en) * 2010-11-18 2012-05-24 Harm Michael W User Scriptable Server Initiated User Interface Creation

Also Published As

Publication number Publication date
AU2010282299B2 (en) 2015-12-10
AU2010282299A1 (en) 2012-03-01
JP5583769B2 (ja) 2014-09-03
WO2011020066A2 (en) 2011-02-17
JP2013502017A (ja) 2013-01-17
US8826304B2 (en) 2014-09-02
EP2465046A2 (de) 2012-06-20
EP2465046B1 (de) 2017-06-14
WO2011020066A3 (en) 2011-06-30
KR101557322B1 (ko) 2015-10-06
KR20120068864A (ko) 2012-06-27
EP2465046A4 (de) 2013-10-23
CN102549559B (zh) 2015-09-09
CN102549559A (zh) 2012-07-04
US20110041141A1 (en) 2011-02-17

Similar Documents

Publication Publication Date Title
DE202010018488U1 (de) Virtuelle Objektreferenzierung in einer gehosteten Computerumgebung
DE202010018480U1 (de) Geteilte Makros auf Server-Seite
AU2016201394B2 (en) Event-triggered server-side macros
US7831567B2 (en) System, method, and software for managing information retention using uniform retention rules
US8145606B2 (en) System, method, and software for enforcing information retention using uniform retention rules
US7761428B2 (en) System, method, and software for managing information retention using uniform retention rules
US9158556B2 (en) Managing web content creation in a web portal
DE112011102129T5 (de) Sicherheitsmodell für Abläufe, die sichere Fremddienste zusammenführen
US20090133100A1 (en) Access control on dynamically instantiated portal applications

Legal Events

Date Code Title Description
R151 Utility model maintained after payment of second maintenance fee after six years
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: MAIKOWSKI & NINNEMANN PATENTANWAELTE PARTNERSC, DE

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: MAIKOWSKI & NINNEMANN PATENTANWAELTE PARTNERSC, DE

R152 Utility model maintained after payment of third maintenance fee after eight years
R071 Expiry of right