DE60108158T2 - Onlineentwicklung von applikationen - Google Patents

Onlineentwicklung von applikationen Download PDF

Info

Publication number
DE60108158T2
DE60108158T2 DE60108158T DE60108158T DE60108158T2 DE 60108158 T2 DE60108158 T2 DE 60108158T2 DE 60108158 T DE60108158 T DE 60108158T DE 60108158 T DE60108158 T DE 60108158T DE 60108158 T2 DE60108158 T2 DE 60108158T2
Authority
DE
Germany
Prior art keywords
output
user
application
interface
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
DE60108158T
Other languages
English (en)
Other versions
DE60108158D1 (de
Inventor
Jacob Christfort
Jeremy Chone
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.)
Oracle International Corp
Original Assignee
Oracle International Corp
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 Oracle International Corp filed Critical Oracle International Corp
Publication of DE60108158D1 publication Critical patent/DE60108158D1/de
Application granted granted Critical
Publication of DE60108158T2 publication Critical patent/DE60108158T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Silicon Compounds (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft das Bereitstellen von Diensten für Clients und insbesondere eine Online-Entwicklung von Anwendungen.
  • HINTERGRUND DER ERFINDUNG
  • Das World Wide Web beinhaltet ein Netz von Servern im Internet, wobei jedem von diesen eine oder mehrere HTML-(Hypertext Markup Language)-Seiten zugehörig sind. Die einem Server zugehörigen HTML-Seiten stellen Informationen und Hypertext-Links zu weiteren auf diesem und (üblicherweise) weiteren Servern befindlichen Dokumenten bereit. Server kommunizieren mit Clients unter Verwendung des Hypertext-Transfer-Protokolls (HTTP). Die Server warten auf Anfragen von Clients nach ihren HTML-Seiten und werden daher häufig als "Listeners" ("Horcheinheiten") bezeichnet.
  • Benutzer des World Wide Web verwenden ein Client-Programm, das als "Browser" bezeichnet wird, um Informationen von den "Listenern" anzufordern, zu dekodieren und anzuzeigen. Wenn der Benutzer eines Browsers auf einer HTML-Seite einen Link auswählt, sendet der Browser, welcher die Seite anzeigt, über das Internet eine Anfrage an den "Listener", zu dem die im Link angegebene URL-(Universal Resource Locator)-Adresse gehört. Reagierend auf die Anfrage sendet der "Listener" die angeforderte Information an den Browser, von dem die Anfrage stammt. Der Browser empfängt die Information, präsentiert die empfangene Information dem Benutzer und wartet auf die nächste Benutzeranfrage.
  • Herkömmlicherweise liegt die auf den "Listenern" gespeicherte Information in Form von statischen HTML-Seiten vor. Statische HTML-Seiten sind bereits erzeugt und im "Listener" gespeichert, bevor eine Anfrage von einem Web-Browser erfolgt. Reagierend auf eine Anfrage wird lediglich eine statische HTML-Seite aus dem Speicher ausgelesen und an den anfordernden Browser gesendet. Momentan besteht ein Trend, "Listener" zu entwickeln, die auf Browseranfragen mit der Durchführung dynamischer Operationen reagieren. Beispielsweise kann ein "Listener" auf eine Anfrage antworten, indem er eine Suchanfrage an eine Datenbank ausgibt, dynamisch eine Webseite aufbaut, welche die Ergebnisse der Suchanfrage enthält, und die dynamisch aufgebaute HTML-Seite an den anfordernden Browser sendet.
  • Ein weiterer Trend besteht darin, den Internetzugang außer auf herkömmliche Computersysteme auch auf weitere Geräte auszudehnen. Beispielsweise wurden viele mobile Clients (oder Mobilgeräte), beispielsweise Funktelefone, entwickelt, welche eingebettete Web-Browser beinhalten. Bedingt durch Größen- und Kosteneinschränkungen haben die in diesen Geräten enthaltenen "Mikro-Browser" sehr eingeschränkte Funktionalität im Vergleich zu den Browsern, die für über vollen Leistungsumfang verfügende Computersysteme entwickelt wurden. Jedoch können Geräte mit eingebetteten Mikro-Browsern bei Umständen verwendet werden, bei denen ein herkömmliches Computersystem nicht praktisch einsetzbar ist.
  • Die Anzahl von Gerätetypen, die Web-Inhalte in der einen oder der anderen Form anzeigen können, steigt weiter an. Beispielsweise gibt es Desktop-, Laptop- und Pocket-Computer, Mobiltelefone, Pager und PDAs (Personal Digital Assistants), die als "internetfähig" eingestuft werden können, da sie zum Anzeigen von Web-Inhalten in der Lage sind. Mit zunehmender Anzahl der internetfähigen Gerätetypen nimmt auch die Schwankungsbreite der Fähigkeiten der Geräte zu. Beispielsweise kompensieren übliche Mehrzweck-Computersysteme ihre fehlende Mobilität durch Bereitstellen großer Farbbildschirme, einer aufwändigen Tonausgabe, einer beträchtlichen Rechenleistung, einer Eingabe über eine ergonomische Tastatur und einfach zu verwendende Auswahlgeräte, wie beispielsweise eine Maus, einen Trackball oder ein Trackpad. Umgekehrt wird die Tragbarkeit kleiner mobiler Geräte auf Kosten der Bildschirmgröße und der leichten Eingabemöglichkeiten des Benutzers erzielt.
  • Noch ein weiterer Trend besteht darin, dass man Clients über einen in einem Netz befindlichen Server Dienste anbietet. Typischerweise ist das Netz das Internet, der Client ist ein Benutzer und der Dienst kann vom Server über eine Website bezogen werden. Der Dienst kann Informationen, wie beispielsweise Restaurantkritiken, Wetterberichte, Börsennotierungen oder aktuelle Nachrichten bereitstellen. Bei dem Dienst kann es sich auch um einen eher interaktiven Dienst handeln, beispielsweise einen, der dem Benutzer das Einkaufen von Waren ermöglicht, beispielsweise Bücher oder Musik, oder ihm ermöglicht, Dienste zu kaufen, wie beispielsweise das Buchen von Reisearrangements. Der Begriff "Dienst", wie hier verwendet, bedeutet, dass für einen Client Informationen, Funktionen oder Fähigkeiten bereitgestellt werden.
  • Das Verfahren, durch das der Benutzer auf den Dienst zugreift, hängt vom Client-Typ ab, über den der Benutzer verfügt. Beispielsweise kann ein Desktop-Computer mit dem Internet über eine Einwählleitung, eine DSL-(Digital Subscriber Line)-Leitung, ein Kabelmodem, eine ISDN-(Integrated Services Digital Network)-Verbindung oder viele weitere verfügbare Verfahren verbunden sein. WAP-(Wireless Application Protocol)-Telefone können mit dem Internet über eine drahtlose Verbindung mittels eines WAP-zu-HTTP-Gateways verbunden sein. Üblicherweise loggt sich der Client in die Website ein, und es wird ihm eine Liste von verfügbaren Diensten präsentiert, aus denen der Client den gewünschten Dienst auswählt.
  • Üblicherweise wird ein Dienst in einer von zwei Arten bereitgestellt: als gehostete Anwendung oder als Portalanwendung. Bei einer typischen gehosteten Anwendung erzeugt ein Entwickler die Anwendung, jedoch erfolgt Installation und Pflege der Anwendung für einen Zugriff durch Endbenutzer oder Kunden durch einen Host (Verarbeitungsrechner) des Hostserver-Netzes. Im Gegensatz dazu erfolgt bei einer typischen Portalanwendung sowohl Konzeption als auch Entwicklung der Anwendung für einen Zugriff durch Endbenutzer, oder Kunden, über einen oder mehrere vom Entwickler betriebene Server. Der Begriff "Entwickler" wie hier verwendet, kann eine Einzelperson, ein Firma oder eine juristische Person bezeichnen, die den Dienst bereitstellt (auch als Dienstanbieter oder Service-Provider bezeichnet), oder der Entwickler kann eine juristische Person sein, die für den Dienstanbieter Software-Entwicklungsdienste bereitstellt.
  • Ein übliches Problem bei der Bereitstellung von Diensten mittels Anwendungen, unabhängig davon, ob es sich um gehostete Anwendungen oder Portalanwendungen handelt, besteht darin, dass die Anwendung ausgelegt sein muss, um mit allen Geräten zusammenzuarbeiten. Jedoch ergeben sich bei den Geräten große Unterschiede ihrer Fähigkeiten, abhängig sowohl vom Gerätetyp als auch den speziellen Fähigkeiten unterschiedlicher Gerätemodelle gleichen Typs oder gleicher Geräteklasse. Beispielsweise verfügt ein Desktop-Computer üblicherweise über einen volle Funktionalität aufweisenden Web-Browser, hingegen verfügt ein PDA über einen Mikro-Browser mit eingeschränkter Funktionalität. Auch können einige Mobiltelefone eine eingeschränkte Anzeige aufweisen, bei der lediglich ein einziges Wort in jeder Zeile der Anzeige angezeigt werden kann, hingegen können andere Mobiltelefone eine größere Anzeige aufweisen, welche mehrere Wörter in jeder Zeile anzeigen kann.
  • Die unterschiedlichen Fähigkeiten können es für einen Anwendungsentwickler schwierig machen, alle möglichen Geräte zu unterstützen. Beispielsweise kann ein Dienst die Anzeige von graphischen Bildern beinhalten, beispielsweise solchen von zum Verkauf angebotenen Produkten, welche problemlos auf dem volle Funktionalität aufweisenden Web-Browser eines Desktop-Computers dargestellt werden können, jedoch möglicherweise nicht auf der Anzeige eines Mobiltelefons dargestellt werden können. Sogar wenn der Entwickler lediglich mit einem bestimmten Gerätetyp oder -klasse befasst ist, können die Unterschiede bei den Fähigkeiten signifikant sein. Wenn beispielsweise der Anwendungsprogrammierer eine Ausgabe sendet, die mehrere Wörter enthält, welche mehrere Informationselemente beschreiben, ist es möglich, dass Mobiltelefone mit begrenzten Anzeigebildschirmen lediglich das erste Wort eines jeden Informationselementes auf jeder Zeile des Anzeigebildschirms darstellen können, oder dass die Ausgabe für ein einziges Informationselement mehrere Zeilen auf der Anzeige des Telefon füllt, was eine gleichzeitige Darstellung weiterer Informationselemente verhindert.
  • Ein Ansatz zur Lösung des Problems der Gestaltung von Geräten unterschiedlicher Fähigkeiten besteht darin, eine Gestaltung im Hinblick auf den "kleinsten gemeinsamen Nenner" vorzunehmen. Der Lösungsansatz des kleinsten gemeinsamen Nenners beinhaltet, dass die Anwendung so gestaltet wird, dass sie mit dem die größten Einschränkungen aufweisenden Gerät zusammenarbeitet. Wenn beispielsweise ein Menü von Optionen auf einem Client-Gerät, wie beispielsweise einem Mobiltelefon, angezeigt werden soll, kann ein Anwendungsprogrammierer für jede der Optionen kurze, aus einem Wort bestehende Bezeichnungen wählen, da alle Geräte, welche die Anwendung nutzen werden, aus einem Wort bestehende Bezeichnungen unterstützen können. Beispielsweise kann der Anwendungsentwickler bei einer Landkartenanwendung das aus einem einzigen Wort bestehende Menüelement "Rückkehr" ("Return") für die Option des Erzeugens von Rückkehranweisungen von einem gewählten Zielpunkt verwenden.
  • Jedoch besteht ein Nachteil des Lösungsansatzes des kleinsten gemeinsamen Nenners darin, dass die Ausgabe nicht die größeren Fähigkeiten der übrigen Geräte ausnützt. Wenn beispielsweise ein Client in der Lage ist, eine längere Bezeichnung anzuzeigen, wie beispielsweise "Erzeuge Rückkehranweisungen" ("Generate Return Directions"), würde man die längere Bezeichnung bevorzugen, da "Rückkehr" ("Return") zweideutig ist und vom Benutzer in nicht zutreffender Weise in der Bedeutung "Rückkehr zum vorhergehenden Menü" interpretiert werden könnte. Außerdem bleiben die in neue Geräte eingebauten Fähigkeiten weitgehend ungenutzt, wenn alle Anwendungen auf die minimalen Fähigkeiten der älteren Geräte abzielen.
  • Ein alternativer Lösungsansatz zur Lösung des Problems einer Gestaltung für Clients oder Geräte unterschiedlicher Fähigkeiten besteht darin, eine Gestaltung im Hinblick auf ein mittleres Fähigkeitsniveau vorzunehmen, beispielsweise für den am häufigsten vorkommenden Typ von Mobiltelefon. Jedoch funktioniert möglicherweise eine Anwendung, welche diesen Lösungsansatz des mittleren Niveaus verwendet, nicht in korrekter Weise auf Geräten mit geringeren Fähigkeiten, und weiterhin nutzt diese Anwendung nicht die besseren Fähigkeiten der anderen Geräte aus.
  • Ein weiteres Problem bei der Bereitstellung von Diensten mittels Anwendungen besteht darin, wie eine Unterstützung von zusätzlichen Geräten erfolgen soll, die erst nach der Entwicklung der Anwendung auf dem Markt kommen. Beispielsweise erfolgt mehrere Monate, nachdem ein Dienstanbieter eine Anwendung auf den Markt bringt, durch einen Gerätehersteller die Markteinführung eines neuen Gerätes. Das neue Gerät kann einen entwicklungsmäßigen Vorteil gegenüber aktuell erhältlichen Geräten bedeuten, durch den bestehende Leistungsmerkmale verbessert werden, oder das neue Gerät kann einen beträchtlichen Fortschritt in dieser Geräteklasse bedeuten, durch den signifikante neue Leistungsmerkmale hinzukommen, oder das neue Gerät kann ein neuer Gerätetyp sein, der über neue Fähigkeiten oder eine neue Kombination von Fähigkeiten verfügt.
  • Den neuen Geräten mit verbesserten Fähigkeiten kann unter Verwendung des Lösungsansatzes des kleinsten gemeinsamen Nenners Rechnung getragen werden, jedoch bleiben dann die verbesserten Leistungsmerkmale und Fähigkeiten der neuen Geräte, beispielsweise größere Anzeigen, größtenteils ungenutzt. Wenn beispielsweise die Anwendung lediglich aus einem Wort bestehende Menüoptionen bereitstellt, nutzt die Anwendung nicht ein verbessertes Gerät aus, das eine Vielzahl von Wortoptionen anzeigen kann. Weiter kann es bei einem später auf den Markt gebrachten Gerät durch den Lösungsansatz des kleinsten gemeinsamen Nenners passieren, dass eine Nutzung neuer Fähigkeiten, beispielsweise die Handhabung von Sprachdaten oder graphischen Elementen, vollständig ungenutzt bleiben. Sogar wenn die Anwendung für ein mittleres Fähigkeitsniveau ausgelegt ist, ist es möglich, dass die Anwendung weiterhin nicht alle Vorzüge und Verbesserungen von in der Zukunft konzipierten Geräten vollständig ausnutzt.
  • Noch ein weiteres Problem bei der Anwendungsentwicklung besteht im Erlangen eines einfachen Zugriffs auf die Tools, die dem Entwickler zur Erzeugung der Anwendung zur Verfügung stehen. Typischerweise verwendet ein Entwickler, welcher eine Anwendung für eine spezielle Plattform auslegt (z.B. eine Kombination aus Hardware, Betriebssystem und/oder Protokollen), eine Software-Entwicklungsbibliothek (SDK). Eine SDK enthält üblicherweise eine Anwendungsprogrammierumgebung, einige üblicherweise verwendete Bibliotheken für verschiedene Leistungsmerkmale, Anwendungsprogrammierschnittstellen, Hilfsprogramme, eine Dokumentation, einen Compiler zum Erzeugen von ausführbarem Code aus Quellcode und einen Debugger zur Diagnose von Programmierproblemen. Zur Verwendung dieser Tools erhält der Entwickler die Software, die Dokumentation und weitere Materialien von einem SDK-Dienstanbieter, und dann installiert der Entwickler die Software und weitere Tools auf einem lokalen Computer oder Netz. Später erfolgt, wenn der SDK-Dienstleister Verbesserungen und Upgrades vornimmt, durch den Entwickler einen Einbau derartiger Änderungen in die lokale Installation des SDK-Paketes. Somit ist es möglicherweise erforderlich, dass die Anwendungsentwickler für Installation und Pflege des SDK beträchtliche Ressourcen aufwenden. Außerdem werden bei einem herkömmlichen SDK typischerweise nicht nur für das eigentliche SDK signifikante Ressourcen benötigt, sondern auch für die Anwendungsentwicklung und die Infrastruktur für Einrichten, Testen und Entwickeln der Runtime-Anwendungen.
  • Außerdem ist es möglich, dass einzelne Dienstanbieter weitere Dienste anbieten möchten, die in Bezug zu ihren Kerndiensten stehen, um das Gesamtpaket für die Kunden des Dienstes zu verbessern. Wenn beispielsweise ein Benutzer Fahrtrouten zu einem speziellen Zielort von einem Dienstanbieter heraussucht, möchte der Fahrtrouten-Dienstleister möglicherweise dem Benutzer zusätzliche Information über das Wetter oder die Gastronomiemöglichkeiten an einem speziellen Zielort anbieten. Eine Art, wie der Fahrtrouten-Dienstleister derartige zusätzliche Information anbieten kann, besteht in der Erzeugung der erforderlichen zusätzlichen Dienste, was beträchtliche zusätzliche Entwicklungsressourcen nach sich ziehen kann. Ein weiterer Lösungsansatz besteht darin, dass der Dienstanbieter mit einem anderen Dienstanbieter Absprachen trifft, um die gewünschte Funktionalität zu erzielen. Jedoch kann für das Treffen von Absprachen mit anderen Dienstanbietern ein beträchtlicher Koordinationsaufwand erforderlich sein, sowohl für die Einrichtung der technischen Infrastruktur zur Verbindung der Dienste der beiden Dienstanbieter als auch um zu Zwecken der Rechnungsstellung eine Messeinrichtung für die Häufigkeit der Nutzung durch die Kunden des ersten Dienstanbieters einzurichten.
  • Das Dokument US-A-5 960 432 offenbart ein Verfahren zur Verbesserung der Präsentation von Daten, die durch einen Client von einem Server-Computer empfangen werden. Insbesondere liefert das Verfahren individualisierte Daten für eine Präsentation mit einem vorgegebenen Basisdatensatz. Der Server liefert Blöcke von Daten, die dem Basisdatensatz zugehörig sind. Jeder der Datenblöcke wird für ein spezielles Publikum angepasst und ausgewählt.
  • Noch eine weitere Problematik bei der Bereitstellung von Diensten mittels Anwendungen besteht darin, dass der Dienstanbieter möglicherweise in die Anwendungen dauerhaft gespeicherte Daten einbauen möchte, welche den Anwendungen bei der Ausführung zur Verfügung stehen. Der Dienstanbieter ist dann damit konfrontiert, sich mit einer aufwändigen Erstellung und Pflege der gespeicherten Daten zu beschäftigen, damit die Daten verfügbar sind, wenn sie von den Anwendungen benötigt werden.
  • Basierend auf dem zuvor Beschriebenen ist es wünschenswert, verbesserte Verfahren für die Gestaltung von Anwendungen bereitzustellen, welche effektiver mit allen Geräten zusammenarbeiten. Es ist auch erwünscht, über verbesserte Verfahren zur Erzeugung von Anwendungen zu verfügen. Weiter ist es erwünscht, über verbesserte Verfahren zu verfügen, welche Dienstanbietern das Anbieten zusätzlicher Dienste ermöglichen. Es ist ebenfalls erwünscht, über verbesserte Verfahren zum Einbau gespeicherter Daten in einer Anwendung zu verfügen.
  • INHALT DER ERFINDUNG
  • Es werden Verfahren zur Online-Entwicklung von Anwendungen bereitgestellt. Gemäß einem Aspekt werden Anwendungen für Dienste "online" entwickelt. Es wird eine Anfrage eines Benutzers empfangen, der einen Browser auf einem Client laufen lässt, um eine neue Anwendung zu entwickeln. Reagierend auf die Anfrage wird ein erstes elektronisches Dokument, beispielsweise eine Webseite, dem Client geliefert, um auf dem Browser des Benutzers eine Anwendungsentwicklungsschnittstelle anzuzeigen. Die Schnittstelle kann mehrere Objekttypen beinhalten, einschließlich eines Bearbeitungsfeldes für eine Tastatureingabe von Code für eine Anwendung. Der Benutzer gibt den Anwendungscode weiter, indem er ein Objekt auf der Schnittstelle auswählt, beispielsweise eine Weitergabe- (oder Abschicken-)Schaltfläche. Der Anwendungscode ist auf einem Server gespeichert, der sich von dem Client entfernt befindet und von dem aus der Anwendungscode reagierend auf eine von einem Endbenutzer kommende Dienstanfrage ausgeführt werden kann. In ähnlicher Weise kann die Schnittstelle verwendet werden, um bestehenden Anwendungscode zu holen und zu bearbeiten, oder um bestehenden Anwendungscode zu testen, weiterzuentwickeln oder zu löschen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung ist beispielhaft und nicht einschränkend in den Figuren der beiliegenden Zeichnungen dargestellt, in denen gleiche Bezugszeichen ähnliche Elemente bezeichnen und die zeigen:
  • 1A ein Blockdiagramm, welches eine problemorientierte Übersicht eines Systems gemäß einem Ausführungsbeispiel der Erfindung darstellt, welches Dienste mittels Anwendungen bereitstellt, auf die über eine Zwischenstation zugegriffen wird;
  • 1B ein Blockdiagramm, welches eine Übersicht eines Host-Servers gemäß einem Ausführungsbeispiel der Erfindung darstellt;
  • 2 ein Blockdiagramm, welches eine Bedingungshierarchie gemäß einem Ausführungsbeispiel der Erfindung darstellt;
  • 3 ein Ablaufdiagramm, welches einen Lösungsansatz zur Auswahl eines alternativen Ausgabesegmentes gemäß einem Ausführungsbeispiel der Erfindung darstellt;
  • 4 ein Blockdiagramm, welches ein Beispiel einer Erzeugung einer Ausgabe unter Verwendung einer aufgeteilt gehosteten Anwendung gemäß einem Ausführungsbeispiel der Erfindung darstellt; und
  • 5 ein Blockdiagramm, welches ein Computersystem darstellt, auf dem ein Ausführungsbeispiel implementiert werden kann.
  • DETAILLIERTE BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
  • Es wird ein netzbasiertes Betriebssystem für Mobilgeräte beschrieben. In der folgenden Beschreibung werden zum Zweck der Erläuterung zahlreiche spezielle Details dargelegt, um für ein grundlegendes Verständnis der Erfindung zu sorgen.
  • Für einen Fachmann ist es jedoch klar, dass die Erfindung ohne diese speziellen Details realisiert werden kann. Im übrigen sind allgemein bekannte Strukturen und Vorrichtungen in Blockdiagrammform dargestellt, um eine unnötige Komplizierung der Darstellung der Erfindung zu vermeiden.
  • In der folgenden Beschreibung werden die verschiedenen Funktionen unter Themenüberschriften erläutert, die in der folgenden Reihenfolge erscheinen:
    • 1. STRUKTURELLE UND FUNKTIONALE ÜBERSICHT
    • A. Hosting von Anwendungen
    • B. Spezifische Anpassung von durch einen Dienst bereitgestelltem Inhalt
    • C. Bereitstellung von Inhalt von Mehrfachdiensten
    • D. Zugriff auf bei einer Zwischenstation gespeicherte Daten von einem Dienst
    • E. Online-Entwicklung von Anwendungen
    • II. ONLINE-ENTWICKLUNG VON ANWENDUNGEN
    • A. Erzeugung von Anwendungen und Diensten – Überblick
    • B. Entwicklung einer gehosteten Anwendung
    • C. Entwicklung einer aufgeteilt gehosteten Anwendung
    • D. Zugriff auf die neue Anwendung oder den neuen Dienst
    • III. GENERIEREN DES GERÄTESPEZIFISCHEN MARKUP-CODES
    • A. Generieren einer gerätespezifischen Formatierung
    • B. Erzeugung einer Ausgabe, die Anfragebedingungen berücksichtigt
    • C. Bedingungsunabhängige Ausgabe mit eingebetteten Hinweisen
    • D. Beispiel der Verwendung von eingebetteten Hinweisen zur Identifizierung eines Gerätetyps
    • E. Erzeugung einer Ausgabe basierend auf einer Bedingungshierarchie
    • F Erzeugung einer Ausgabe durch Abgleichen mit den Anfragebedingungen
    • G. Auswahl der Ausgabe basierend auf der vom Client-Gerät unterstützten Sprache
    • H. Verwendung eines Middleware-Transformers zur Umwandlung einer bedingungsunabhängigen Ausgabe
    • I. Beispiel der Erzeugung der Ausgabe unter Verwendung einer aufgeteilt gehosteten Anwendung
    • IV ZUGRIFF AUF WEITERE ANWENDUNGEN UND DIENSTE
    • A. Mobile Module
    • B. Speichern von Daten bei einer Zwischenstation
    • V. HARDWARE-ÜBERSICHT
  • I. STRUKTURELLE UND FUNKTIONALE ÜBERSICHT
  • Verfahren sind vorgesehen, um Konzeption und Entwicklung von Anwendungen zu erleichtern, welche verwendet werden, um Dienste für einen Zugriff durch Geräte wie beispielsweise mobile Clients bereitzustellen. Diese Verfahren beinhalten die Entwicklung von Anwendungen, die auf einer Vielzahl unterschiedlicher Geräte ausgeführt werden können, dadurch, dass eine spezifische Anpassung der Ausgabe erfolgt, nachdem sie von der Anwendung erzeugt wurde, und zwar basierend auf den speziellen Umständen der Nutzung der Anwendung durch den Endbenutzer, beispielsweise den Fähigkeiten eines mobilen Client oder den Netzbedingungen, die zu dem Zeitpunkt vorhanden sind, bei dem ein Kunde von der Anwendung einen Dienst anfordert. Ebenso beinhalten diese Verfahren das Kombinieren der Ausgabe, der Fähigkeiten und der Leistungsmerkmale der Dienste, und schließen Verfahren ein, welche einem Endbenutzer gestatten, zu einem Dienst zurückzukehren, auf den er früher schon zugegriffen hat. Außerdem beinhalten diese Verfahren ein Speichern von Daten bei einer Zwischenstation für einen Zugriff durch die einem Dienst zugehörigen Anwendungen unter Verwendung von Variablen und ein Mapping (Zuordnen) der Variablen auf die gespeicherten Daten.
  • Weiter beinhalten diese Verfahren das Bereitstellen einer Online-Software-Entwicklungsbibliothek (SDK), so dass Anwendungsentwickler Anwendungen konzipieren, testen, modifizieren und entwickeln können, ohne dass sie irgendeine spezielle client-seitige Software haben. Entwickler können Code über eine Schnittstelle eingeben, die durch die Website der SDK über das Internet bereitgestellt wird. Da die Website der SDK auf XML- und HTTP-Standards basiert, kann der Entwickler bestehenden Code weiterverwenden. Wenn beispielsweise der Entwickler einen IIS-(Microsoft Internet Information Services)-Server hat, der ".asp"-Seiten liefert, kann die Online-SDK auf den bestehenden Server und bestehende Seiten des Entwicklers zugreifen.
  • Wie hier verwendet, bezeichnet der Begriff "Endbenutzer" eine beliebige Person, Organisation oder juristische Person, die ein Gerät für einen Zugriff auf einen Dienst oder Anwendung verwendet. Der Begriff "Endbenutzer" umfasst den Begriff "Kunde", auch wenn der Begriff "Kunde" nicht notwendigerweise eine geschäftliche Beziehung mit einem Dienstanbieter impliziert. Auch unterscheidet sich der Begriff "Endbenutzer" vom Begriff "Benutzer", welcher, wie später noch erläutert wird, sich auf Entwickler und Dienstanbieter bezieht, welche die Anwendungen oder Computerprogramme, die für die Endbenutzer Dienste bereitstellen, erzeugen und pflegen.
  • A. Hosting von Anwendungen
  • 1A ist ein Blockdiagramm, welches eine problemorientierte Übersicht eines Systems gemäß einem Ausführungsbeispiel der Erfindung darstellt, welches Dienste mittels Anwendungen bereitstellt, auf die über eine Zwischenstation zugegriffen wird. 1 zeigt ein Netz 100, das einen Host-Server 110 beinhaltet. Das Netz 100 kann ein beliebiger Typ von Netz sein, einschließlich, jedoch nicht eingeschränkt auf ein privates Netz, wie beispielsweise ein Intranet, ein öffentliches Netz, wie beispielsweise das Internet, oder eine Kombination unterschiedlicher Netze und Netztypen.
  • Der Host-Server 110 kann auf einem oder mehreren Servern bei einer Zwischenstation implementiert sein, beispielsweise einem Hosting-Dienstanbieter, auch als Host-Provider oder einfach als Host bezeichnet. Die Funktion des Host besteht darin, beispielsweise auf einem Host-Server 110 Anwendungen, die entweder vom Host-Provider oder anderen Anwendungsentwicklern entwickelt werden, zu installieren und zu pflegen. Die Anwendungen sind typischerweise Teil eines Dienstes, beispielsweise einer Website, eines Funkruf-(Paging)-Dienstes oder eines Telekommunikationsdienstes. Der Host kann auch ein "partielles" oder "aufgeteiltes" Hosting von Anwendungen bereitstellen, wobei die Anwendungen auf Servern gespeichert sind, die dem Anwendungsentwickler oder dem Dienstanbieter zugehörig sind, jedoch kann auf die Anwendungen über den Host zugegriffen werden. Ein partielles oder aufgeteiltes Hosting von Anwendungen unterscheidet sich von Portalanwendungen, die auf Servern gespeichert sind, welche dem Anwendungsentwickler oder dem Dienstanbieter zugehörig sind, auf die jedoch nicht über den Host zugegriffen wird. Endbenutzer greifen auf die von anderen Parteien und Firmen angebotenen Dienste über den Host durch Interagieren mit den gehosteten und teilweise gehosteten Anwendungen zu.
  • Das Netz 100 beinhaltet auch Benutzer 120, 122, 124, die, wie dargestellt, mit dem Host-Server 110 sowie untereinander im Netz 100 verbunden sind. In 1A können Benutzer 120, 122, 124 Dienstanbieter sein, welche Dienste zur Nutzung durch Endbenutzer anbieten. Die Benutzer 120, 122, 124 können auch Anwendungsentwickler sein, welche zu den Dienstanbietern gehören oder mit diesen assoziiert sind. Die Dienstanbieter, die Anwendungsentwickler und weitere Parteien erzeugen und pflegen Anwendungen, die Teil eines Dienstes sind, der Endbenutzern angeboten wird.
  • Die Anwendungen, die Teil eines Dienstes sind, können durch den Hosting-Provider beispielsweise auf einem Host-Server 110 gehostet werden. Die Anwendungen können auch teilweise gehostet sein, indem sie bei einem einem Benutzer zugehörigen Server gespeichert werden, wie anhand einer Anwendung 126 dargestellt, die sich bei einem Benutzer 124 befindet und indem auf sie über den Hosting-Provider, beispielsweise über den Host-Server 110, zugegriffen wird.
  • B. Spezifische Anpassung von durch einen Dienst bereitgestelltem Inhalt
  • 1A stellt auch Endbenutzer 130, 132, 134 dar, die mit dem Host-Server 110 über Verbindungen 140, 142, 144 verbunden sind. Auch wenn die Endbenutzer 130, 132, 134 in 1 als extern zum Netz 100 dargestellt sind, können die Benutzer 130, 132, 134 oder weitere nicht dargestellte Endbenutzer ebenfalls Teil des Netzes 100 sein. Es gibt zahlreiche unterschiedliche Typen von Endbenutzern und Verbindungen. Beispielsweise kann ein Endbenutzer 130 ein Desktop-Computer sein, der mit dem Host-Server 110 auf viele unterschiedliche Arten verbunden ist, beispielsweise über das Internet, eine DSL-Verbindung oder eine ISDN-Verbindung. Auch kann es sich bei einem Endbenutzer 132 um ein PDA handeln, das mit dem Host-Server 110 über eine zellulare Modemverbindung verbunden ist. Weiter kann der Endbenutzer 134 ein Mobiltelefon sein, das mit dem Internet, und dadurch mit dem Host-Server 110, über ein WAP-zu-HTTP-Gateway verbunden ist.
  • 1A zeigt auch eine Verbindung 150 zwischen einem Endbenutzer 130 und einem Benutzer 120, sowie eine Verbindung 152 zwischen einem Endbenutzer 134 und einem Benutzer 124. Die Verbindungen 150 und 152 erlauben eine direkte Kommunikation zwischen den Endbenutzern und den Benutzern, wodurch illustriert wird, dass nicht alle Verbindungen zwischen Endbenutzern und Benutzern über den Host-Server 110 verlaufen. Beispielsweise kann der Endbenutzer 130 ein Desktop-Computer sein und ist daher beim Anfordern eines Dienstes in der Lage, direkt mit einem Benutzer 120 zu interagieren. Jedoch kann der Dienst, den der Endbenutzer 130 vom Benutzer 120 anfordert, durch eine gehostete Anwendung geliefert werden, die sich auf dem Host-Server 110 befindet. Reagierend auf die Dienstanfrage vom Endbenutzer 130, kann ein Benutzer 120 über eine Verbindung eine Anfrage an den Host-Server 110 senden, den Endbenutzer 130 mit einer Ausgabe von der gehosteten Anwendung zu beliefern, welche die Anfrage erfüllt. Reagierend auf die Anfrage vom Benutzer 120, kann dann der Host-Server 110 die geeignete gehostete Anwendung ausführen und die sich ergebende Ausgabe über Verbindung 140 an den Endbenutzer 130 senden.
  • Als weiteres Beispiel kann es sich bei Endbenutzer 134 um ein Mobiltelefon handeln, das mit dem Host-Server 110 interagiert. Der Endbenutzer 134 kann über den Host-Server 110 einen Dienst anfordern, der durch eine aufgeteilt gehostete Anwendung bereitgestellt wird, beispielsweise eine Anwendung 126, die von einem Benutzer 124 geliefert wird. Der Host-Server 110 leitet dann die Dienstanfrage vom Endbenutzer 134 zum Benutzer 124 weiter. Der Benutzer 124 führt dann die geeignete Anwendung, beispielsweise Anwendung 126, aus und sendet die sich daraus ergebende Ausgabe über Verbindung 152 an den Endbenutzer 134.
  • 1A stellt ein repräsentatives Ausführungsbeispiel eines Systems dar, welches ein netzbasiertes Betriebssystem für mobile Geräte bereitstellt, hingegen können in der Praxis viel größere und komplexere Netze verwendet werden, welche gegenüber der in 1A dargestellten Konfiguration zahlreiche Variationen aufweisen. Beispielsweise kann ein netzbasiertes Betriebssystem für Mobilgeräte mehr als einen dem Host zugehörigen Server und eine praktisch unbegrenzte Anzahl von Benutzern und Endbenutzern umfassen. Außerdem ist es möglich, dass sich nicht alle Benutzer in einem einzigen Netz wie beispielsweise Netz 100 befinden. Stattdessen können sich die Benutzer in vielen Netzen befinden, einschließlich des Internets und mehreren Intranets. In ähnlicher Weise können sich Endbenutzer in einem Netz befinden, dass auch den Host-Server und einen oder mehrere Benutzer beinhaltet. Außerdem kann der Host-Provider Endbenutzern Dienste direkt anbieten, zusätzlich dazu, dass er ein Hosten von Anwendungen für andere durchführt. Weiter sind die zuvor erörterten Typen von Endbenutzern, Benutzern und Verbindungen lediglich repräsentative Beispiele.
  • 1B ist ein Blockdiagramm, welches eine Übersicht des Host-Servers 110 gemäß einem Ausführungsbeispiel der Erfindung darstellt. Der Host-Server 110 beinhaltet Anwendungen 160, 162, bei denen es sich um gehostete Anwendungen, die auf dem Host-Server 110 gespeichert sind, oder um Links zu aufgeteilt gehosteten Anwendungen handeln kann, die auf anderen Servern gespeichert sind, ähnlich Anwendung 126.
  • Der Host-Server 110 beinhaltet einen Middleware-Transformer 112, welcher eine Anwendungsausgabe in eine Ausgabe umwandelt, welche basierend auf einer Dienstanfrage zugehörigen Parametern oder Bedingungen individuell angepasst oder zugeschnitten wird. Beispielsweise können die Fähigkeiten der von den Endbenutzern verwendeten Client-Geräte stark variieren. Gemäß einem Ausführungsbeispiel gestaltet der Anwendungsentwickler die Anwendung so, dass sie eine generische Ausgabe erzeugt, welche mehrere – auch als Ausgabesegmente bezeichnete – Ausgabevariationen beinhaltet, um die Ausgabe auf dem Client-Gerät zu präsentieren oder anzuzeigen. Die generische Ausgabe wird vom Middleware-Transformer 112 empfangen. Der Middleware-Transformer 112 empfängt oder erfasst auch die mit der Dienstanfrage verbundenen Parameter oder Bedingungen. Der Middleware-Transformer 112 wählt dann, basierend auf den der Dienstanfrage zugehörigen Parametern oder Bedingungen eine spezielle Ausgabevariation oder -option aus.
  • Beispielsweise kann es sich bei dem Client oder Endbenutzer um ein Mobiltelefon handeln, das Fahrtinstruktionen von einem Landkarten-Dienstanbieter anfordert. Möglicherweise ist das Mobiltelefon nicht zu einer graphischen Darstellung in der Lage, und daher braucht der Landkarten-Dienstanbieter lediglich eine Anfrageantwort zu liefern, die zur Darstellung der gewünschten Fahrtroute Text und keine graphischen Elemente beinhaltet. Jedoch kann der Landkarten-Dienstanbieter weitere Kunden haben, die andere Geräte verwenden, beispielsweise Laptop- Computer, die zusätzlich zu Text auch zur Anzeige von Grafikelementen in der Lage sind.
  • Die vom Landkarten-Dienstanbieter verwendete Anwendung kann daher eine generische Ausgabe erzeugen, die mehrere Variationen der angeforderten Instruktionen beinhaltet, beispielsweise ein Ausgabesegment, welches lediglich Text enthält, und ein anderes, welches Text und graphische Elemente enthält. Die Anwendung liefert die generische Ausgabe an den Middleware-Transformer 112, welcher auch Parameter oder Informationen von der Anfrage empfängt, beispielsweise Daten, welche anzeigen, dass es sich bei dem Client-Gerät um ein Mobiltelefon handelt. Der Middleware-Transformer 112 wählt dann aus der generischen Ausgabe dasjenige Ausgabesegment aus, welches lediglich Text enthält, und erzeugt eine spezifisch angepasste Ausgabe, welche das lediglich Text umfassende Ausgabesegment der Anwendung enthält, und dann sendet der Middleware-Transformer die spezifisch angepasste Ausgabe an den Endbenutzer. Bei einem weiteren Ausführungsbeispiel erzeugt die Anwendung einen umfassenden Satz von Ausgabeinformation, basierend auf einem Style-Sheet (Formatspezifikation), das auf Basis des Client-Gerätes gewählt wird.
  • Der Lösungsansatz, bei dem ein Host verwendet wird, welcher eine generische Ausgabe empfängt und eine spezifisch angepasste Ausgabe erzeugt, bietet mehrere Vorteile. Beispielsweise braucht der Anwendungsentwickler nicht mehrere Anwendungen, oder unterschiedliche Ausgaberoutinen, für jede spezifische Bedingung zu schreiben, für die Änderungen der Ausgabe angezeigt scheinen. Tatsächlich braucht der Anwendungsentwickler nicht einmal in der Lage zu sein, auf diese Bedingungen hin zu testen. Vielmehr kann der Anwendungsentwickler für jede der speziellen Bedingungen lediglich eine einzige Anwendung mit Ausgabevariationen schreiben, die das spezielle Modell des Client-Gerätes, den Typ des Client-Gerätes und eine breit oder eng gefasste Klasse des Client-Gerätes, die Netzbedingungen etc. beinhalten kann. Bei einer Einführung von neuen Geräten und Fähigkeiten kann der Middleware-Transformer die Ausgabe variation auswählen, welche für die Fähigkeiten der neuen Client-Geräte am besten passt.
  • Als weiteres Beispiel können die Ausgabesegmente von den zum Zeitpunkt der Anfrage vorliegenden Bedingungen abhängen, beispielsweise eine Netzüberlastung, der Zeitpunkt der Anfrage oder der Ort des Benutzers, was es dem Middleware-Transformer ermöglicht, unter Berücksichtigung dieser Bedingungen eine Ausgabevariation auszuwählen oder die Ausgabe zu formatieren. Daher kann der Anwendungsentwickler die Anwendung so gestalten, dass sie eine generische Ausgabe liefert, welche Ausgabesegmente für jede von einer Vielzahl unterschiedlicher Bedingungen beinhaltet, und dann dem Host erlauben, die spezielle Ausgabe auszuwählen, welche dem Endbenutzer basierend auf den speziellen Bedingungen für die spezielle Anfrage geliefert werden soll.
  • C. Bereitstellung von Inhalt von Mehrfachdiensten
  • Der Host-Server 110 beinhaltet auch einen Dienste-Linker 114, welcher Dienstanfragen von Endbenutzern abwickelt und die Anfragen zur Beantwortung an den geeigneten Dienst oder Anwendung weiterleitet. Außerdem kann der Dienste-Linker 114 die Session (oder Transaktion) von anderen Diensten aktiv halten. Beispielsweise kann ein Endbenutzer ein Mobiltelefon sein, das mit dem Host kommuniziert. Der Host liefert dem Endbenutzer eine Liste von Optionen, die einen Landkarten-Dienst beinhalten kann. Wenn der Endbenutzer den Landkarten-Dienst unter Verwendung des Mobiltelefons auswählt, empfängt der Dienste-Linker 114 die Anfrage vom Endbenutzer und leitet die Anfrage an den Anbieter des geeigneten Dienstes weiter. Wenn beispielsweise der Dienst unter Verwendung einer aufgeteilt gehosteten Anwendung geliefert wird, kann die Anfrage zu einem dem Landkarten-Dienstanbieter zugehörigen Server über das World Wide Web weitergeleitet werden. Die Antwort auf die Anfrage der aufgeteilt gehosteten Anwendung kann dann beim Host in Form einer generischen Ausgabe empfangen werden, die speziell für das Mobiltelefon angepasst ist, beispielsweise wie zuvor erläutert unter Verwendung eines Middleware-Transformers.
  • In einem weiteren Ausführungsbeispiel sind in Anwendungen die Leistungsmerkmale und Ausgaben weiterer Anwendungen integriert. Die Anwendungen können auch als mobile Module oder einfach als Module bezeichnet werden. Wenn beispielsweise Anwendung 160 in 1B Landkarteninstruktionen bereitstellt, möchte der Landkarten-Dienstanbieter möglicherweise auch Information betreffend das Wetter an dem vom Endbenutzer angegebenen Zielort mitschicken. Anstatt eine separate Wetteranwendung zu entwickeln, kann der Landkarten-Dienstanbieter einen Link zu einer anderen gehosteten oder aufgeteilt gehosteten Anwendung setzen, die von einem Wetterinformations-Dienstanbieter bereitgestellt wird, der mit dem Host-Server 110 in Verbindung steht. Beispielsweise kann die Anwendung 162 eine Wetteranwendung oder ein Modul sein, das von einer anderen Firma als der den Landkartendienst bereitstellenden Firma bereitgestellt wird. Da jedoch beide Firmen Module haben, die dem Host-Server zugehörig sind, können beide einen Link zu den Modulen der anderen Firma in der Ausgabe ihrer Anwendung beifügen. Basierend auf den Links kann der Middleware-Transformer eine Ausgabe der einen Anwendung in eine andere Anwendung integrieren, oder dem Endbenutzer kann ein Link präsentiert werden, um ihm einen Zugriff auf die Leistungsmerkmale des anderen Dienstes zu ermöglichen.
  • Außerdem kann, da der Host-Server die Interaktion zwischen den zwei Diensten abwickelt, der Host zurück verfolgen, welche Module sich gegenseitig aufrufen, um eine Rechnungsstellung zwischen den Diensten zu erleichtern. Außerdem erlaubt dieses Zurückverfolgungsmerkmal, dass das eine Modul ein anderes Modul zurückruft, ohne dass es die Identität des anderen Moduls kennt. Wenn beispielsweise ein erstes Modul ein zweites Modul aufruft, erlaubt das Zurückverfolgungsmerkmal dem zweiten Modul, das erste Modul zurückzurufen. Demzufolge kann ein beliebiger Dienst als Modul verwendet werden, was sich so beschreiben lässt, dass ein wiederverwendbarer Web-Dienst für weitere Dienste bereitgestellt wird.
  • D. Zugriff auf bei einer Zwischenstation gespeicherte Daten von einem Dienst
  • Der Host-Server 110 beinhaltet auch eine Datenbank 170, um ein Speichern von Daten beim Host durch die Dienste für eine Verwendung durch die Anwendungen dieser Dienste zu unterstützen. Auch wenn die Datenbank 170 als Teil des Host-Servers 110 dargestellt ist, kann die Datenbank 170 durch einen weiteren Server oder ein weiteres Gerät unterstützt werden, der oder das sich zum Bereitstellen von Datenbankfunktionen eignet. Die Datenbank 170 kann eine Datenstruktur für ein Speichern von Daten und auch für ein Mapping von Variablen oder Kennungen auf spezielle Daten oder Informationselemente beinhalten. Die Dienste können die Datenbank 170 verwenden, um Information beim Host-Server dauerhaft zu speichern und zu pflegen, wodurch die Dienste vom Zwang befreit sind, eine derartige Datenbank selber zu unterstützen. Beispielsweise kann eine Anwendung eine Ausgabe mit einer Kennung "%xyzlogo" erzeugen, das im in der Datenbank 170 gespeicherten Mapping als einem speziellen graphischen Bild der XYZ-Firma zugeordnet identifiziert ist. Als weiteres Beispiel kann die Ausgabe der Anwendung "%date" beinhalten, um das aktuelle Datum anzuzeigen, wenn auf die Anwendung reagierend auf eine Anfrage eines Endbenutzers zugegriffen wird. Beim Empfangen der Ausgabe beim Middleware-Transformer wird das aktuelle Datum anstelle der Variablen %date in die Ausgabe eingesetzt.
  • E. Online-Entwicklung von Anwendungen
  • Der Host-Server 110 beinhaltet auch eine Online-Software-Entwicklungsbibliothek 116, die Dienste und Anwendungen bereitstellt, die Entwickler verwenden können, um Anwendungen oder Module, die dem Hosting-Dienst zugehörig sind, zu konzipieren, zu bearbeiten, zu testen, zu entwickeln und anderweitig zu verwalten. Gemäß einem Ausführungsbeispiel verwendet ein Anwendungsentwickler einen Browser, um sich in eine Online-Entwicklungs-Website einzuloggen, die dem Host ng-Dienst zugehörig ist, um auf die Online-Software-Entwicklungsbibliothek 116 zuzugreifen. Nach dem Einloggen stellt die Online-Software-Entwicklungsbibliothek 116 eine Benutzerschnittstelle zum Anzeigen auf dem Web-Browser des Entwicklers bereit. Die Benutzerschnittstelle präsentiert dem Benutzer verschiedene Optionen, beispielsweise das Erzeugen einer neuen Anwendung, das Modifizieren einer bestehenden Anwendung, das Testen einer Anwendung oder das Löschen einer bestehenden Anwendung. Beispielsweise führt der Anwender, um eine gehostete Anwendung zu erzeugen, eine Eingabe oder eine Modifikation von Programmcode unter Verwendung der Benutzerschnittstelle über den Browser des Entwicklers durch und speichert dann den Code beim Host-Server 110 unter einem Modul- oder Anwendungsnamen oder einer Kennung ab. Wenn der Entwickler eine aufgeteilt gehostete Anwendung einrichten möchte, loggter sich in die Online-Entwicklungs-Website ein und gibt die URL der Anwendung ein. Die gehosteten und aufgeteilt gehosteten Anwendungen können dann unmittelbar zur Verfügung gestellt werden. Beispielsweise können sich Endbenutzer über eine Website beim Dienstanbieter einloggen, um auf eine Liste von verfügbaren Diensten zuzugreifen.
  • II. ONLINE-ENTWICKLUNG VON ANWENDUNGEN
  • A. Erzeugung von Anwendungen und Diensten – Überblick
  • Gemäß einem Ausführungsbeispiel verwendet ein Entwickler einen auf einem Client laufenden Browser, um sich in eine Website einzuloggen, über die der Entwickler dann auf die erforderlichen Tools zugreifen kann, um eine Anwendung ohne irgendeine spezielle client-seitige SDK-Software zu entwickeln. Die Website kann als Entwicklungs-Website oder "SDK-Website" bezeichnet werden, wenn die Website beispielsweise eine Online-Software-Entwicklungsbibliothek (SDK) bereitstellt oder hostet.
  • Wie hier verwendet, ist die Bezeichnung "Entwickler" synonym sowohl mit "Dienstanbieter" als auch "Benutzer" (da der Entwickler die Online-Entwicklungs-Website 'benutzt'). Außerdem unterscheidet sich ein "Benutzer" von einem Endbenutzer oder Kunden, der den vom Entwickler bereitgestellten Dienst verwendet.
  • Der Anbieter der Anwendungsentwicklungstools und Host der Online-Entwicklungs-Website kann als Entwicklungsanbieter, SDK-Anbieter, oder einfach als Host bezeichnet werden. Der Entwicklungsanbieter verwendet typischerweise einen oder mehrere Server, um die Entwicklungs-Website und die durch diese bereitgestellten Tools zu unterstützen.
  • Der Zugriff auf die Entwicklungs-Website kann dadurch gesteuert werden, dass der Benutzer einen Namen und ein Passwort haben muss. Nachdem der Benutzer Zugang zur Website erlangt hat, kann ihm eine Liste von mobilen Anwendungen (hier auch als Dienste bezeichnet) präsentiert werden, die der Entwickler oder Benutzer zuvor erzeugt hat. Der Benutzer kann auch Zugang zu weiteren Diensten haben, beispielsweise Testexemplaren, die vom Entwicklungs-Website-Anbieter bereitgestellt werden. Die Entwicklungs-Website kann dem Benutzer mehrere Optionen anbieten, beispielsweise einen neuen Dienst hinzuzufügen, einen bestehenden Dienst zu modifizieren oder einen bestehenden Dienst zu löschen. Wenn beispielsweise der Benutzer die "Dienst hinzufügen"-Option auswählt, wird dem Benutzer eine Benutzerschnittstelle präsentiert, welche dem Benutzer das Hinzufügen eines Dienstes erlaubt.
  • Gemäß einem Ausführungsbeispiel kann ein Dienst entweder eine gehostete Anwendung oder eine Portalanwendung sein. Eine gehostete Anwendung ist eine Anwendung, deren Code bei der Entwicklungs-Website, auch als Host-Website bezeichnet, gepflegt wird. Eine Portalanwendung ist eine Anwendung, deren Code bei einer anderen Website gepflegt wird, die mit dem Portalanwendungsentwickler in Verbindung steht und auf die typischerweise über die Website des Entwicklers von Kunden oder Endbenutzern zugegriffen wird. Jedoch kann gemäß einem weiteren Ausführungsbeispiel der Zugriff auf eine Portalanwendung oder das Liefern von dieser an Clients auch über die Entwicklungs-Website erfolgen, in welchem Fall die Portalanwendung als "aufgeteilte gehostete Anwendung" oder "teilweise gehostete Anwendung" bezeichnet werden kann.
  • B. Entwicklung einer gehosteten Anwendung
  • Das Entwickeln einer gehosteten Anwendung kann mehrere Schritte umfassen, beispielsweise wird zu Anfang die Anwendung konzipiert, anschließend die Anwendung bearbeitet und die Anwendung getestet. In einem Ausführungsbeispiel stellt die Entwicklungs-Website zur Erzeugung einer gehosteten Anwendung dem Entwickler oder Benutzer eine Schnittstelle zum Schreiben und Bearbeiten von Code für die Anwendung bereit. Die Schnittstelle kann ein Bearbeitungsfenster oder ein Bearbeitungsfeld beinhalten, das der Benutzer verwenden kann, um eine Tastatureingabe des Codes für die Anwendung vorzunehmen. In ähnlicher Weise wird zum Bearbeiten einer bestehenden Anwendung dem Benutzer eine Schnittstelle geboten, welche den bestehenden Anwendungscode dem Benutzer in einem Bearbeitungsfenster anzeigt, das dem Benutzer ein Bearbeiten des Codes der gewählten Anwendung ermöglicht.
  • Anwendungscode kann in einer geeigneten "Markup-Sprache" (Auszeichnungssprache – ML), wie beispielsweise XML (Extensible Markup Language – erweiterbare Auszeichnungssprache) geschrieben sein. Gemäß einem Ausführungsbeispiel ist der Code in einer Markup-Sprache geschrieben, die hier als "Portal-to-go-XML" bezeichnet wird. Die "Portal-to-go"-Sprache und die "Portal-to-go-XML"-Sprache wird auch als Oracle9iASWireless-Sprache bzw. Oracle9iASWireless-XML-Sprache (oder einfach IASWireless XML) bezeichnet.
  • Portal-to-go-XML besteht aus einem Satz von XML-Tags, die verwendet werden können, um Grenzen zwischen alternativen Ausgabesegmenten anzuzeigen.
  • Jedes Ausgabesegment in einem Satz von Ausgabesegmenten kann speziell für bestimmte Geräte ausgelegt sein, beispielsweise Mobilgeräte, die typischerweise kleine Bildschirme haben, sowie weitere mit Sprachfähigkeiten.
  • Portal-to-go-XML kann mittels einer beliebigen der herkömmlichen Einrichtungen zur Erzeugung von dynamischem HTML erzeugt werden, beispielsweise Java-Server Pages, CGI oder Active Server Pages, derart, dass anstelle einer Erzeugung von HTML durch den Code oder Script eine Erzeugung von Portal-to-go-XML erfolgt. Die Details einer derartigen Markup-Sprache wie beispielsweise Portal-to-go-XML kann in einer Dokumenttyp-Definition (DTD) definiert sein. Beispielsweise findet sich eine Beschreibung einer DTD von einer Portal-to-go-XML, wie implementiert in einem Ausführungsbeispiel, in der provisorischen US-Anmeldung, Seriennummer 60/230,489, eingereicht am 6. September 2000.
  • Gemäß einem weiteren Ausführungsbeispiel wird sowohl der Anwendungscode für eine gehostete Anwendung als auch der Code, welcher die Erzeugung der Benutzerschnittstelle bewirkt, die zum Eingeben und Bearbeiten des Codes verwendet wird, auf einem oder mehreren mit dem Entwicklungsanbieter in Verbindung stehenden Servern gespeichert. Demzufolge ist die einzige clientseitige Software, die zum Entwickeln und einsetzbar Machen einer mobilen Anwendung benötigt wird, ein Web-Browser wie beispielsweise Netscape Navigator.
  • Wenn der Benutzer das Eingeben des Codes für eine neue Anwendung oder das Bearbeiten des Codes für eine bestehende Anwendung beendet, kann er den in der Schnittstelle dargestellten Code speichern. Die "Code speichern"-Funktion kann ein in der Schnittstelle enthaltenes Objekt wie beispielsweise eine Schaltfläche sein. Durch Anklicken des Objektes wird der Code an einen vom Server entfernt befindlichen Client weitergegeben oder gesendet, beispielsweise einen mit dem Entwicklungsanbieter in Verbindung stehenden Server. Wenn eine neue Anwendung erzeugt wird, legt der Benutzer einen Dienstnamen fest und der Code wird in Verbindung mit diesem Dienstnamen gespeichert. Nach dem Speichern des neuen Codes wird der neue Dienstname in einer Liste bestehender Dienste angezeigt, wenn sich Benutzer und Endbenutzer in die Entwicklungs-Website einloggen. Wenn eine bestehende Anwendung modifiziert wird, kann der Benutzer wählen, den Code unter dem bestehenden Dienstnamen oder unter einem neuen Dienstnamen zu speichern.
  • Um die Anwendung zu testen, kann der Benutzer auf die Anwendung oder den Dienst über die Entwicklungs-Website unter Verwendung eines Mobilgerätes oder eines Mobilgerät-Simulators zugreifen. Dies wird später noch detaillierter unter "Zugreifen auf die neue Anwendung oder Dienst" erörtert. Die gehostete Anwendung, die über die Entwicklungs-Website eingesetzt wird, steht über die Host-Website dem Benutzer für ein Testen und den Endbenutzern für eine Verwendung unmittelbar zur Verfügung.
  • C. Entwicklung einer aufgeteilt gehosteten Anwendung
  • Bei einem weiteren Ausführungsbeispiel schreibt der Benutzer, um eine aufgeteilt gehostete Anwendung zu erzeugen, entweder ein Portal-to-go-XML-Dokument oder ein Anwendungsprogramm, das ein Portal-to-go-XML-Dokument als Ausgabe erzeugt. Die Begriffe "teilweise gehostete Anwendung" oder "aufgeteilt gehostete Anwendung" können verwendet werden, um entweder auf das XML-Dokument oder die Anwendung Bezug zu nehmen, welche ein XML-Dokument als Ausgabe erzeugt. Die aufgeteilt gehostete Anwendung kann beispielsweise auf der dem Anwendungsentwickler selbst gehörenden Website gespeichert werden. Der Benutzer verknüpft dann eine URL mit der aufgeteilt gehosteten Anwendung, beispielsweise unter Verwendung eines HTTP-Listeners/Web-Servers, der die Website des Anwendungsentwicklers bedient. Die aufgeteilt gehostete Anwendung wird dann als "Dienst" hinzugefügt, dadurch dass ein Einloggen in die Entwicklungs-Website oder die SDK-Website durchgeführt wird und der Name des Dienstes und die mit der aufgeteilt gehostete Anwendung verbundene URL eingegeben wird.
  • D. Zugriff auf die neue Anwendung oder den neuen Dienst
  • Sobald ein Dienst erzeugt wurde und/oder überarbeitet wurde, können Endbenutzer oder Kunden, die sich mit dem Netz verbinden können, in dem sich der Server befindet (z.B. dem Internet), auf den Dienst zugreifen. Das Verfahren, durch das auf den Dienst zugegriffen wird, kann basierend auf dem Typ des Endbenutzers variieren. Beispielsweise kann sich ein Desktop-Computer mit dem Internet über eine Einwahlverbindung, eine DSL-Verbindung, ein Kabelmodem, eine ISDN-Verbindung oder viele weitere zur Verfügung stehende Verfahren verbinden. WAP-Telefone können sich mit dem Internet über eine drahtlose Verbindung unter Verwendung eines synchronen Protokolls verbinden, beispielsweise über ein WAP-zu-HTTP-Gateway, oder unter Verwendung eines asynchronen Protokolls, wie beispielsweise des SMTP (Simple Mail Transfer Protocol) oder des SMS-(Short Message Service)-Protokoll.
  • Im Allgemeinen loggt sich der Endbenutzer in die Entwicklungs-Website ein und es wird ihm eine Liste von verfügbaren Diensten angeboten. Der Endbenutzer kann den Dienst auswählen, der gerade erzeugt und/oder modifiziert wurde. Reagierend auf die Auswahl eines Dienstes wird die dem Dienst zugehörige Anwendung erzielt. Die Anwendung kann mit einem Portal-to-go-XML-Dokument oder einem anderen in einer geeigneten Markup-Sprache geschriebenen Dokument verbunden sein. Beispielsweise kann bei gehosteten Anwendungen das XML dadurch erzielt werden, dass das Portal-to-go-XML geladen wird, das bei einem Server gespeichert ist, der mit der Zwischenstation (z.B. dem Host) in Verbindung steht. Für Portalanwendungen kann eine Anfrage an die vom Entwickler für den Dienst spezifizierte URL gesendet werden. Der Web-Server, welcher die URL verwaltet, kann sich an die Portalanwendung wenden und die der Portalanwendung zugehörige Portal-to-go-XML an den mit der Zwischen station in Verbindung stehenden Server zurückschicken. Sobald die Portal-to-go-XML für den Dienst entweder für eine gehostete oder eine Portalanwendung erhalten wurde, verwendet der mit der Zwischenstation in Verbindung stehende Server die Portal-to-go-XML, um den gewählten Dienst an den zum Endbenutzer gehörigen Client zu liefern.
  • III. GENERIEREN VON GERÄTESPEZIFISCHEM MARKUP-CODE
  • A. Generieren einer gerätespezifischen Formatierung
  • Gemäß einem Ausführungsbeispiel wird eine Ausgabe in der Markup-Sprache, beispielsweise Portal-to-go-XML, durch einen Dienst ungeachtet des Typs des Client-Gerätes erzeugt, welches den Dienst anfordert. Gemäß einem Ausführungsbeispiel werden, bevor die Ausgabe an einen Client geliefert wird, eine oder mehrere XSL-(Extensible Stylesheet Language)-Style-Sheets basierend auf dem Gerätetyp des Client ausgewählt. XSL-Style-Sheets sind detaillierter in der US-Anmeldung, Seriennummer 09/631,884, eingereicht am 4. August 2000, erläutert.
  • Die ausgewählten Style-Sheets werden auf das vom Dienst ausgegebene XML angewandt, um eine spezifisch angepasste Ausgabe zu liefern, die speziell für den Client formatiert ist, welcher den Dienst angefordert hat. Beispielsweise kann sich die gleiche XML-Ausgabe einer mobilen Anwendung am Ende auf die folgenden drei Arten manifestieren, und zwar in Abhängigkeit vom Typ des Client, der den Dienst angefordert hat: (1) eine Liste von Optionen auf der Anzeige eines Mobiltelefons, (2) ein Pull-down-Menu in einem Browser und (3) eine von der Sprachschnittstelle eines Telefons mündlich dargebotene Liste von Optionen. Der Anwendungsentwickler erzielt eine Unterstützung eines beliebigen Gerätes, ohne dass er irgendeine spezielle Programmierung auszuführen braucht, da die Anwendungen so ausgelegt sind, dass sie die gleiche XML-Ausgabe ungeachtet des zur Anforderung des Dienstes verwendeten Gerätes erzeugen, und da die geräte spezifische Formatierung außerhalb der Anwendungen erfolgt, beispielsweise durch dazwischen geschaltete gerätespezifische XSL-Style-Sheets.
  • Da weiter die Ausführung des Codes und die Anwendung der XSL-Style-Sheets auf dessen Ausgabe über den Host erfolgen, erzielen alle gehosteten Anwendungen und Portalanwendungen automatisch eine gerätespezifische Unterstützung für neue Geräte, sobald auf dem Host die XSL-Style-Sheets für die neuen Geräte installiert sind. Der Anwendungsentwickler braucht keine Änderungen am Anwendungscode vorzunehmen, um beliebige zusätzliche oder neu entwickelte Client-Geräte zu unterstützen. Selbstverständlich kann der Entwickler, wenn er verbesserte oder hinzugekommene Fähigkeiten ausnützen möchte, die Anwendung aktualisieren, um zusätzliche Ausgabesegmente oder Variationen für derartige Fähigkeiten bereitzustellen.
  • B. Erzeugung einer Ausgabe, die Anfragebedingungen berücksichtigt
  • Ein weiteres Problem beim Bereitstellen von Diensten mittels Anwendungen besteht darin, dass die Funktion der Anwendungen unveränderlich ist, ungeachtet der spezifischen Bedingungen, die zum Zeitpunkt der Verwendung der Anwendungen bestehen. Beispielsweise kann es erwünscht sein, die Ausgabe der Anwendung basierend auf der Auslastung des Netzes zum Zeitpunkt eines Zugriffs auf die Anwendung durch den Benutzer zu modifizieren. Wenn das Netz stark ausgelastet ist, kann es besser sein, den in der Ausgabe bereitgestellten Detailumfang zu begrenzen, der während solcher Zeiten starker Auslastung bereitgestellt wird. Wiederum kann der Anwendungsprogrammierer hier den Lösungsansatz des kleinsten gemeinsamen Nenners verwenden und die Anwendung für "Worst-Case"-Bedingungen auslegen. Jedoch wird bei diesem Lösungsansatz versäumt, bessere Bedingungen zu nutzen, wenn diese zu anderen Zeiten gegeben sind. Wenn der Programmierer ein höheres Detailniveau wählt, dann leidet die Fähigkeit der Anwendung, dem Client-Gerät in Zeiten starker Netzauslastung eine Ausgabe zu liefern.
  • Verfahren sind vorgesehen, um eine Ausgabe zu erzeugen, welche mit einer Dienstanfrage verbundene Bedingungen, Parameter und besondere Merkmale berücksichtigt (welche auch als "Anfragebedingungen" bezeichnet werden). Anfragebedingungen können beispielsweise Information über den Typ des Client beinhalten, der den Dienst anfordert, beispielsweise einen Gerätetyp oder Umgebungsbedingungen, beispielsweise die Zeit, zu der die Dienstanfrage erfolgt oder zu der dieser entsprochen wird, oder die Auslastung des Netzes, über das der Dienst angefordert oder bereitgestellt wird.
  • Gemäß einem Ausführungsbeispiel erzeugt ein Anwendungsprogramm unverändert die gleiche Ausgabe, ungeachtet der Anfragebedingungen. Da die Ausgabe der Anwendung ungeachtet der Anfragebedingungen die gleiche ist, wird auf sie hier als "bedingungsunabhängige Ausgabe" Bezug genommen.
  • Gemäß einem weiteren Ausführungsbeispiel enthält die von einer Anwendung erzeugte bedingungsunabhängige Ausgabe "Hinweise" (oder Kriterien, Bedingungen und weitere Richtlinien), wie die Ausgabe unter bestimmten Anfragebedingungen bearbeitet werden sollte. Ein Middleware-Transformer ist vorgesehen, der die bedingungsunabhängige Ausgabe empfängt und die in dieser enthaltenen Hinweise zusammen mit der Kenntnis des Client und den Anfragebedingungen verwendet, um die bedingungsunabhängige Ausgabe in eine "bedingungsspezifische Ausgabe" umzuwandeln, welche auch als "bedingungsabhängige Ausgabe" bezeichnet werden kann. Die bedingungsspezifische Ausgabe wird dann an den Client geliefert, der den Dienst angefordert hat, welcher die Ausgabe erzeugt hat. Der Middleware-Transformer ist typischerweise dem Host zugehörig und kann durch einen einem Host zugehörigen Server bereitgestellt werden, jedoch ist der Middleware-Transformer nicht auf dem Host zugehörige Implementierungen eingeschränkt.
  • C. Bedingungsunabhängige Ausgabe mit eingebetteten Hinweisen
  • Gemäß einem Ausführungsbeispiel gestalten Anwendungsprogrammierer Anwendungen so, dass sie eine Ausgabe erzeugen, die "Hinweise" enthält, wie die Ausgabe basierend auf den Anfragebedingungen umgewandelt werden sollte. Gemäß einer Implementierung gestaltet der Anwendungsprogrammierer die Anwendungen so, dass sie eine Ausgabe erzeugen, die mehrere Variationen der Ausgabe benennt, wodurch der Anfrage an die Anwendung genügt wird, welche zur Erzeugung der Ausgabe geführt hat. Die Variationen der Ausgabe können auch als alternative Ausgabesegmente bezeichnet werden.
  • Die Ausgabe der Anwendung beinhaltet auch eines oder mehrere Kriterien oder Bedingungen, die jedem der alternativen Ausgabesegmente zugehörig sind. Ein Middleware-Transformer wird verwendet, um das alternative Ausgabesegment auszuwählen, bei dem die beste Übereinstimmung zwischen den Anfragebedingungen und den Kriterien oder Bedingungen besteht, welche jedem alternativen Ausgabesegment zugehörig sind. Eine Übereinstimmung kann basierend darauf bestimmt werden; ob der oder den Bedingungen, die einem speziellen alternativen Ausgabesegment zugehörig sind, genügt wird oder nicht (oder ob die Bedingungen erfüllt sind oder nicht).
  • Wenn beispielsweise die Anwendungsausgabe in Form einer Markup-Sprache, beispielsweise XML, vorliegt, kann die Ausgabe einen Code-Abschnitt beinhalten, welcher folgende Form hat:
  • Figure 00310001
  • Figure 00320001
  • Die Anwendung erzeugt die obige Ausgabe ohne Berücksichtigung der Anfragebedingungen, die zu dem Zeitpunkt vorhanden sind, bei welchem eine Dienstanfrage durch einen Endbenutzer erfolgt. Der Middleware-Transformer bestimmt, ob irgendwelche der Bedingungen 1, 2 und 3 erfüllt sind, nachdem er die bedingungsunabhängige Ausgabe von der Anwendung empfangen hat. Bei diesem Beispiel führt, wenn Bedingung 1 erfüllt ist, der Middleware-Transformer dann eine Umwandlung der bedingungsunabhängigen Ausgabe durch, um die folgende bedingungsabhängige Ausgabe zu erzeugen:
    <section>
    Verwende dies, wenn Bedingung 1 (condition 1) erfüllt ist
    </section>
  • Wenn Bedingung 2 erfüllt ist, jedoch Bedingung 3 nicht erfüllt ist, dann wandelt der Middleware-Transformer die bedingungsunabhängige Ausgabe um, um die folgende bedingungsabhängige Ausgabe zu erzeugen:
    <section>
    Verwende dies, wenn Bedingung 2 (condition 2) erfüllt ist und Bedingung 3 (condition 3) nicht erfüllt ist
    </section>
  • Wenn Bedingungen 2 und 3 erfüllt sind, dann wandelt der Middleware-Transformer die bedingungsunabhängige Ausgabe um, um die folgende bedingungsabhängige Ausgabe zu erzeugen:
    <section>
    Verwende dies, wenn Bedingung 3 (condition 3) erfüllt ist
    </section>
  • Wenn Bedingungen 1 und 2 erfüllt sind, dann wandelt der Middleware-Transformer die bedingungsunabhängige Ausgabe um, um die folgende bedingungsabhängige Ausgabe zu erzeugen:
    <section>
    Verwende dies für alle anderen Bedingungen
    </section>
    In diesem Beispiel stehen die Bedingungen 2 und 3 in Beziehung zueinander. Speziell wird das Bedingung 3 zugehörige Ausgabesegment nur dann ausgeführt, wenn sowohl Bedingung 2 als auch Bedingung 3 erfüllt sind.
  • Das Verfahren einer Festlegung einer Hierarchie zwischen Bedingungen kann verwendet werden, wenn beispielsweise die eine Bedingung eine Untergruppe einer weiteren Bedingung ist. Beispielsweise kann Bedingung 2 sein, dass das Netz ein ungewöhnliches Verkehrsaufkommen (z.B. Netzauslastung) bezogen auf einem Schwellenwert erfährt, und Bedingung 3 kann darin bestehen, dass der Netzverkehr extrem groß ist, wie durch Überschreiten eines festgelegten Grenz wertes belegt ist. Daher kann bei normaler Netzauslastung, wenn Bedingung 2 erfüllt ist, jedoch nicht Bedingung 3, der tatsächliche Befehl oder die tatsächliche Anweisung, der/die "Verwende dies, wenn Bedingung 2 (condition 2) erfüllt ist und Bedingung 3 (condition 3) nicht erfüllt ist " entspricht, spezifizieren, dass keine ungewöhnlich detaillierten graphischen Elemente übertragen werden sollen. Und, falls Bedingung 3 erfüllt ist, wie dies beispielsweise bei extremer Netzauslastung der Fall sein kann, kann der tatsächliche Befehl oder die tatsächliche Anweisung, der/die "Verwende dies, wenn Bedingung 3 (condition 3) erfüllt ist" entspricht, spezifizieren, dass keine graphischen Elemente übertragen werden sollen.
  • Die Verwendung einer bedingungsunabhängigen Ausgabe mit eingebetteten Hinweisen erlaubt dem Anwendungsentwickler, dass er durch die Gestaltung die Dienstanwendung flexibel macht, so dass sie mit Variablen umgehen kann, die möglicherweise erst zu dem Zeitpunkt bekannt sind, an dem durch einen Client eine Dienstanforderung bei der Anwendung erfolgt. Durch das Einbauen dieser Flexibilität in die Ausgabe der Anwendung werden die Nachteile des Lösungsansatzes des kleinsten gemeinsamen Nenners vermieden, dadurch, dass der Anwendung ermöglicht wird, die Ausgabe für eine optimale Leistungsfähigkeit basierend auf den Umständen anzupassen, die zum Zeitpunkt der Anfrage des Client an die Anwendung vorliegen. Weiter braucht die Anwendung selbst nicht über die Fähigkeit zu verfügen, die Bedingungen zu erfassen, auf deren Basis alternative Ausgabesegmente ausgewählt werden, da der Host die Abwicklung dieser Funktion durchführt.
  • D. Beispiel der Verwendung von eingebetteten Hinweisen zur Identifizierung eines Gerätetyps
  • Zum Zweck der Erläuterung wird nachfolgend eine Implementierung beschrieben, bei der die Bedingungen, die den alternativen Ausgabesegmenten zugehörig sind, der Gerätetyp des anfordernden Clients sind. Bei einer solchen Implementierung kann die durch eine Anwendung erzeugt bedingungsunabhängige Ausgabe folgende Form haben:
  • Figure 00350001
  • Die Anwendung erzeugt diese Ausgabe ohne Berücksichtigung der Anfragebedingungen. Bei Empfang der bedingungsunabhängigen Ausgabe von der Anwendung bestimmt der Middleware-Transformer, ob der Client einem der Alternativsegment-Tags entspricht. Falls beispielsweise, bei Verwendung der obigen XML-Ausgabe, der Client ein Desktop-Computer ist, dann stimmt der Client mit dem <desktop>-Tag überein und der Middleware-Transformer wandelt die bedingungsunabhängige Ausgabe um, so dass die folgende bedingungsabhängige Ausgabe erzeugt wird:
    <section>
    Verwende dies, wenn der Client ein Desktop-Computer ist
    </section>
  • Falls der Client ein Telefon, jedoch kein WAP-Telefon ist, dann stimmt der Client mit dem <phone>-Tag überein und der Middleware-Transformer wandelt die bedingungsunabhängige Ausgabe um, so dass die folgende bedingungsabhängige Ausgabe erzeugt wird:
    <section>
    Verwende dies, wenn der Client ein Telefon (phone) ist
    </section>
  • Falls der Client ein WAP-Telefon ist, dann stimmt der Client sowohl mit dem <phone>-Tag als auch dem <WAP>-Tag überein. Das <WAP>-Tag ist spezifischer als das <phone>-Tag, und daher wandelt der Middleware-Transformer die bedingungsunabhängige Ausgabe um, so dass die folgende bedingungsabhängige Ausgabe erzeugt wird:
    <section>
    Verwende dies, wenn der Client ein WAP-Telefon ist
    </section>
  • Falls der Client weder ein Desktop-Computer noch ein Telefon ist, dann stimmt der Client mit keinem der Alternativsegment-Tags überein, und der Middleware-Transformer wandelt die bedingungsunabhängige Ausgabe um, so dass die folgende bedingungsabhängige Ausgabe erzeugt wird:
    <section>
    Verwende dies für jedes andere Gerät
    </section>
  • Der Lösungsansatz der Verwendung von eingebetteten Hinweisen, um einen Gerätetyp zu identifizieren, ermöglicht dem Anwendungsentwickler, einen einzigen Code-Satz zu schreiben, der mit allen Geräten verwendet werden kann, jedoch kann der Anwendungscode Alternativsegment-Tags enthalten, um eine spezifische Anpassung der Anwendungsausgabe an unterschiedliche Geräte vorzunehmen, die unterschiedliche Fähigkeiten haben. Im obigen Beispiel können, falls das Client-Gerät ein Desktop-Computer ist, Volltext, graphische Elemente und Toninhalte gesendet werden, da ein Desktop-Computer problemlos alle drei Content-Typen handhaben kann. Falls jedoch das Client-Gerät ein Mobiltelefon ist, dann werden möglicherweise keine graphischen Elemente gesendet, da es ziemlich unwahrscheinlich ist, dass ein Mobiltelefon derartige graphische Elemente auf seiner Anzeige anzeigen kann. Weiter kann, falls es sich bei dem Telefon um ein WAP-Telefon handelt, die Anwendung eine für das WAP-Protokoll spezifische Ausgabe erzeugen.
  • Wenn weiter das Client-Gerät sich nicht unter den aufgelisteten Geräten befindet, kann eine Default-Konfiguration für die Ausgabe verwendet werden (z.B. das obige Alternativsegment-Tag "Verwende dies für jedes andere Gerät"). Eine Default-Bedingung kann eine Ausgabe basierend auf dem Lösungsansatz des kleinsten gemeinsamen Nenners spezifizieren, so dass ein beliebiger Client die Ausgabe handhaben kann. Jedoch braucht der Anwendungsentwickler nicht auf eine derartige Default-Konfiguration zurückzugreifen, wenn es sich bei dem Gerät um eines der speziell unterstützten Typen handelt, beispielsweise ein Desktop-Gerät, ein Telefon oder ein WAP-Telefon. Und schließlich können Client-Geräte, die nach Vollendung der Anwendung konzipiert werden, auch dann eine Ausgabe empfangen, die ihre größeren Fähigkeiten ausnutzt, wenn sie unter einen der spezifizierten Gerätetypen fallen, beispielsweise im zuvor angegebenen Beispiel ein Desktop-Computer oder Telefon. Weiter sind zukünftige Geräte nicht gezwungen, nur deshalb eine sehr einfache oder Default-Ausgabe zu verwenden, weil dem Anwendungsentwickler dieses zukünftige Gerät beim Schreiben des Codes für diesen Dienst nicht bekannt war.
  • E. Erzeugung einer Ausgabe basierend auf einer Bedingungshierarchie
  • Gemäß einem Ausführungsbeispiel wird eine Programmiersprache bereitgestellt, die Alternativsegment-Tags unterstützt, welche Knoten in einer Bedingungshierarchie entsprechen. Der allgemeinste ("höchste") Knoten in der Bedingungshierarchie ist der Default-Knoten. Die anderen Knoten entsprechen speziellen Bedingungen. Die speziellsten Knoten in der Bedingungshierarchie können beispielsweise speziellen Gerätemodellen oder sogar speziellen Versionen spezieller Modelle entsprechen. Weitere mittlere Knoten können Geräteklassen oder -typen entsprechen, beispielsweise Mobiltelefonen oder Pagern.
  • Gemäß einem Ausführungsbeispiel sind die Knoten in der Bedingungshierarchie miteinander in Eltern-Kind-Beziehungen verknüpft, wobei alle Kind-Knoten eines gegebenen Eltern-Knotens Unterkategorien zu der dem Eltern-Knoten zugeordneten Kategorie entsprechen.
  • 2 stellt eine derartige Bedingungshierarchie dar. In 2 ist ein "Alle-Geräte"-Knoten 200 in der dargestellten Hierarchie der höchste oder Default-Knoten. Unter dem "Alle-Geräte"-Knoten 200 befinden sich mehrere Kind-Knoten, speziell ein "Sprache"-Knoten 210, ein "Desktop"-Knoten 212, ein "PDA"-Knoten 214, ein "Pager"-Knoten 216 und ein "Telefon"-Knoten 218, welche weit gefassten Klassifizierungen der Gerätetypen entsprechen, die auf einen Dienst zugreifen können.
  • Der Desktop-Knoten 212 hat auch seine eigenen Kind-Knoten, speziell einen "Unix"-Knoten 220 und einen "Windows"-Knoten 222, die zwei Beispielen von Desktop-Betriebssystemen entsprechen. In ähnlicher Weise weist der Unix- Knoten 220 zwei Kind-Knoten auf, und zwar einen "Solaris"-Knoten 224 und einen "Linux"-Knoten 226, die zwei Versionen des Unix-Betriebssystems entsprechen. In ähnlicher Weise weist der "Telefon"-Knoten 218 mehrere Kind-Knoten auf, speziell einen "WML"-Knoten 230, einen "HDML"-Knoten 232 und einen "CHTML"-Knoten 234, welche jeweils Telefonen entsprechen, die WML (Wireless Markup Language – Auszeichnungssprache für drahtlose Geräte), HDML (Handheld Device Markup Language – Auszeichnungssprache für in der Hand zu haltende Geräte) und CHTML (Compact Hypertext Markup Language – kompakte Hypertext-Auszeichnungssprache) verwenden. In ähnlicher Weise weist der WML-Knoten 230 drei Kind-Knoten auf: einen "Nokia 7110"-Knoten 240, einen "TC 4411 V1 "-Knoten 242 und einen "TC 4411 V2"-Knoten 244, welche jeweils einem Mobiltelefon des Modells Nokia 7110 und den Versionen 1 und 2 des Modells TC 4411 entsprechen.
  • Anhand des Beispiels der in 2 dargestellten Bedingungshierarchie kann ein Anwendungsprogrammierer ein Programm gestalten, das für ein Menüelement die folgende Ausgabe erzeugt:
  • Figure 00390001
  • Figure 00400001
  • Wenn der Middleware-Transformer diese bedingungsunabhängige Ausgabe empfängt, bestimmt der Transformer den Client-Typ, an den die Ausgabe gesendet wird, und erzeugt eine bedingungsspezifische Ausgabe. Insbesondere gilt für alle Clients außer Desktop-Clients (desktop), Sprach-Clients (voice) und Telefon-Clients (phone) das Menüelement "Rückkehr" ("Return"). Für Desktop-Clients, Sprach-Clients und das spezifische Telefonmodell TC 441 V2 lautet das Menüelement "Erzeuge Rückkehranweisungen" ("Generate Return Directions"). Und schließlich lautet für Telefonmodelle, außer TC 441 V2, das Menüelement "Rückk.-Anw." ("Rtrn. Dir."). Die spezielle Behandlung des Modells TC 441 V2 kann beispielsweise erwünscht sein, wenn das TC 441 V2 in der Lage ist, längere Menüelemente als herkömmliche Mobiltelefone anzuzeigen.
  • In einem Ausführungsbeispiel kann, nachdem die bedingungsspezifische Ausgabe erzeugt wurde, ein XSL-Style-Sheet angewandt werden, um die Ausgabe gemäß den Bedürfnissen des Client zu formatieren, an den die Ausgabe gesendet werden soll. In einem alternativen Ausführungsbeispiel formatiert, zusätzlich zur zuvor beschriebenen Verarbeitung der Ausgabe, der Middleware-Transformer die Ausgabe für ein spezifisches Gerät, und zwar entweder durch Anwenden eines oder mehrerer XSL-Style-Sheets, oder durch ein beliebiges anderes Mittel.
  • Damit der Middleware-Transformer die geeignete Umwandlung der Ausgabe durchführt, führt die Partei, welche den Middleware-Transformer steuert, auch bekannt als "Middleware-Host", eine Pflege der Daten durch, welche (1) die Bedingungshierarchie, (2) die Tags, die zu dem Knoten der Bedingungshierarchie gehören, und (3) die Korrelation zwischen dem Knoten der Bedingungshierarchie und den Anfragebedingungen angeben.
  • Beispielsweise sei angenommen, dass der Middleware-Transformer die in 2 dargestellte Bedingungshierarchie unterstützt. Der Middleware-Host kann Daten pflegen, welche verschiedene Typen von Informationen angeben, beispielsweise die Zuordnung der Tags im XML zu den Knoten der Bedingungshierarchie und die Beziehung der Knoten zueinander. Nachstehend sind repräsentative Beispiele der Daten aufgeführt, deren Pflege durch den Middleware-Host erfolgen kann:
    • (a) der Telefon-Knoten 218 ist ein Kind-Knoten des Alle-Geräte-Knotens 200;
    • (b) die Tags <phone> und </phone> sind dem Telefon-Knoten 218 zugeordnet;
    • (c) der WML-Knoten 230 ist ein Kind-Knoten des Telefon-Knotens 218;
    • (d) die Tags <WML> und </WML> sind dem WML-Knoten 230 zugeordnet;
    • (e) der TC 441 V1-Knoten 242 ist ein Kind-Knoten des WML-Knotens 230;
    • (f) die Tags <TC 441 V1> und </TC 441 V1> sind dem TC 441 V1-Knoten 242 zugeordnet; und
    • (g) die Anfragebedingung "Client-Gerät = TC 441 V1" ist dem TC 441 V1-Knoten 242 zugeordnet.
  • Die Bedingungshierarchie kann durch den Dienstanbieter oder den Entwicklungsanbieter entwickelt werden. Indem die Verwendung einer Bedingungshierarchie zu einem Bestandteil der Anwendung gemacht wird, kann der Dienstanbieter entweder weit gefasste Geräteklassen wie beispielsweise PDAs, enger gefasste Geräteklassen wie beispielsweise Unix-Desktop-Computer, oder spezielle Geräte wie beispielsweise ein Telefon vom Modell Nokia 7110 unterstützen. Der Anwendungsentwickler kann dann die Ausgabe des Dienstes basierend auf den Fähigkeiten der Geräte spezifisch anpassen, und zwar basierend auf einer weit gefassten Klasse, einer eng gefassten Klasse oder einem speziellen Gerät.
  • F. Erzeugen einer Ausgabe durch Abgleichen mit den Anfragebedingungen
  • Wenn der Middleware-Transformer eine bedingungsunabhängige Ausgabe empfängt, die an einen Client geliefert werden soll, und die bedingungsunabhän gige Ausgabe einen Satz alternativer Ausgabesegmente beinhaltet, untersucht der Middleware-Transformer die betreffenden Anfragebedingungen. Wenn beispielsweise die alternativen Ausgabesegmente unterschiedlichen Typen von Client-Geräten zugehörig sind, bestimmt der Middleware-Transformer den Gerätetyp des Client, zu dem die Ausgabe gesendet werden soll. Basierend auf der/den anzuwendenden Anfragebedingung(en) wählt der Middleware-Transformer das Ausgabesegment, das mit der/den Ausgabebedingung(en) am genauesten übereinstimmt.
  • Gemäß einem Ausführungsbeispiel wählt der Middleware-Transformer, wenn er eine Ausgabe empfängt, die alternative Ausgabesegmente beinhaltet, das Ausgabesegment aus, das am genauesten mit den Anfragebedingungen übereinstimmt, und zwar mittels des im Ablaufdiagramm von 3 umrissenen Verfahrens. In Schritt 300 wird der höchste Knoten in der Bedingungshierarchie (z.B. der "Alle-Geräte"-Knoten 200 von 2) als aktueller Knoten festgelegt.
  • Als Nächstes werden in Schritt 310 die alternativen Ausgabesegmente, die dem Kind-Knoten des aktuellen Knotens entsprechen, identifiziert. Erneut Bezug nehmend auf 2 identifiziert dann, wenn der aktuelle Knoten der "Alle-Geräte"-Knoten 200 ist, der Middleware-Transformer die Kind-Knoten wie folgt: Sprach-Knoten 210, Desktop-Knoten 212, PDA-Knoten 214, Pager-Knoten 216 und Telefon-Knoten 218.
  • Im Schritt 320 wird bestimmt, ob irgendwelche der Bedingungen, die dem identifizierten Kind-Knoten des aktuellen Knotens zugehörig sind, erfüllt sind. Wenn beispielsweise das die Dienstanfrage durchführende Gerät ein Pager ist, dann wäre die zu dem Pager-Knoten 216 gehörende Bedingung erfüllt, jedoch wäre die dem Telefon-Knoten 218 sowie den anderen Kind-Knoten des "Alle-Geräte"-Knotens 200 zugehörige Bedingung nicht erfüllt. Im umgekehrten Fall wäre, wenn es sich bei dem Gerät um ein Telefon handelte, dann die dem Telefon-Knoten 218 zugehörige Bedingung erfüllt, und die übrigen Bedingungen, die den verbleiben den Kind-Knoten des "Alle-Geräte"-Knotens 200 zugehörig sind, wären nicht erfüllt.
  • Wenn eine Bedingung, die einem Kind-Knoten des aktuellen Knotens zugehörig ist, erfüllt ist, dann wird in Schritt 330 der Kind-Knoten als neuer aktueller Knoten festgelegt und der Prozess geht in einer Schleife zurück auf Schritt 310. Wenn beispielsweise der aktuelle Knoten der "Alle-Geräte"-Knoten 200 ist und das Gerät ein Pager ist, dann ist die Bedingung, die dem Pager-Knoten 216 zugehörig ist, erfüllt. In Übereinstimmung mit Schritt 330 wird der Pager-Knoten 216 als aktueller Knoten festgelegt, und der Prozess geht zurück auf Schritt 310.
  • Wenn keine Bedingung, die irgendeinem Kind-Knoten des aktuellen Knotens zugehörig ist, erfüllt ist, dann wird im Schritt 340 das Ausgabesegment ausgewählt, das dem aktuellen Knoten zugehörig ist. Wenn beispielsweise der aktuelle Knoten der "Alle-Geräte"-Knoten 200 ist und das den Dienst anfordernde Gerät ein brandneuer Typ eines zukünftigen Gerätes ist, das bei der Aufstellung der Bedingungshierarchie unbekannt war, dann wäre vielleicht keine der Bedingungen erfüllt, die irgendeinem der Kind-Knoten des "Alle-Geräte"-Knotens 200 zugehörig ist. Daher wird gemäß Schritt 310 das Ausgabesegment ausgewählt, das dem aktuellen Knoten zugehörig ist, welches in diesem Beispiel der "Alle-Geräte"-Knoten 200 ist. Beispielsweise kann die Ausgabe, die dem "Alle-Geräte"-Knoten 200 zugehörig ist, auf einem beliebigen Gerät anzeigefähig sein (z.B. Lösungsansatz des kleinsten gemeinsamen Nenners), oder die Ausgabe kann auf Geräten mit höherem minimalem Fähigkeitsniveau anzeigefähig sein.
  • Es sei beispielsweise angenommen, dass die bedingungsunabhängige Ausgabe einer Anwendung wie folgt lautet, wobei die Alternativsegment-Tags den in 2 dargestellten Knoten entsprechen:
  • Figure 00430001
  • Figure 00440001
  • Weiter sei angenommen, dass der Client, an welchen die Ausgabe gesendet werden soll, ein durch die Bezeichnung "TC 441 V1" identifiziertes Gerät ist. Die Bedingung, die dem TC 441 V1-Knoten 442 in 2 zugehörig ist, so wie auch die Bedingungen, die all den Knoten zugehörig sind, von denen aus der TC 441 V1-Knoten absteigt (d.h. der Telefon-Knoten 218 und der WML-Knoten 230) sind erfüllt.
  • Um zu bestimmen, welches der alternativen Ausgabesegmente in dem oben angegebenen XML zu verwenden ist, setzt der Middleware-Transformer zu Anfang den "Alle-Geräte"-Knoten 200 als aktuellen Knoten, gemäß Schritt 300 von 3.
  • Der Middleware-Transformer identifiziert dann die alternativen Ausgabesegmente, die dem Kind-Knoten des aktuellen Knotens entsprechen. Im vorliegenden Bei spiel sind die alternativen Ausgabesegmente, die dem Kind-Knoten des "Alle-Geräte"-Knotens 200 entsprechen, die Ausgabesegmente, die dem Sprach-Knoten 210, dem Desktop-Knoten 212 und dem Telefon-Knoten 218 zugehörig sind. Wie in der obigen bedingungsunabhängigen Ausgabe dargestellt, haben nicht alle in 2 dargestellten Kind-Knoten des "Alle-Geräte"-Knotens 200 ein zugehöriges alternatives Ausgabesegment. Daher ist es möglich, dass der Anwendungsentwickler lediglich einige der Klassen, Typen oder spezifischen Geräte unterstützt, die in der Bedingungshierarchie enthalten sind.
  • Der Middleware-Transformer bestimmt dann, ob irgendwelche der Bedingungen, die dem identifizierten Kind-Knoten des aktuellen Knotens zugehörig sind, erfüllt sind, wie in Schritt 310 festgelegt. Im vorliegenden Beispiel, bei dem angenommen wird, dass es sich bei dem Gerät um TC 441 V1 handelt, ist die Bedingung, welche dem Telefon-Knoten 218 zugehörig ist, erfüllt. Demzufolge wird durch den Schritt 330 der Telefon-Knoten 218 als neuer aktueller Knoten festgelegt.
  • Zurückkehrend zu Schritt 310, wobei der Telefon-Knoten 218 als aktueller Knoten festgelegt ist, identifiziert der Middleware-Transformer die alternativen Ausgabesegmente, die dem Kind-Knoten des Telefon-Knotens 218 entsprechen, das bedeutet den WML-Knoten 230, da keine alternativen Ausgabesegmente in dem obigen XML vorgesehen sind, die den anderen in 2 dargestellten Kind-Knoten des Telefon-Knotens 218 entsprechen.
  • Durch den Schritt 320 bestimmt der Middleware-Transformer, ob irgendwelche der Bedingungen, die dem identifizierten Kind-Knoten zugehörig sind, erfüllt sind. Im vorliegenden Beispiel ist das einzige alternative Ausgabesegment mit erfüllter Bedingung dasjenige alternative Ausgabesegment, welches dem WML-Knoten 230 zugehörig ist. Demzufolge wird durch Schritt 330 der WML-Knoten 230 als neuer aktueller Knoten festgelegt.
  • Zurückkehrend zu Schritt 310, wobei der WML-Knoten 230 als aktueller Knoten festgelegt ist, identifiziert der Middleware-Transformer die alternativen Ausgabesegmente, die dem Kind-Knoten des WML-Knotens 230 entsprechen. Im vorliegenden Beispiel ist das einzige alternative Ausgabesegment, das einem Kind-Knoten des WML-Knotens 230 entspricht, dasjenige Ausgabesegment, welches dem TC 441 V2-Knoten 244 zugehörig ist. Es sind keine alternativen Ausgabesegmente in dem obigen XML für die anderen in 2 dargestellten Kind-Knoten des WML-Knotens 230 vorgesehen (d.h. für den Nokia 7110-Knoten 240 und den TC 441 V1-Knoten 242).
  • Durch Schritt 320 bestimmt der Middleware-Transformer dann, ob irgendwelche der Bedingungen, die dem identifizierten Kind-Knoten des aktuellen Knotens zugehörig sind, erfüllt sind. Im vorliegenden Beispiel ist die Bedingung, die dem TC 441 V2-Knoten 244 zugehörig ist, nicht erfüllt, da der Client, zu dem die Ausgabe gesendet werden sollte, ein TC 441 V1 ist, und kein TC 441 V2. Demzufolge wird das dem WML-Knoten 230 zugehörige Ausgabesegment gewählt. Die bedingungsunabhängige Ausgabe kann somit umgewandelt werden in:
    <menu item>
    Rückkehranweisungen
    </menu item>
  • Das obige Beispiel stellt dar, wie die beste Übereinstimmung für ein spezielles Gerät identifiziert werden kann, sogar wenn es keine exakte Übereinstimmung gibt. Das Fehlen einer genauen Übereinstimmung kann eine Reihe von Gründen haben, wie beispielsweise, dass eine gerätespezifische Ausgabe nicht erforderlich und/oder nicht erwünscht ist. Das Fehlen einer genauen Übereinstimmung kann auch dadurch bedingt sein, dass das Gerät neu ist und der Entwickler somit das neue Gerät und die Fähigkeiten des neuen Gerätes bei der Gestaltung der Anwendung nicht kannte. Trotzdem besteht weiter die Möglichkeit, dass das neue Gerät in dem obigen Beispiel eine für ein Telefon geeignete Ausgabe empfängt, anstatt eine Default-Ausgabe oder eine Ausgabe zu empfangen, die für eine andere Geräteklasse wie beispielsweise Desktop-Computer bestimmt ist.
  • Das vorhergehende Beispiel ist lediglich ein Verfahren, das vom Middleware-Transformer verwendet werden kann, um das Ausgabesegment zu wählen, das am genauesten mit den Anfragebedingungen übereinstimmt. Zahlreiche alternative Verfahren können verwendet werden. Beispielsweise kann bei einem alternativen Verfahren jedem Tag eine Nummer zugewiesen sein, welche in der Bedingungshierarchie dem Niveau des diesem zugehörigen Knoten entspricht. Somit könnte <WML> der Wert 3 zugewiesen sein und <phone> könnte 2 zugewiesen sein. Ein geeignetes Ausgabesegment eines Satzes alternativer Ausgabesegmente kann dann dadurch gewählt werden, dass (1) innerhalb der bedingungsunabhängigen Ausgabe die Tags identifiziert werden, welche den erfüllten Bedingungen entsprechen, und (2) derjenige Tag aus diesen Tags ausgewählt wird, dem der höchste Wert zugewiesen wurde.
  • In der vorhergehenden Beschreibung ist die Anfragebedingung, die verwendet wurde, um das geeignete Ausgabesegment auszuwählen, der Gerätetyp des Client, an den die Ausgabe geliefert werden soll. Jedoch kann die Anfragebedingung, die zur Auswahl zwischen alternativen Ausgabesegmenten verwendet wird, von Implementierung zu Implementierung variieren. Beispielsweise können in einer Implementierung die alternativen Ausgabesegmente eines Satzes jeweils einem unterschiedlichen Auslastungspegel des Netzes zugehörig sein. Bei einer weiteren Implementierung können die alternativen Ausgabesegmente eines Satzes jeweils einer unterschiedlichen Klasse von Endbenutzer zugehörig sein. In noch weiteren Implementierungen können die alternativen Ausgabesegmente Kombinationen von Faktoren zugehörig sein. Beispielsweise kann ein spezielles Ausgabesegment zur Verwendung festgelegt werden, wenn (1) eine spezielle Klasse von Benutzern (2) einen speziellen Typ von Client-Gerät verwendet und (3) über eine Verbindung verfügt, die eine spezielle Übertragungsgeschwindigkeit unterstützt.
  • Weiter liefert die vorhergehende Beschreibung Beispiele, bei denen die Ausgabe in Form einer Markup-Sprache, wie beispielsweise XML, vorliegt. Jedoch kann die Eigenschaft der Ausgabe von Implementierung zu Implementierung variieren. Die hier beschriebenen Verfahren können mit einer beliebigen Form von bedingungsunabhängiger Ausgabe verwendet werden, die (1) alternative Ausgabesegmente und (2) irgendeine Art von Hinweisen beinhaltet, welche verwendet werden können, um basierend auf Anfragebedingungen zwischen alternativen Ausgabesegmenten auszuwählen.
  • G. Auswahl der Ausgabe basierend auf der vom Client-Gerät unterstützten Sprache
  • Die Verwendung des <WML>-Tags im obigen Beispiel illustriert eine Situation, bei welcher die zur Auswahl eines alternativen Ausgabesegments verwendete Anfragebedingung die Markup- oder Programmiersprache betrifft, die vom Client-Gerät unterstützt wird, an das die Ausgabe gesendet werden soll. Gemäß einem Ausführungsbeispiel kann ein alternatives Ausgabesegment, das einer "Unterstützte-Programmiersprache"-Anfragebedingung zugehörig ist, ganz oder teilweise Code beinhalten, der in der unterstützten Programmiersprache geschrieben ist.
  • Beispielsweise kann das Ausgabesegment, das sich zwischen den <WML>- und </WML>-Tags befindet, vollständig aus WML-Code bestehen. Demzufolge liegt, wenn das Client-Gerät die WML-Sprache unterstützt, die an den Client gesendete Ausgabe in Form der WML-Sprache vor. Auch wenn in diesem Beispiel die WML-Sprache verwendet wird, kann das Verfahren für eine beliebige Programmiersprache verwendet werden, einschließlich jedoch nicht eingeschränkt auf "C++", HTML, Visual Basic oder Java.
  • H. Verwenden eines Middleware-Transformers zur Umwandlung einer bedingungsunabhängigen Ausgabe
  • Zahlreiche Vorteile werden dadurch realisiert, dass ein durch den Middleware-Host gehosteter Middleware-Transformer verwendet wird, um die bedingungsunabhängige Ausgabe umzuwandeln, bevor sie einem Client zugeführt wird. Beispielsweise erhält durch dieses Verfahren die mobile Anwendung den Vorzug, dass sie jedes Gerät unterstützt, und zwar dank des Middleware-Hosts, der bei Entwicklung neuer Geräte gerätespezifische Format- und Protokollumwandlungen für diese Geräte bereitstellt. Weiter ist der Entwickler der mobilen Anwendung in der Lage, wenn die mobile Anwendung die zuvor beschriebenen Verfahren der alternativen Ausgabesegmente verwendet, für die Benutzer eine Ausgabe bereitzustellen, deren Inhalt auf Bedingungen basiert, die der Anfrage zugehörig sind, ohne dass er Anwendungen zu gestalten braucht, die zur Erfassung dieser Bedingungen in der Lage sind.
  • In einem Ausführungsbeispiel kann der Inhalt der durch einen Client empfangenen Ausgabe auf den Gerätetyp des Client zugeschnitten werden, ohne dass der mobilen Anwendung der Gerätetyp des Client, an den die Ausgabe gesendet wird, bekannt ist. Beispielsweise kann das Client-Gerät ein Pager sein. Dadurch, dass, wie zuvor erläutert, ein XSL-Style-Sheet zur Umwandlung der Anwendungsausgabe, beispielsweise einer Ausgabe in Form von Portal-to-go-XML, verwendet wird, kann der Middleware-Transformer eine gerätespezifische Formatierung für den Pager erzeugen.
  • Weiter kann der Inhalt der von einem Client empfangenen Ausgabe automatisch auf neue Client-Typen zugeschnitten werden, basierend auf den Kategorien, die diesen neuen Clients zugewiesen wurden, ohne dass der Anwendungsentwickler diese neuen Client-Typen überhaupt zu kennen braucht. Wenn beispielsweise ein neuer Typ von WAP-Telefon entwickelt wird, ordnet der Middleware-Host das neue WAP-Telefon an der geeigneten Stelle in der Bedingungshierarchie ein.
  • Demzufolge empfängt das neue WAP-Telefon automatisch die Ausgabesegmente, die WAP-Telefonen zugehörig sind, falls diese in der Ausgabe der Dienstanwendung spezifiziert sind.
  • Wenn ein spezieller Satz alternativer Ausgabesegmente nicht über ein Ausgabesegment verfügt, das WAP-Telefonen zugehörig ist, jedoch über ein Ausgabesegment verfügt, das Mobiltelefonen zugehörig ist, dann empfängt das neue Telefon automatisch das alternative Ausgabesegment, das den Mobiltelefonen zugehörig ist. Auf diese Weise ist der Inhalt der an neue Geräte gelieferten Ausgabe gerätespezifisch, wobei das Niveau der Spezifierung durch den Anwendungsentwickler festgelegt wird, und zwar sogar für neu entwickelte Geräte, über die der Entwickler bei der Erzeugung der Anwendung nichts weiß.
  • I. Beispiel der Erzeugung der Ausgabe unter Verwendung einer aufgeteilt gehosteten Anwendung
  • 4 ist ein Blockdiagramm, welches ein Beispiel der Erzeugung einer Ausgabe unter Verwendung einer aufgeteilt gehosteten Anwendung gemäß einem Ausführungsbeispiel der Erfindung darstellt. 4 stellt ein Client-Gerät 410, wie beispielsweise einen Laptop-Computer oder ein Mobiltelefon, dar, das mit einem HTTP-Listener 420 wie beispielsweise einem Web-Server verbunden ist, der reagierend auf Anfragen Webseiten bereitstellt. Der HTTP-Listener 420 kann dem Client-Gerät 410 eine Webseite liefern, die eine Liste von Diensten enthält, welche zu einem Hosting-Dienst 430 gehören. Bei Auswahl eines speziellen Dienstes durch das Client-Gerät 410 sendet der HTTP-Listener 420 eine Anfrage nach einem. speziellen Dienst an einen Dienste-Linker 432, der Teil des Hosting-Dienstes 430 ist. Der Dienste-Linker 432 kann auf einem oder mehreren Servern implementiert sein, der/die dem Hosting-Dienst 430 zugehörig ist/sind. Bei Empfang der Anfrage identifiziert der Dienste-Linker 432 den Dienst oder die Anwendung, welche Gegenstand der Anfrage ist, und leitet die Anfrage des Client-Geräts 410 an einen Dienstanbieter 440 weiter.
  • Der Dienstanbieter 440 verfügt über einen HTTP-Server 432 zur Abwicklung von Kommunikationsvorgängen zwischen dem Dienstanbieter 440 und weiteren Servern, beispielsweise einem Dienste-Linker 432 oder Servern, die miteinander als Teil des Internet verbunden sind. Der Dienstanbieter 440 verfügt auch über einen Anwendungsserver 446, welcher vom HTTP-Server 432 empfangene Anfragen an die geeignete Anwendung leitet.
  • Der Dienstanbieter 440 verfügt auch über eine Anwendung 450, die in diesem Beispiel Gegenstand der Anfrage des Client-Gerätes 410 ist. Beispielsweise kann Anwendung 450 ein Speiselokalverzeichnis-Modul sein, das eine Auflistung von Restaurants in einer Stadt bereitstellt, die von einem Endbenutzer über einen Client, wie beispielsweise das Client-Gerät 410, festgelegt wird. Die Anwendung 450 kann in der Lage sein, in Abhängigkeit von der Anfrage verschiedene Sätze von Ausgaben zu erzeugen, beispielsweise Ausgabe 452 und 454. Beispielsweise kann es sich bei Ausgabe 452 um eine Eingabeaufforderung für den Endbenutzer handeln, um den Namen einer Stadt einzugeben, für die er eine Restaurantliste erhalten möchte.
  • Der Dienstanbieter 440 verfügt auch über eine Datenbank 470. Beispielsweise kann, wenn die Anwendung 450 ein Speiselokalverzeichnis-Modul ist, die Datenbank 470 Informationen über Restaurants in mehreren Städten enthalten. Bei Auswahl einer speziellen Stadt durch den Endbenutzer kann die Anwendung 450 eine Ausgabe 454 erzeugen, die eine Auflistung von Restaurants in der gewählten Stadt beinhaltet.
  • Der Dienstanbieter 440 antwortet auf die Anfrage, die von einem Client-Gerät 410 über einen Dienste-Linker 432 empfangen wurde, mit einer generischen Ausgabe 480. Beispielsweise kann es sich bei der generischen Ausgabe um ein elektronisches Dokument handeln, das Portal-to-go-XML enthält.
  • Die generische Ausgabe 480 wird vom Dienstanbieter 440 zum Hosting-Dienst 430 gesendet, und die generische Ausgabe wird durch einen Geräte-Transformer 436 verarbeitet. Der Geräte-Transformer 436 kann ein Server sein, der als Middleware-Transformer fungiert, indem er Style-Sheets auf eine generische XML-Ausgabe anwendet, um eine spezifisch angepasste Ausgabe 490 zu erzeugen, wie zuvor beschrieben wurde. Eine spezifisch angepasste Ausgabe wird dann an das Client-Gerät 410 gesendet und dem Endbenutzer angezeigt.
  • IV. ZUGRIFF AUF WEITERE ANWENDUNGEN UND DIENSTE
  • A. Mobile Module
  • Dienstanbieter und Anwendungsentwickler können gehostete oder Portalanwendungen erzeugen, auf die mittels Dienstanfragen zugegriffen wird, die an die Zwischenstation wie beispielsweise einen Host gesendet werden, der einen Middleware-Transformer verwaltet. Gemäß einem Ausführungsbeispiel können die Dienste oder Anwendungen, die hier auch als "mobile Module" bezeichnet werden, eine Ausgabe erzeugen, die zur Folge hat, dass weitere mobile Module angerufen werden. Die Ausgabe kann beispielsweise einen speziellen Satz von Tags verwenden, beispielsweise <substitute> </substitute>, um einen Substitutionsbefehl zu bezeichnen, der sich auf ein weiteres mobiles Modul bezieht, und kann innerhalb der Tags eine Kennung des mobilen Moduls beinhalten.
  • Beispielsweise kann die Ausgabe, die vom mobilen Modul einer ersten Partei (Partei 1) erzeugt wurde, sich auf ein weiteres mobiles Modul einer zweiten Partei (Partei 2) beziehen, dadurch, dass es den folgenden Satz von Anweisungen beinhaltet:
    <substitute>
    Kennung-Partei-2-Modul
    </substitute>
  • Reagierend auf den Empfang der unmittelbar zuvor aufgeführten Ausgabe kann der Middleware-Transformer das mobile Modul der zweiten Partei aufrufen, das durch die "Partei-2-Modul"-Kennung identifiziert ist, die Ausgabe dieses Moduls in die Ausgabe des mobilen Moduls der ersten Partei einbetten und die kombinierte Ausgabe an den Client liefern. Dieses Merkmal erlaubt dem Gestalter eines mobilen Moduls, die Funktionalität aller anderen mobilen Module auszunützen, die bei der Zwischenstation (z.B. dem Host) zur Verfügung stehen. Dieses Merkmal ermöglicht auch, dass die Transaktion mit dem vorhergehenden Dienst aktiv gehalten wird, so wie auch, dass die Dienste verwendet werden, ohne dass bekannt sein muss, wer die Dienste verwendet.
  • Auch unterscheidet sich dieses Merkmal von einer Link-Verbindung von Objekten bei Webseiten, bei denen der Browser auf einem Client läuft. Wenn beispielsweise ein Browser eine Webseite empfängt, die einen Link zu einem Objekt aufweist, sendet der Browser eine Anfrage an die durch den Link angegebene Adresse, empfängt als Antwort ein Objekt und baut dann das Objekt in die Webseite ein, die durch den Browser angezeigt wird. Somit erfolgen Anfrage, Empfang und Einbau des Objektes in die Webseite durch den auf dem Client laufenden Browser.
  • Im Gegensatz dazu empfängt die Zwischenstation eine von einem Modul kommende Ausgabe (z.B. beim Middleware-Transformer), führt eine Anfrage bei einem weiteren Modul durch, empfängt eine Ausgabe von diesem weiteren Modul und kombiniert dann die Ausgaben beider Module und sendet die kombinierte Ausgabe an den Client. Somit erfolgen Anfrage, Empfang und Einbau der Ausgabe des zweiten Dienstes in die Ausgabe des ersten Dienstes durch die Zwischenstation, nicht durch den Client.
  • Gemäß einem weiteren Ausführungsbeispiel kann nicht nur die Ausgabe eines mobilen Moduls, das als das "aufrufende" mobile Modul bezeichnet wird, das Aufrufen eines weiteren mobilen Moduls bewirken, das als "aufgerufenes" mobiles Modul bezeichnet wird, sondern das aufrufende mobile Modul kann auch Parameter an das aufgerufene mobile Modul weitergeben. Beispielsweise kann die Ausgabe des aufrufenden mobilen Moduls Code der folgenden Form beinhalten:
    <link>
    Kennung-aufgerufenes-Modul Param1 Param2 Param3
    </link>
  • Im unmittelbar vorhergehenden Beispiel würde eine Weitergabe der Parameter "Param1", "Param2" und "Param3" vom aufrufenden mobilen Modul an das aufgerufene mobile Modul erfolgen, das durch die "aufgerufenes-Modul"-Kennung identifiziert ist.
  • Gemäß einem weiteren Ausführungsbeispiel beabsichtigt der Gestalter des aufrufenden Moduls möglicherweise, dass, anstelle einer automatischen Einbettung der Ausgabe des aufgerufenen mobilen Moduls in die Ausgabe von ersterem, dem Benutzer einfach ein Link präsentiert wird, das, falls ausgewählt, einen Aufruf der Programmroutine des aufgerufenen mobilen Moduls bewirkt. Um anzugeben, dass ein Link gewünscht wird, kann ein unterschiedlicher Satz von Tags verwendet werden, beispielsweise <action> </action>, um anzugeben, dass eine Ausführungsanweisung basierend auf den Anweisungen zwischen den <action>- und </action>-Tags ausgeführt werden soll.
  • Der Zwischenstation ist bekannt, wenn ein erstes mobiles Modul einer ersten Partei durch ein zweites mobiles Modul einer zweiten Partei aufgerufen wird, da es in der Verantwortlichkeit der Zwischenstation liegt, den vom Substitutionsbefehl geforderten Aufruf oder den durch den Ausführungsbefehl geforderten Aufruf durchzuführen, beispielsweise die Auswahl eines Link.
  • Gemäß einem Ausführungsbeispiel speichert die Zwischenstation Information darüber, welche Module welche weiteren Module aufgerufen haben. Diese Information kann als Basis für Geschäftsbeziehungen zwischen Gestaltern von mobilen Modulen verwendet werden. Beispielsweise kann der Gestalter eines aufrufenden Moduls aushandeln, dass er dem Gestalter eines aufgerufenen Moduls eine gewissen Geldbetrag bezahlt, jedes Mal, wenn das aufrufende Modul das aufgerufene Modul anruft. Die Partei, welche die Zwischenstation (z.B. die Hosting-Dienste) bereitstellt, zeichnet die zwischen den Modulen erfolgenden Anrufe auf und stellt diese den verschiedenen Modulbesitzern zur Verfügung.
  • Das Verfolgen und Verwalten der Geschäftsbeziehungen zwischen Anwendungsanbietern oder Modulbesitzern lassen sich nicht ohne weiteres außerhalb des hier beschriebenen Hosting-Gerüstes implementieren. Beispielsweise kann im World Wide Web eine erste Partei eine erste Webseite gestalten, die einen Link zu einer URL enthält, die einer zweiten Webseite zugehörig ist, welche von einer zweiten Partei bereitgestellt wird. Es ist für die zweite Partei extrem schwierig (wenn nicht unmöglich) zu bestimmen, ob die zweite Webseite als Reaktion darauf angefordert wird, dass durch den Benutzer eine Auswahl des Link auf der ersten Webseite erfolgt ist, oder ob die zweite Webseite durch ein anderes Mittel angefordert wurde. Demzufolge ist es für die zweite Partei schwierig, eine auf die Benutzungshäufigkeit abgestellte Vereinbarung mit der ersten Datei auszuhandeln.
  • Gemäß noch einem weiteren Ausführungsbeispiel erfolgt beim Host bei einer Zwischenstation ein Pflegen von Statusinformation betreffend die Dienste, auf die von einem Endbenutzer zugegriffen wurde. Beispielsweise kann die Zwischenstation einen Informationsstapel für jede Sitzung eines Endbenutzers speichern. Der Informationsstapel gibt die Reihenfolge an, in welcher während der Sitzung Dienste oder mobile Module weitere mobile Module aufgerufen haben, sowie die Identitäten der mobilen Module.
  • Gemäß einem Ausführungsbeispiel können die den Diensten zugehörigen mobilen Module die bei der Zwischenstation gespeicherte Statusinformation unter Verwendung eines Rückrufmechanismus nutzen. Beispielsweise kann zusammen mit einem Link zum Aufruf des aufgerufenen Moduls das aufrufende Modul eine Rückruf-Information beifügen. Wenn der Host das aufgerufene Modul reagierend auf eine Auswahl des Link aufruft, wird in einem Datensatz bei der Zwischenstation die Rückruf-Information gespeichert, beispielsweise dadurch, dass die Rückruf-Information auf dem der Sitzung zugehörigen Stapel abgelegt wird, und das aufgerufene Modul kann eine "Fertiggestellt"- oder "Beenden"-Option, -Steuerelement oder -Objekt in dem durch das aufgerufene Modul bereitgestellten Inhalt bereitstellen. Der Endbenutzer kann die "Fertiggestellt"- oder "Beenden"-Option auswählen, wenn er mit dem vom angerufenen Modul bereitgestellten Dienst fertig ist. Das aufgerufene Modul braucht über keine Information oder Kenntnis bezüglich der Identität des aufrufenden Moduls zu verfügen. Stattdessen braucht das aufgerufene Modul lediglich den Dienst zu identifizieren, auf den "vorher" zugegriffen wurde (d.h. das zuvor verwendete mobile Modul), und die Zwischenstation identifiziert dann basierend auf der Stapelinformation den Dienst, auf den zuvor zugegriffen wurde.
  • Reagierend auf die Auswahl der "Fertiggestellt"-Option wird eine Nachricht an den Host gesendet, um zu bewirken, dass der Host den Befehl ausführt, der ganz oben auf dem Informationsstapel spezifiziert ist. Im zuvor beschriebenen Beispiel ist der ganz oben auf dem Informationsstapel spezifizierte Befehl die Rückruf-Information, die dort zum Zeitpunkt des Aufrufes des aufgerufenen Moduls abgelegt wurde. Typischerweise bewirkt die Rückruf-Information, dass das anrufende Modul erneut aufgerufen wird und der Inhalt oder die Ausgabe vom angerufenen Modul an den Endbenutzer geliefert wird. Aus der Perspektive des Endbenutzers scheint es, als würde er wieder zum aufrufenden Modul zurückkehren, wenn er mit dem aufgerufenen Modul fertig ist.
  • B. Speichern von Daten bei einer Zwischenstation
  • Gemäß einem Ausführungsbeispiel können Daten bei einer Zwischenstation für eine Verwendung durch Dienste gespeichert werden, auf welche über die Zwischenstation zugegriffen wird, und wenn die Anwendungen oder mobilen Module für den Dienst ausgeführt werden, fügt die Zwischenstation die gespeicherten Daten der Ausgabe der Anwendung anstelle der in der Ausgabe enthaltenen Variablen hinzu, und zwar basierend auf einem Mapping dieser Variablen auf die gespeicherten Daten. In der Zwischenstation, welche ein Host sein kann, sind sowohl die Daten oder Werte oder Informationselemente, als auch ein Mapping zwischen diesen Informationselementen und den Variablen oder Kennungen gespeichert. Ein Dienst kann Daten für eine bestehende Variable speichern oder aktualisieren, oder er kann Daten für eine neue Variable speichern, die dem Mapping hinzugefügt werden soll.
  • Der Inhalt oder die Ausgabe, die von einem mobilen Modul erzeugt wird, kann eine oder mehrere der Kennungen beinhalten. Reagierend darauf, dass die Zwischenstation eine Ausgabe antrifft, die sich auf eine der Kennungen bezieht, liefert sie das zugehörige Informationselement, bevor sie die Ausgabe dem Client bereitstellt, der die Ausgabe anfordert.
  • Beispielsweise kann bei einer speziellen Sitzung der Host das Datenelement "Mike" speichern, für das ein Mapping auf die Kennung "Name" vorliegt. Ein Modul kann folgende Ausgabe erzeugen:
    <SimpleText>
    Hallo %name
    </SimpleText>
  • Wenn der Host bei einer speziellen Sitzung eine derartige Ausgabe antrifft, ersetzt er den "%name"-Verweis durch das zugehörige Datenelement "Mike", was zu folgender Ausgabe führt:
    <SimpleText>
    Hallo Mike
    </SimpleText>
  • Gemäß einem Ausführungsbeispiel können die Dienstanbieter und Entwickler der mobilen Module beim Host die Daten und Kennungen aufzeichnen, deren Pflege durch den Host erfolgt. Die Gestalter dieser Module können sich dadurch der Bürde einer dauerhaften Informationspflege entledigen und verfügen dennoch über den Vorzug einer dauerhaft gepflegten Information, indem sie ihrer Ausgabe lediglich die geeigneten Kennungen beifügen.
  • In einem weiteren Ausführungsbeispiel kann ein aufrufendes mobiles Modul ein Datenelement oder einen Verweis einrichten, um dem Endbenutzer zu erlauben, zum aufrufenden mobilen Modul zurückzukehren, wenn er mit dem aufgerufenen mobilen Modul fertig ist. Beispielsweise kann der Host für eine spezielle Sitzung der Kennung des aufrufenden Moduls das Datenelement "href" zuweisen. Ein Modul kann eine Ausgabe erzeugen, um einen Link zum aufgerufenen mobilen Modul herzustellen, und zwar, indem dieses Datenelement als erster Parameter wie folgt verwendet wird:
    <action>
    Kennung-aufgerufenes-Modul %href
    </action>
  • Wenn der Host bei einer speziellen Sitzung diese Ausgabe antrifft, ersetzt er den "%href"-Verweis durch die Kennung des aufrufenden Moduls, was zu folgender Ausgabe führt:
    <action>
    Kennung-aufgerufenes-Modul Kennung-aufrufendes-Modul
    </action>
  • Als Ergebnis wird, wenn der Client den Link zum aufgerufenen Modul verwendet, die Kennung des aufrufenden Moduls an das aufgerufene Modul als Parameter weitergegeben. Das aufgerufene Modul kann die Kennung des aufrufenden Moduls verwenden, um den Client wieder zum aufrufenden Modul zurück zu verweisen, wenn der Client mit dem aufgerufenen Modul fertig ist.
  • Bei einem weiteren Ausführungsbeispiel kann, bevor ein Link zu einem weiteren Dienst oder einem aufgerufenen Modul ausgeführt wird, ein Datenelement bei der Zwischenstation gespeichert werden, das einen Verweis auf den vorhergehenden Dienst oder ein aufrufendes mobiles Modul enthält. Der weitere Dienst oder das aufgerufene mobile Modul kann dann ein Objekt, beispielsweise ein "Fertiggestellt"- oder ein "Beenden"-Steuerelement oder -Schaltfläche auf einer Webseite bereitstellen, welches die Kennung oder Variable, wie beispielsweise "%previous" beinhaltet. Wenn die Zwischenstation in der Ausgabe des anderen Dienstes die "%previous"-Variable antrifft, ersetzt die Zwischenstation diese durch einen Verweis auf den vorhergehenden Dienst oder das aufrufende mobile Modul, wodurch dem Endbenutzer eine Rückkehr zum vorhergehenden Dienst ermöglicht wird, indem er das Objekt auf der Webseite des aufgerufenen mobilen Moduls auswählt.
  • Auch wenn in den zuvor beschriebenen Beispielen Variablen oder Kennungen, wie beispielsweise "%name" verwendet werden, um den Namen eines Endbenutzers zu bezeichnen, bzw. "%href" verwendet werden, um die Kennung des aufrufenden Moduls an das aufgerufene Modul weiterzugeben, können weitere Variablen verwendet werden, um auf weitere Daten zu verweisen, die lediglich dann festgelegt oder bekannt sind, wenn die Anwendung ausgeführt wird.
  • Beispielsweise können Kennungen verwendet wird, um das Datum oder die Zeit zu laden, zu der die Anwendung läuft oder eine spezifische Anfrage durch einen Client erfolgt.
  • V. HARDWARE-ÜBERSICHT
  • 5 ist ein Blockdiagramm, welches ein Computersystem 500 darstellt, auf dem ein Ausführungsbeispiel der Erfindung implementiert sein kann. Das Computersystem 500 beinhaltet einen Bus 502 oder einen anderen Übertragungsmechanismus zum Weitergeben von Information und einen mit dem Bus 502 verbundenen Prozessor 504 zur Verarbeitung von Information. Das Computersystem 500 beinhaltet auch einen Hauptspeicher 506, beispielsweise einen Direktzugriffsspeicher (RAM) oder ein anderes dynamisches Speicherbauelement, das mit dem Bus 502 verbunden ist, um Information und Anweisungen zu speichern, die durch den Prozessor 504 ausgeführt werden sollen. Der Hauptspeicher 506 kann auch zum Speichern von temporären Variablen oder weiterer während der Ausführung von durch den Prozessor 504 auszuführenden Anweisungen auftretender Zwischeninformation verwendet werden. Das Computersystem 500 beinhaltet weiter einen Festwertspeicher (ROM) 508 oder ein anderes statisches Speicherbauelement, das mit Bus 502 verbunden ist, um statische Information und Anweisungen für den Prozessor 504 zu speichern. Ein Speicherbauelement 510 wie beispielsweise eine Magnetplatte oder eine optische Platte ist vorgesehen und mit dem Bus 502 verbunden, um Information und Anweisungen zu speichern.
  • Das Computersystem 500 kann über den Bus 502 mit einer Anzeige 512 wie beispielsweise einer Kathodenstrahlröhre (CRT) verbunden sein, um einem Computerbenutzer Information anzuzeigen. Ein Eingabegerät 514, welches alphanumerische sowie weitere Tasten beinhaltet, ist mit dem Bus 502 verbunden, um Information und eine Befehlsauswahl an den Prozessor 504 weiterzugeben. Ein weiterer Typ von Benutzereingabegerät ist eine Cursor-Steuereinrichtung 516, wie beispielsweise eine Maus, ein Trackball, oder Cursor-Richtungstasten, welche eine Richtungsinformation und eine Befehlsauswahl an den Prozessor 504 weitergeben und die Cursor-Bewegung auf der Anzeige 512 steuern. Dieses Eingabegerät hat typischerweise zwei Freiheitsgrade in zwei Achsen, einer ersten Achse (z.B. x) und einer zweiten Achse (z.B. y), die dem Gerät ermöglichen, Positionen in einer Ebene festzulegen.
  • Die Erfindung betrifft die Verwendung des Computersystems 500 zur Implementierung der hier beschriebenen Verfahren. Gemäß einem Ausführungsbeispiel der Erfindung werden diese Verfahren durch ein Computersystem 500 reagierend darauf ausgeführt, dass der Prozessor 504 eine oder mehrere Sequenzen von einer oder mehreren im Hauptspeicher 506 enthaltenen Anweisungen ausführt. Derartige Anweisungen können in den Hauptspeicher 506 von einem weiteren computerlesbaren Medium wie beispielsweise einem Speichergerät 510 eingelesen werden. Eine Ausführung von im Hauptspeicher 506 enthaltenen Anweisungssequenzen bewirkt, dass der Prozessor 504 die hier beschriebenen Prozessschritte durchführt. In alternativen Ausführungsbeispielen können fest verdrahte Schaltkreise anstelle oder in Kombination mit Software-Anweisungen verwendet werden, um die Erfindung zu implementieren. Somit sind Ausführungsbeispiele der Erfindung nicht auf irgendeine spezielle Kombination von Hardware-Schaltkreisen und Software eingeschränkt.
  • Der Begriff "computerlesbares Medium" wie hier verwendet, bezieht sich auf ein beliebiges Medium, das an der Lieferung von Anweisungen an den Prozessor 504 für eine Ausführung durch diesen teilnimmt. Ein derartiges Medium kann viele Formen annehmen, einschließlich, jedoch nicht eingeschränkt auf nichtflüchtige Medien, flüchtige Medien und Übertragungsmedien. Nichtflüchtige Medien beinhalten beispielsweise optische oder magnetische Platten wie beispielsweise das Speichergerät 510. Flüchtige Medien beinhalten einen dynamischen Speicher wie beispielsweise den Hauptspeicher 506. Übertragungsmedien beinhalten Koaxialkabel, Kupferdrähte und Lichtwellenleiter, einschließlich der Drähte, die der Bus 502 aufweist. Übertragungsmedien können auch die Form von akustischen Wellen oder Lichtwellen annehmen, beispielsweise solchen, die bei Funkwellen- oder Infrarot-Datenübertragungen erzeugt werden.
  • Übliche Formen computerlesbarer Medien beinhalten beispielsweise eine Floppy-Disk, eine flexible Platte, eine Hard-Disk, ein Magnetband oder ein beliebiges anderes magnetisches Medium, eine CD-ROM, ein beliebiges anderes optisches Medium, Lochkarten, Lochstreifen, ein beliebiges anderes physisches Medium mit Lochmustern, eine RAM, ein PROM und ein EPROM, ein FLASH-EPROM und einen beliebigen anderen Speicherchip oder -kassette, eine Trägerwelle wie nachfolgend beschrieben, oder ein beliebiges anderes Medium, von dem ein Computer lesen kann.
  • Verschiedene Formen computerlesbarer Medien können daran beteiligt sein, eine oder mehrere Sequenzen von einer oder mehreren Anweisungen zum Prozessor 504 für eine Ausführung durch diesen zu tragen. Beispielsweise können sich die Anweisungen anfänglich auf einer Magnetplatte eines entfernt befindlichen Computers befinden. Der entfernt befindliche Computer kann die Anweisungen in seinen dynamischen Speicher laden und die Anweisungen unter Verwendung eines Modems über eine Telefonleitung senden. Ein lokal beim Computersystem 500 angeordnetes Modem kann die Daten über die Telefonleitung empfangen und eine Infrarot-Übertragungseinrichtung verwenden, um die Daten in ein Infrarotsignal umzuwandeln. Ein Infrarotdetektor kann die im infraroten Signal transportierten Daten empfangen und eine geeignete Schaltung kann die Daten auf den Bus 502 bringen. Der Bus 502 bringt die Daten zum Hauptspeicher 506, von dem aus der Prozessor 504 die Anweisungen holt und ausführt. Die vom Hauptspeicher 506 empfangenen Anweisungen können optional im Speichergerät 510 gespeichert werden, und zwar entweder vor oder nach der Ausführung durch den Prozessor 504.
  • Das Computersystem 500 beinhaltet auch eine Kommunikationsschnittstelle 518, die mit dem Bus 502 verbunden ist. Die Kommunikationsschnittstelle 518 stellt eine Zweiweg-Datenkommunikationsverbindung zu einer Netzverbindung 520 bereit, die mit einem lokalen Netz 522 verbunden ist. Beispielsweise kann es sich bei der Kommunikationsschnittstelle 518 um eine ISDN-(Integrated Services Digital Network)-Karte oder ein Modem handeln, um eine Datenkommunikationsverbindung zu einem entsprechenden Typ von Telefonleitung bereitzustellen. Als weiteres Beispiel kann es sich bei der Kommunikationsschnittstelle 518 um eine LAN-(Local Area Network)-Karte handeln, um eine Datenkommunikationsverbindung zu einem kompatiblen LAN bereitzustellen. Drahtlose Verbindungen können ebenfalls implementiert werden. Bei jeder derartigen Implementierung führt die Kommunikationsschnittstelle 518 ein Senden und Empfangen von elektrischen, elektromagnetischen oder optischen Signalen durch, welche digitale Datenströme tragen, die verschiedene Typen von Information repräsentieren.
  • Die Netzverbindung 520 stellt typischerweise über eines oder mehrere Netze eine Datenkommunikation zu weiteren Datengeräten bereit. Beispielsweise kann die Netzverbindung 520 über ein lokales Netz 522 eine Verbindung zu einem Host-Computer 524 oder zu einem Datengerät bereitstellen, das durch einen Internet-Dienstanbieter (ISP) 526 betrieben wird. Der ISP 526 stellt seinerseits Datenkommunikationsdienste über das weltweite Paketdatenkommunikationsnetz bereit, das heutzutage üblicherweise als "Internet" 528 bezeichnet wird. Sowohl das lokale Netz 522 als auch das Internet 528 verwenden elektrische, elektromagnetische oder optische Signale, welche digitale Datenströme transportieren. Die über die verschiedenen Netze geschickten Signale und die Signale, die über die Netzverbindung 520 und die Kommunikationsschnittstelle 518 gesendet werden, welche digitale Daten zum Computersystem 500 hin und von diesem weg transportieren, sind beispielhafte Formen von die Information transportierenden Trägerwellen.
  • Das Computersystem 500 kann über das/die Netz(e), die Netzverbindung 520 und die Kommunikationsschnittstelle 518 Nachrichten senden und Daten, einschließlich Programmcode, empfangen. Beim Beispiel des Internets könnte ein Server 530 einen angeforderten Code für ein Anwendungsprogramm über das Internet 528, den ISP 526, das lokale Netz 522 und die Kommunikationsschnittstelle 518 senden.
  • Der empfangene Code kann bei Empfang durch den Prozessor 504 verarbeitet werden und/oder für eine spätere Ausführung im Speichergerät 510 oder einem anderen nichtflüchtigen Speicher gespeichert werden. Auf diese Weise kann das Computersystem 500 einen Anwendungscode in Form einer Trägerwelle erhalten.

Claims (10)

  1. Ein Verfahren zur Online-Entwicklung von Anwendungen, das die computerimplementierten Schritte aufweist: – Empfangen einer ersten Anfrage von einem ersten Benutzer, der einen auf einem ersten Client laufenden ersten Browser benutzt; – Ansprechend auf die erste Anfrage, Bereitstellen eines ersten elektronischen Dokuments, das eine erste Schnittstelle erzeugt, wenn das erste elektronische Dokument von dem ersten Browser angezeigt wird, wobei die erste Schnittstelle ein erstes Bearbeitungsfeld zum Eingeben von Anwendungscode durch den ersten Benutzer enthält; – Empfangen des von dem ersten Benutzer in das erste Bearbeitungsfeld eingegebenen Anwendungscodes, wobei der Anwendungscode von der ersten Schnittstelle in Reaktion darauf weitergegeben wird, dass der erste Benutzer ein in der ersten Schnittstelle enthaltenes erstes Objekt auswählt; und – Speichern des Anwendungscodes bei einem von dem ersten Client entfernt befindlichen Server, wobei der Anwendungscode von dem Server in Reaktion auf eine erste Dienstanfrage von einem ersten Endbenutzer ausgeführt wird.
  2. Das Verfahren nach Anspruch 1, ferner mit den computerimplementierten Schritten: – Holen bestehenden Anwendungscodes von dem Server ansprechend auf eine zweite Anfrage von einem zweiten Benutzer, der einen auf einem zweiten Client laufenden zweiten Browser benutzt; – Bereitstellen eines zweiten elektronischen Dokuments, das eine zweite Schnittstelle erzeugt, wenn das zweite elektronische Dokument von dem zweiten Browser angezeigt wird, wobei die zweite Schnittstelle ein zweites Bearbeitungsfeld aufweist, das den bestehenden Anwendungs code anzeigt, welchen der zweite Benutzer durch eine Eingabe bearbeiten kann; – Empfangen von modifiziertem bestehenden Anwendungscode, der von der zweiten Schnittstelle ansprechend darauf weitergegeben wird, dass der zweite Benutzer ein in der zweiten Schnittstelle enthaltenes zweites Objekt auswählt; und – Speichern des modifizierten bestehenden Anwendungscodes bei dem von dem zweiten Client entfernt befindlichen Server, wobei der modifizierte bestehende Anwendungscode von dem Server in Reaktion auf eine zweite Dienstanfrage von einem zweiten Endbenutzer ausgeführt werden kann.
  3. Das Verfahren nach Anspruch 1, ferner mit den computerimplementierten Schritten: – Holen von bestehendem Anwendungscode von dem Server ansprechend auf eine zweite Anfrage von einem zweiten Benutzer, der einen auf einem zweiten Client laufenden zweiten Browser benutzt; – Bereitstellen eines zweiten elektronischen Dokuments, das eine zweite Schnittstelle erzeugt, wenn das zweite elektronische Dokument von dem zweiten Browser angezeigt wird, wobei die zweite Schnittstelle ein zweites Bearbeitungsfeld aufweist, das den bestehenden Anwendungscode anzeigt; und – Löschen des bestehenden Anwendungscodes ansprechend darauf, dass der zweite Benutzer ein in der zweiten Schnittstelle enthaltenes zweites Objekt auswählt.
  4. Das Verfahren nach Anspruch 1, bei dem der Server einer Zwischenstation zugeordnet ist, und bei dem das erste elektronische Dokument von der Zwischenstation bereitgestellt wird.
  5. Das Verfahren nach Anspruch 1, bei dem der Server einem Dienst zugeordnet ist, wobei das erste elektronische Dokument von einer Zwischenstation bereitgestellt wird, und wobei die erste Dienstanfrage von der Zwischenstation empfangen wird.
  6. Ein computerlesbares Medium mit einer Befehlssequenz oder mehreren Befehlssequenzen zur Online-Entwicklung von Anwendungen, wobei die Ausführung der einen Befehlssequenz oder mehreren Befehlssequenzen durch einen Prozessor oder mehrere Prozessoren den einen Prozessor oder die mehreren Prozessoren dazu veranlasst, die Schritte auszuführen: – Empfangen einer ersten Anfrage von einem ersten Benutzer, der einen auf einem ersten Client laufenden ersten Browser benutzt; – Ansprechend auf die erste Anfrage, Bereitstellen eines ersten elektronischen Dokuments, das eine erste Schnittstelle erzeugt, wenn das erste elektronische Dokument von dem ersten Browser angezeigt wird, wobei die erste Schnittstelle ein erstes Bearbeitungsfeld zum Eingeben von Anwendungscode durch den ersten Benutzer enthält; – Empfangen des von dem ersten Benutzer in das erste Bearbeitungsfeld eingegebenen Anwendungscodes, wobei der Anwendungscode von der ersten Schnittstelle in Reaktion darauf weitergegeben wird, dass der erste Benutzer ein in der ersten Schnittstelle enthaltenes erstes Objekt auswählt; und – Speichern des Anwendungscodes bei einem von dem ersten Client entfernt befindlichen Server, wobei der Anwendungscode von dem Server in Reaktion auf eine erste Dienstanfrage von einem ersten Endbenutzer ausgeführt wird.
  7. Das computerlesbare Medium nach Anspruch 6, ferner mit Befehlen, die, wenn sie von dem einen Prozessor oder den mehreren Prozessoren ausgeführt werden, den einen Prozessor oder die mehreren Prozessoren dazu veranlassen, die Schritte auszuführen: – Holen bestehenden Anwendungscodes von dem Server ansprechend auf eine zweite Anfrage von einem zweiten Benutzer, der einen auf einem zweiten Client laufenden zweiten Browser benutzt; – Bereitstellen eines zweiten elektronischen Dokuments, das eine zweite Schnittstelle erzeugt, wenn das zweite elektronische Dokument von dem zweiten Browser angezeigt wird, wobei die zweite Schnittstelle ein zweites Bearbeitungsfeld aufweist, das den bestehenden Anwendungscode anzeigt, welchen der zweite Benutzer durch eine Eingabe bearbeiten kann; – Empfangen von modifiziertem bestehenden Anwendungscode, der von der zweiten Schnittstelle ansprechend darauf weitergegeben wird, dass der zweite Benutzer ein in der zweiten Schnittstelle enthaltenes zweites Objekt auswählt; und – Speichern des modifizierten bestehenden Anwendungscodes bei dem von dem zweiten Client entfernt befindlichen Server, wobei der modifizierte bestehende Anwendungscode von dem Server in Reaktion auf eine zweite Dienstanfrage von einem zweiten Endbenutzer ausgeführt werden kann.
  8. Das computerlesbare Medium nach Anspruch 6, ferner mit Befehlen, die, wenn sie von dem einen Prozessor oder den mehreren Prozessoren ausgeführt werden, den einen Prozessor oder die mehreren Prozessoren dazu veranlassen, die Schritte auszuführen: – Holen von bestehendem Anwendungscode von dem Server ansprechend auf eine zweite Anfrage von einem zweiten Benutzer, der einen auf einem zweiten Client laufenden zweiten Browser benutzt; – Bereitstellen eines zweiten elektronischen Dokuments, das eine zweite Schnittstelle erzeugt, wenn das zweite elektronische Dokument von dem zweiten Browser angezeigt wird, wobei die zweite Schnittstelle ein zweites Bearbeitungsfeld aufweist, das den bestehenden Anwendungscode anzeigt; und – Löschen des bestehenden Anwendungscodes ansprechend darauf, dass der zweite Benutzer ein in der zweiten Schnittstelle enthaltenes zweites Objekt auswählt.
  9. Das computerlesbare Medium nach Anspruch 6, bei dem der Server einer Zwischenstation zugeordnet ist, und bei dem das erste elektronische Dokument von der Zwischenstation bereitgestellt wird.
  10. Das computerlesbare Medium nach Anspruch 6, bei dem der Server einem Dienst zugeordnet ist, wobei das erste elektronische Dokument von einer Zwischenstation bereitgestellt wird, und wobei die erste Dienstanfrage von der Zwischenstation empfangen wird.
DE60108158T 2000-09-06 2001-09-06 Onlineentwicklung von applikationen Expired - Lifetime DE60108158T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US23048900P 2000-09-06 2000-09-06
US230489P 2000-09-06
US948056 2001-09-05
US09/948,056 US7127705B2 (en) 2000-09-06 2001-09-05 Developing applications online
PCT/US2001/042066 WO2002021322A2 (en) 2000-09-06 2001-09-06 Developing applications online

Publications (2)

Publication Number Publication Date
DE60108158D1 DE60108158D1 (de) 2005-02-03
DE60108158T2 true DE60108158T2 (de) 2006-05-24

Family

ID=26924287

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60108158T Expired - Lifetime DE60108158T2 (de) 2000-09-06 2001-09-06 Onlineentwicklung von applikationen

Country Status (9)

Country Link
US (2) US7127705B2 (de)
EP (1) EP1332439B1 (de)
JP (1) JP5054272B2 (de)
AT (1) ATE286275T1 (de)
AU (1) AU2001295024B2 (de)
CA (1) CA2420017C (de)
DE (1) DE60108158T2 (de)
HK (1) HK1053381A1 (de)
WO (1) WO2002021322A2 (de)

Families Citing this family (239)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127705B2 (en) * 2000-09-06 2006-10-24 Oracle International Corporation Developing applications online
WO2002041139A2 (en) * 2000-11-18 2002-05-23 Sendo International Limited Resource files for electronic devices
US20020111936A1 (en) * 2001-01-19 2002-08-15 Ec Outlook, Inc. System and method for analyzing computer intelligible electronic data
SE0100190L (sv) * 2001-01-24 2002-07-25 Ericsson Telefon Ab L M En anordning och ett förfarande för presentationskundanpassning i en portalstruktur.
US20020103935A1 (en) * 2001-01-26 2002-08-01 Neil Fishman Pushing rich content information to mobile devices
JP2004530191A (ja) * 2001-02-22 2004-09-30 アクセンチュア グローバル サービスィズ ゲーエムベーハー ウェブ・サービスで構成された、インタネット・ホスティング・ビジネス・アプリケーションの開発システム
US7134122B1 (en) 2001-05-31 2006-11-07 Oracle International Corporation One click deployment
US6836884B1 (en) * 2001-06-04 2004-12-28 Microsoft Corporation Method and system for editing software programs
US8307045B1 (en) * 2001-08-22 2012-11-06 Open Text S.A. System and method for creating target-specific data conversion templates using a master style template
US8407353B2 (en) * 2001-09-17 2013-03-26 Open Text S.A. Method and system for sharing different web components between different web sites in a portal framework
US8606916B2 (en) 2001-09-17 2013-12-10 Open Text S.A. Graphical user interface for performing administration on web components of web sites in a portal framework
US7107522B1 (en) 2001-12-21 2006-09-12 Bellsouth Intellectual Property Corp. System and method for creating extensible content
US7568181B2 (en) * 2002-02-25 2009-07-28 Loma Linda University System for building interactive calculations on web pages
US7305671B2 (en) * 2002-03-22 2007-12-04 Sun Microsystems, Inc. Conversion of an object model to a source file generation model
US7499983B2 (en) * 2002-05-06 2009-03-03 Micron Technology, Inc. Web dispatch service
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
EP1599819A1 (de) * 2003-02-28 2005-11-30 Sap Ag Verfahren und softwareanwendung zum verarbeiten elektronischerdokumente
CA2423517A1 (en) * 2003-03-26 2004-09-26 Timothy G. Deboer Extensible mechanism for executing server side code
WO2005020071A1 (ja) * 2003-08-20 2005-03-03 Japan Tobacco Inc. プログラム生成システム、プログラム生成プログラムおよびプログラム生成モジュール
WO2005020070A1 (ja) * 2003-08-20 2005-03-03 Japan Tobacco Inc. プログラム生成システム、プログラム生成プログラムおよびプログラム生成モジュール
US7698383B2 (en) * 2004-02-27 2010-04-13 Research In Motion Limited System and method for building component applications using metadata defined mapping between message and data domains
US7774378B2 (en) 2004-06-04 2010-08-10 Icentera Corporation System and method for providing intelligence centers
US8117593B1 (en) * 2004-06-10 2012-02-14 Siemens Industry, Inc. Method for highlighting selected tasks in a program code listing
US8117559B2 (en) * 2004-09-30 2012-02-14 Citrix Systems, Inc. Method and apparatus for virtualizing window information
US8326764B1 (en) 2004-09-30 2012-12-04 Rockwell Automation Technologies, Inc. Factory automation transactions
US8171479B2 (en) 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US7752600B2 (en) 2004-09-30 2010-07-06 Citrix Systems, Inc. Method and apparatus for providing file-type associations to multiple applications
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
CA2488678A1 (en) * 2004-11-30 2006-05-30 Ibm Canada Limited - Ibm Canada Limitee Visual debugger for dynamic xsl transformation
US20060130047A1 (en) * 2004-11-30 2006-06-15 Microsoft Corporation System and apparatus for software versioning
JP2006178912A (ja) * 2004-12-24 2006-07-06 Fujitsu Ltd 情報処理方法及びプログラム
US8407206B2 (en) * 2005-05-16 2013-03-26 Microsoft Corporation Storing results related to requests for software development services
US8271964B2 (en) * 2005-05-16 2012-09-18 Microsoft Corporation Extensible software development services
WO2007015302A1 (ja) * 2005-08-04 2007-02-08 Fujitsu Limited ウェブページ制御プログラム、方法及びサーバ
US20070067426A1 (en) * 2005-09-22 2007-03-22 Sun Microsystems, Inc. Computer implemented methods for transferring files from a development environment to target mobile devices
US8131825B2 (en) 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
US20120240097A1 (en) * 2006-02-06 2012-09-20 Ralph Saunders Method of providing software development services
US7720809B2 (en) * 2006-06-06 2010-05-18 Microsoft Corporation Application integration using XML
US7779085B2 (en) * 2006-07-17 2010-08-17 Research In Motion Limited Automatic mobile device configuration
US7769894B2 (en) * 2006-10-13 2010-08-03 At&T Intellectual Property I, L.P. Determining and presenting communication device proximity information
US8086637B1 (en) 2006-12-22 2011-12-27 Emc Corporation Access control for business process data
US9015671B2 (en) * 2006-12-27 2015-04-21 The Mathworks, Inc. Integrating program construction
US8902152B2 (en) * 2007-04-30 2014-12-02 Motorola Mobility Llc Dual sided electrophoretic display
US20080291169A1 (en) * 2007-05-21 2008-11-27 Brenner David S Multimodal Adaptive User Interface for a Portable Electronic Device
US9122092B2 (en) * 2007-06-22 2015-09-01 Google Technology Holdings LLC Colored morphing apparatus for an electronic device
US20080320124A1 (en) * 2007-06-22 2008-12-25 Yahoo! Inc. Data-assisted content programming
FI20070570A0 (fi) * 2007-07-25 2007-07-25 Reslink Solutions Oy Joustava sovellusmuokkain RFID-tunnisteissa käytettävän tilanne- ja tilatiedon kontekstin luomiseen
US20090042619A1 (en) * 2007-08-10 2009-02-12 Pierce Paul M Electronic Device with Morphing User Interface
US8077154B2 (en) * 2007-08-13 2011-12-13 Motorola Mobility, Inc. Electrically non-interfering printing for electronic devices having capacitive touch sensors
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US8139195B2 (en) 2007-12-19 2012-03-20 Motorola Mobility, Inc. Field effect mode electro-optical device having a quasi-random photospacer arrangement
US8059232B2 (en) 2008-02-08 2011-11-15 Motorola Mobility, Inc. Electronic device and LC shutter for polarization-sensitive switching between transparent and diffusive states
US8392580B2 (en) 2008-02-20 2013-03-05 Research In Motion Limited Methods and systems for facilitating transfer of sessions between user devices
US9524506B2 (en) 2011-10-21 2016-12-20 Bigmachines, Inc. Methods and apparatus for maintaining business rules in a configuration system
US8578265B2 (en) 2008-10-07 2013-11-05 Bigmachines, Inc. Methods and apparatus for generating a dynamic document
US8782607B2 (en) * 2009-02-20 2014-07-15 Microsoft Corporation Contract failure behavior with escalation policy
EP2533195A1 (de) * 2009-04-08 2012-12-12 Research In Motion Limited Verfahren zur gemeinsamen Nutzung von bildbasierten Dateien zwischen einer Gruppe aus Kommunikationsvorrichtungen
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8806441B2 (en) * 2009-06-29 2014-08-12 International Business Machines Corporation Static code analysis
US8719776B2 (en) * 2009-12-30 2014-05-06 Foneclay, Inc. System for creation and distribution of software applications usable on multiple mobile device platforms
EP2541394A4 (de) * 2010-02-23 2014-09-03 Inn-Sung Bang System zur übermittlung der entwicklung einer fernanwendung, system zur übermittlung eines programmentwicklungskontrakts und entwicklung mit einer virtuellen kundenentwicklungskonfiguration sowie verfahren zur übermittlung der entwicklung einer fernanwendung
KR101161946B1 (ko) * 2010-03-24 2012-07-04 (주)아이윈디 스마트폰 어플리케이션 제작 시스템 및 그 방법
US20120036494A1 (en) * 2010-08-06 2012-02-09 Genwi, Inc. Web-based cross-platform wireless device application creation and management systems, and methods therefor
US20120036457A1 (en) * 2010-08-09 2012-02-09 REAL Software, Inc. Integrated development environment for rapid application development
US20120131556A1 (en) * 2010-11-19 2012-05-24 International Business Machines Corporation Xpath-based selection assistance of gui elements during manual test script authoring for xml-based applications
US8694954B2 (en) * 2010-11-29 2014-04-08 Norman Ortiz System and methods for mobile application development using mobile devices
US9424018B2 (en) * 2011-03-21 2016-08-23 Microsoft Technology Licensing, Llc Filtering and promoting application store applications
WO2013033731A1 (en) * 2011-09-02 2013-03-07 Lam Vu Systems and methods for processing software application metadata associated with a software application
US9218164B2 (en) * 2011-09-26 2015-12-22 Norman Ortiz System and method for mobile application development using mobile devices
US9606844B2 (en) * 2011-09-28 2017-03-28 Microsoft Technology Licensing, Llc Remotely-hosted interactive client-server session
US9703680B1 (en) * 2011-12-12 2017-07-11 Google Inc. System and method for automatic software development kit configuration and distribution
US8959426B1 (en) * 2012-02-01 2015-02-17 Amazon Technologies, Inc. Loading customer-supplied network page generation code
US8819477B1 (en) 2012-02-01 2014-08-26 Amazon Technologies, Inc. Error handling in a network page generation environment
US9800455B1 (en) 2012-02-08 2017-10-24 Amazon Technologies, Inc. Log monitoring system
US8934887B2 (en) 2012-05-31 2015-01-13 Emblaze Ltd. System and method for running mobile devices in the cloud
US8776021B1 (en) * 2012-06-07 2014-07-08 Amazon Technologies, Inc. Application experiment system
JP5297555B1 (ja) * 2012-12-04 2013-09-25 株式会社 ディー・エヌ・エー ネットワークシステム
US9459994B2 (en) * 2013-02-20 2016-10-04 Kony, Inc. Mobile application testing systems and methods
CN105849691B (zh) * 2013-06-18 2019-09-13 西安姆贝拉有限公司 用于代码虚拟化和远程进程调用生成的方法和装置
DK3011442T3 (da) * 2013-06-18 2021-01-04 Ciambella Ltd Fremgangsmåde og anordning til generering af et brugerdefineret softwareudviklingskit (sdk)
US9483393B1 (en) 2013-12-05 2016-11-01 Amazon Technologies, Inc. Discovering optimized experience configurations for a software application
US9619122B2 (en) 2014-01-10 2017-04-11 Ciambella Ltd. Method and apparatus for automatic device program generation
US9729583B1 (en) 2016-06-10 2017-08-08 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
WO2016113914A1 (ja) * 2015-01-16 2016-07-21 株式会社野村総合研究所 開発支援システム
US10067490B2 (en) 2015-05-08 2018-09-04 Ciambella Ltd. Method and apparatus for modifying behavior of code for a controller-based device
CA2984106C (en) 2015-05-08 2021-12-21 Ciambella Ltd. Method and apparatus for automatic software development for a group of controller-based devices
US10546058B2 (en) 2015-11-09 2020-01-28 Microsoft Technology Licensing, Llc Creating and modifying applications from a mobile device
US10706447B2 (en) 2016-04-01 2020-07-07 OneTrust, LLC Data processing systems and communication systems and methods for the efficient generation of privacy risk assessments
US20220164840A1 (en) 2016-04-01 2022-05-26 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US11244367B2 (en) 2016-04-01 2022-02-08 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US11004125B2 (en) 2016-04-01 2021-05-11 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US11727141B2 (en) 2016-06-10 2023-08-15 OneTrust, LLC Data processing systems and methods for synching privacy-related user consent across multiple computing devices
US10769301B2 (en) 2016-06-10 2020-09-08 OneTrust, LLC Data processing systems for webform crawling to map processing activities and related methods
US11544667B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10614247B2 (en) 2016-06-10 2020-04-07 OneTrust, LLC Data processing systems for automated classification of personal information from documents and related methods
US10509920B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing systems for processing data subject access requests
US10885485B2 (en) 2016-06-10 2021-01-05 OneTrust, LLC Privacy management systems and methods
US10798133B2 (en) 2016-06-10 2020-10-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10585968B2 (en) * 2016-06-10 2020-03-10 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11100444B2 (en) 2016-06-10 2021-08-24 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US10592692B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Data processing systems for central consent repository and related methods
US10949170B2 (en) 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for integration of consumer feedback with data subject access requests and related methods
US10685140B2 (en) 2016-06-10 2020-06-16 OneTrust, LLC Consent receipt management systems and related methods
US11651104B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Consent receipt management systems and related methods
US11651106B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10467432B2 (en) 2016-06-10 2019-11-05 OneTrust, LLC Data processing systems for use in automatically generating, populating, and submitting data subject access requests
US11238390B2 (en) 2016-06-10 2022-02-01 OneTrust, LLC Privacy management systems and methods
US11416589B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10706379B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems for automatic preparation for remediation and related methods
US11416798B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US10896394B2 (en) 2016-06-10 2021-01-19 OneTrust, LLC Privacy management systems and methods
US10708305B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Automated data processing systems and methods for automatically processing requests for privacy-related information
US11416109B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US12045266B2 (en) 2016-06-10 2024-07-23 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11144622B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Privacy management systems and methods
US10282700B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10909265B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Application privacy scanning systems and related methods
US11392720B2 (en) 2016-06-10 2022-07-19 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US12118121B2 (en) 2016-06-10 2024-10-15 OneTrust, LLC Data subject access request processing systems and related methods
US10783256B2 (en) 2016-06-10 2020-09-22 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11222139B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems and methods for automatic discovery and assessment of mobile software development kits
US11157600B2 (en) 2016-06-10 2021-10-26 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11227247B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US10713387B2 (en) 2016-06-10 2020-07-14 OneTrust, LLC Consent conversion optimization systems and related methods
US11336697B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10510031B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US10706174B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems for prioritizing data subject access requests for fulfillment and related methods
US10565397B1 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11294939B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US12052289B2 (en) 2016-06-10 2024-07-30 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11222309B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11341447B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Privacy management systems and methods
US11087260B2 (en) 2016-06-10 2021-08-10 OneTrust, LLC Data processing systems and methods for customizing privacy training
US11366786B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing systems for processing data subject access requests
US11366909B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10503926B2 (en) 2016-06-10 2019-12-10 OneTrust, LLC Consent receipt management systems and related methods
US10997318B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US10853501B2 (en) 2016-06-10 2020-12-01 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11301796B2 (en) 2016-06-10 2022-04-12 OneTrust, LLC Data processing systems and methods for customizing privacy training
US10726158B2 (en) 2016-06-10 2020-07-28 OneTrust, LLC Consent receipt management and automated process blocking systems and related methods
US11354435B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US11200341B2 (en) 2016-06-10 2021-12-14 OneTrust, LLC Consent receipt management systems and related methods
US10776514B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Data processing systems for the identification and deletion of personal data in computer systems
US10878127B2 (en) 2016-06-10 2020-12-29 OneTrust, LLC Data subject access request processing systems and related methods
US11403377B2 (en) 2016-06-10 2022-08-02 OneTrust, LLC Privacy management systems and methods
US11636171B2 (en) 2016-06-10 2023-04-25 OneTrust, LLC Data processing user interface monitoring systems and related methods
US10846433B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing consent management systems and related methods
US11057356B2 (en) 2016-06-10 2021-07-06 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US10909488B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Data processing systems for assessing readiness for responding to privacy-related incidents
US11461500B2 (en) 2016-06-10 2022-10-04 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US11188615B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Data processing consent capture systems and related methods
US10606916B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing user interface monitoring systems and related methods
US10642870B2 (en) 2016-06-10 2020-05-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US10678945B2 (en) 2016-06-10 2020-06-09 OneTrust, LLC Consent receipt management systems and related methods
US10496803B2 (en) 2016-06-10 2019-12-03 OneTrust, LLC Data processing systems and methods for efficiently assessing the risk of privacy campaigns
US11675929B2 (en) 2016-06-10 2023-06-13 OneTrust, LLC Data processing consent sharing systems and related methods
US10318761B2 (en) 2016-06-10 2019-06-11 OneTrust, LLC Data processing systems and methods for auditing data request compliance
US11277448B2 (en) 2016-06-10 2022-03-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11328092B2 (en) 2016-06-10 2022-05-10 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US11146566B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11138299B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11228620B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11416590B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11625502B2 (en) 2016-06-10 2023-04-11 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11418492B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US10776518B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Consent receipt management systems and related methods
US11025675B2 (en) 2016-06-10 2021-06-01 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US10944725B2 (en) 2016-06-10 2021-03-09 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US10509894B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11520928B2 (en) 2016-06-10 2022-12-06 OneTrust, LLC Data processing systems for generating personal data receipts and related methods
US11354434B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11074367B2 (en) 2016-06-10 2021-07-27 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US10803200B2 (en) 2016-06-10 2020-10-13 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US10706176B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data-processing consent refresh, re-prompt, and recapture systems and related methods
US10454973B2 (en) 2016-06-10 2019-10-22 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10284604B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing and scanning systems for generating and populating a data inventory
US10592648B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Consent receipt management systems and related methods
US10848523B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11562097B2 (en) 2016-06-10 2023-01-24 OneTrust, LLC Data processing systems for central consent repository and related methods
US11038925B2 (en) 2016-06-10 2021-06-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10762236B2 (en) 2016-06-10 2020-09-01 OneTrust, LLC Data processing user interface monitoring systems and related methods
US10586075B2 (en) 2016-06-10 2020-03-10 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US11210420B2 (en) 2016-06-10 2021-12-28 OneTrust, LLC Data subject access request processing systems and related methods
US10949565B2 (en) 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11138242B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US10416966B2 (en) 2016-06-10 2019-09-17 OneTrust, LLC Data processing systems for identity validation of data subject access requests and related methods
US11438386B2 (en) 2016-06-10 2022-09-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11475136B2 (en) 2016-06-10 2022-10-18 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11188862B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Privacy management systems and methods
US10740487B2 (en) 2016-06-10 2020-08-11 OneTrust, LLC Data processing systems and methods for populating and maintaining a centralized database of personal data
US11134086B2 (en) 2016-06-10 2021-09-28 OneTrust, LLC Consent conversion optimization systems and related methods
US11295316B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US10796260B2 (en) 2016-06-10 2020-10-06 OneTrust, LLC Privacy management systems and methods
US10839102B2 (en) 2016-06-10 2020-11-17 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US10282559B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US10242228B2 (en) 2016-06-10 2019-03-26 OneTrust, LLC Data processing systems for measuring privacy maturity within an organization
US10706131B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems and methods for efficiently assessing the risk of privacy campaigns
US11481710B2 (en) 2016-06-10 2022-10-25 OneTrust, LLC Privacy management systems and methods
US10873606B2 (en) 2016-06-10 2020-12-22 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10565161B2 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for processing data subject access requests
US10496846B1 (en) 2016-06-10 2019-12-03 OneTrust, LLC Data processing and communications systems and methods for the efficient implementation of privacy by design
US10997315B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10565236B1 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10353673B2 (en) 2016-06-10 2019-07-16 OneTrust, LLC Data processing systems for integration of consumer feedback with data subject access requests and related methods
US10776517B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Data processing systems for calculating and communicating cost of fulfilling data subject access requests and related methods
US11586700B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools
US11151233B2 (en) 2016-06-10 2021-10-19 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10607028B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US10169609B1 (en) 2016-06-10 2019-01-01 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11222142B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for validating authorization for personal data collection, storage, and processing
US11023842B2 (en) 2016-06-10 2021-06-01 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US10572686B2 (en) 2016-06-10 2020-02-25 OneTrust, LLC Consent receipt management systems and related methods
US11343284B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US10311500B2 (en) * 2016-09-01 2019-06-04 Facebook, Inc Methods and systems for developer onboarding for software-development products
JP2018129011A (ja) * 2017-02-10 2018-08-16 日本電信電話株式会社 データ処理装置、基盤及びデータ出力方法
WO2018170079A1 (en) 2017-03-14 2018-09-20 Ciambella Ltd. Method and apparatus for automatically generating and incorporating code in development environments
US10013577B1 (en) 2017-06-16 2018-07-03 OneTrust, LLC Data processing systems for identifying whether cookies contain personally identifying information
US10331608B2 (en) * 2017-09-22 2019-06-25 International Business Machines Corporation Replacing mechanical/magnetic components with a supercomputer
US11144675B2 (en) 2018-09-07 2021-10-12 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11544409B2 (en) 2018-09-07 2023-01-03 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US10803202B2 (en) 2018-09-07 2020-10-13 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US11727083B2 (en) * 2019-09-13 2023-08-15 Oracle International Corporation System and method for automatic selection for dynamic site compilation within a cloud-based content hub environment
US11182456B2 (en) 2019-09-13 2021-11-23 Oracle International Corporation System and method for providing a user interface for dynamic site compilation within a cloud-based content hub environment
WO2022011142A1 (en) 2020-07-08 2022-01-13 OneTrust, LLC Systems and methods for targeted data discovery
EP4189569A1 (de) 2020-07-28 2023-06-07 OneTrust LLC Systeme und verfahren zur automatischen blockierung der verwendung von verfolgungswerkzeugen
WO2022032072A1 (en) 2020-08-06 2022-02-10 OneTrust, LLC Data processing systems and methods for automatically redacting unstructured data from a data subject access request
WO2022060860A1 (en) 2020-09-15 2022-03-24 OneTrust, LLC Data processing systems and methods for detecting tools for the automatic blocking of consent requests
US11526624B2 (en) 2020-09-21 2022-12-13 OneTrust, LLC Data processing systems and methods for automatically detecting target data transfers and target data processing
EP4241173A1 (de) 2020-11-06 2023-09-13 OneTrust LLC Systeme und verfahren zur identifizierung von datenverarbeitungsaktivitäten auf der basis von datenentdeckungsergebnissen
US11687528B2 (en) 2021-01-25 2023-06-27 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
US11442906B2 (en) 2021-02-04 2022-09-13 OneTrust, LLC Managing custom attributes for domain objects defined within microservices
US20240111899A1 (en) 2021-02-08 2024-04-04 OneTrust, LLC Data processing systems and methods for anonymizing data samples in classification analysis
US20240098109A1 (en) 2021-02-10 2024-03-21 OneTrust, LLC Systems and methods for mitigating risks of third-party computing system functionality integration into a first-party computing system
US11775348B2 (en) 2021-02-17 2023-10-03 OneTrust, LLC Managing custom workflows for domain objects defined within microservices
WO2022178219A1 (en) 2021-02-18 2022-08-25 OneTrust, LLC Selective redaction of media content
EP4305539A1 (de) 2021-03-08 2024-01-17 OneTrust, LLC Datenübertragungserkennungs- und -analysesysteme und zugehörige verfahren
US11562078B2 (en) 2021-04-16 2023-01-24 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
US11620142B1 (en) 2022-06-03 2023-04-04 OneTrust, LLC Generating and customizing user interfaces for demonstrating functions of interactive user environments

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5115501A (en) 1988-11-04 1992-05-19 International Business Machines Corporation Procedure for automatically customizing the user interface of application programs
JP2522898B2 (ja) * 1992-09-08 1996-08-07 インターナショナル・ビジネス・マシーンズ・コーポレイション 動的カストマイズ方法及びグラフィックリソ―ス・エディタ
US5838918A (en) * 1993-12-13 1998-11-17 International Business Machines Corporation Distributing system configuration information from a manager machine to subscribed endpoint machines in a distrubuted computing environment
US5694546A (en) * 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
WO1996015505A2 (en) * 1994-11-08 1996-05-23 Vermeer Technologies, Inc. An online service development tool with fee setting capabilities
US5850548A (en) * 1994-11-14 1998-12-15 Borland International, Inc. System and methods for visual programming based on a high-level hierarchical data flow model
US5572643A (en) * 1995-10-19 1996-11-05 Judson; David H. Web browser with dynamic display of information objects during linking
US5887172A (en) * 1996-01-10 1999-03-23 Sun Microsystems, Inc. Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends
US5909545A (en) * 1996-01-19 1999-06-01 Tridia Corporation Method and system for on demand downloading of module to enable remote control of an application program over a network
US5845128A (en) * 1996-02-20 1998-12-01 Oracle Corporation Automatically preserving application customizations during installation of a new software release
US5937163A (en) * 1996-03-26 1999-08-10 Industrial Technology Research Institute Method and system at a host node for hierarchically organizing the links visited by a world wide web browser executing at the host node
US5850433A (en) * 1996-05-01 1998-12-15 Sprint Communication Co. L.P. System and method for providing an on-line directory service
US5835724A (en) * 1996-07-03 1998-11-10 Electronic Data Systems Corporation System and method for communication information using the internet that receives and maintains information concerning the client and generates and conveys the session data to the client
US5991535A (en) * 1996-07-03 1999-11-23 Sun Microsystems, Inc. Visual composition tool for constructing application programs using distributed objects on a distributed object network
US5933811A (en) * 1996-08-20 1999-08-03 Paul D. Angles System and method for delivering customized advertisements within interactive communication systems
US6237020B1 (en) * 1996-10-01 2001-05-22 International Business Machines Corporation Task-oriented automatic distribution of software
US6009274A (en) * 1996-12-13 1999-12-28 3Com Corporation Method and apparatus for automatically updating software components on end systems over a network
US5960432A (en) * 1996-12-31 1999-09-28 Intel Corporation Multi-level captioning for enhanced data display
US6892226B1 (en) * 1997-03-27 2005-05-10 Intel Corporation System for delivery of dynamic content to a client device
US6286029B1 (en) * 1997-04-28 2001-09-04 Sabre Inc. Kiosk controller that retrieves content from servers and then pushes the retrieved content to a kiosk in the order specified in a run list
US6073163A (en) * 1997-06-10 2000-06-06 Oracle Corporation Method and apparatus for enabling web-based execution of an application
US6094679A (en) * 1998-01-16 2000-07-25 Microsoft Corporation Distribution of software in a computer network environment
JPH11259284A (ja) * 1998-03-12 1999-09-24 Fujitsu Ltd オンラインプログラム更新システム及びプログラム更新用プログラムを記録したコンピュータ読み取り可能な記録媒体
US6510469B1 (en) * 1998-05-13 2003-01-21 Compaq Information Technologies Group,L.P. Method and apparatus for providing accelerated content delivery over a network
US6578073B1 (en) * 1998-05-13 2003-06-10 Hewlett-Packard Development Company, L.P. Accelerated content delivery over a network using reduced size objects
US6128655A (en) * 1998-07-10 2000-10-03 International Business Machines Corporation Distribution mechanism for filtering, formatting and reuse of web based content
US7197570B2 (en) * 1998-07-22 2007-03-27 Appstream Inc. System and method to send predicted application streamlets to a client device
JP2000148458A (ja) * 1998-08-31 2000-05-30 Mitsubishi Materials Corp プログラム開発支援装置及び記録媒体
US6324681B1 (en) * 1998-10-01 2001-11-27 Unisys Corporation Automated development system for developing applications that interface with both distributed component object model (DCOM) and enterprise server environments
US7131062B2 (en) * 1998-12-09 2006-10-31 International Business Machines Corporation Systems, methods and computer program products for associating dynamically generated web page content with web site visitors
US6408360B1 (en) * 1999-01-25 2002-06-18 International Business Machines Corporation Cache override control in an apparatus for caching dynamic content
US6535896B2 (en) * 1999-01-29 2003-03-18 International Business Machines Corporation Systems, methods and computer program products for tailoring web page content in hypertext markup language format for display within pervasive computing devices using extensible markup language tools
US6313835B1 (en) * 1999-04-09 2001-11-06 Zapa Digital Arts Ltd. Simplified on-line preparation of dynamic web sites
US6345279B1 (en) * 1999-04-23 2002-02-05 International Business Machines Corporation Methods and apparatus for adapting multimedia content for client devices
US6477565B1 (en) * 1999-06-01 2002-11-05 Yodlee.Com, Inc. Method and apparatus for restructuring of personalized data for transmission from a data network to connected and portable network appliances
US6584548B1 (en) * 1999-07-22 2003-06-24 International Business Machines Corporation Method and apparatus for invalidating data in a cache
US6735741B1 (en) * 1999-07-30 2004-05-11 International Business Machines Corporation Method system, and program for dynamic resource linking when copies are maintained at different storage locations
US6493871B1 (en) * 1999-09-16 2002-12-10 Microsoft Corporation Method and system for downloading updates for software installation
US6430624B1 (en) 1999-10-21 2002-08-06 Air2Web, Inc. Intelligent harvesting and navigation system and method
US20020055351A1 (en) * 1999-11-12 2002-05-09 Elsey Nicholas J. Technique for providing personalized information and communications services
JP2003521039A (ja) * 2000-01-21 2003-07-08 ソーセロン インコーポレイテッド ネットワーク上で豊富なメディアコンテンツを送達するためのシステム及び方法
US20010047517A1 (en) * 2000-02-10 2001-11-29 Charilaos Christopoulos Method and apparatus for intelligent transcoding of multimedia data
US6757709B1 (en) * 2000-04-05 2004-06-29 Hewlett-Packard Development Company, L.P. Method and apparatus for providing a client system with information via a network
EP1292886A1 (de) * 2000-04-21 2003-03-19 Togethersoft Corporation Verfahren und systeme zum unterst tzen und einsetzen von verteilten datenverarbeitungskomponenten
US6704776B1 (en) * 2000-06-30 2004-03-09 Webtv Networks, Inc. Selecting attribute based content for server applications
JP2002032135A (ja) * 2000-07-18 2002-01-31 Mitsubishi Electric Corp ソフトウェア配布システムおよびソフトウェア配布方法
US6697852B1 (en) 2000-08-17 2004-02-24 Siung Ryu Oneclick installation for client-server application package
US7127705B2 (en) * 2000-09-06 2006-10-24 Oracle International Corporation Developing applications online
US20020037709A1 (en) * 2000-09-22 2002-03-28 Ranjit Bhatia System, method and apparatus for facilitating the receipt of realtime information from telecommunications nodes
US6918113B2 (en) * 2000-11-06 2005-07-12 Endeavors Technology, Inc. Client installation and execution system for streamed applications
AU2002228738A1 (en) * 2000-12-07 2002-06-18 Bruce M. Boghosian System and method for delivery of documents over a computer network
US7013461B2 (en) * 2001-01-05 2006-03-14 International Business Machines Corporation Systems and methods for service and role-based software distribution
US20020147974A1 (en) * 2001-02-09 2002-10-10 Wookey Michael J. Networked installation system for deploying systems management platforms
US20040015961A1 (en) * 2001-03-19 2004-01-22 International Business Machines Corporation Method and apparatus for automatic prerequisite verification and installation of software
US7134122B1 (en) * 2001-05-31 2006-11-07 Oracle International Corporation One click deployment

Also Published As

Publication number Publication date
EP1332439A2 (de) 2003-08-06
US20070078942A1 (en) 2007-04-05
CA2420017A1 (en) 2002-03-14
US7127705B2 (en) 2006-10-24
HK1053381A1 (en) 2003-10-17
CA2420017C (en) 2010-07-27
US20020078168A1 (en) 2002-06-20
AU2001295024B2 (en) 2007-06-14
ATE286275T1 (de) 2005-01-15
JP2004527016A (ja) 2004-09-02
EP1332439B1 (de) 2004-12-29
WO2002021322A3 (en) 2003-05-30
JP5054272B2 (ja) 2012-10-24
WO2002021322A2 (en) 2002-03-14
DE60108158D1 (de) 2005-02-03
US7784030B2 (en) 2010-08-24

Similar Documents

Publication Publication Date Title
DE60108158T2 (de) Onlineentwicklung von applikationen
DE60121987T2 (de) Zugreifen auf Daten, die bei einer Zwischenstation gespeichert sind, von einem Dienst aus
EP1330736B1 (de) Anbieten von inhalt aus mehreren diensten
DE60116343T2 (de) Webserver
DE60126016T2 (de) Serverseitige Kontrollobjekte zur Verarbeitung von kundenseitigen Benutzerschnittstellenelementen
US7089295B2 (en) Customizing content provided by a service
US8260844B2 (en) Information messaging and collaboration system
DE69801816T2 (de) Vorrichtung und verfahren zur aktualisierung und zur synchronisierung von informationen zwischen einem klient und einem server
US7287229B2 (en) Template-driven process system
US20080195932A1 (en) Method and apparatus for re-editing and redistributing web documents
DE19962192A1 (de) Verfahren und System zur Inhaltskonvertierung von elektronischen Daten für drahtlose Vorrichtungen
US20060277252A1 (en) Method And Device For Executing A Function With Selection And Sending Of Multiple Results In A Client-Server Environment
AU2001293254A1 (en) Accessing data stored at an intermediary from a service
US20040143795A1 (en) Display data creating technique for automatically Providing efficient representation of portal pages with improved visual recognition
KR100918503B1 (ko) 웹사이트 링크정보를 이용한 웹페이지 정보 전달 방법 및 그 시스템
US20070233812A1 (en) Common communication framework for network objects
DE10045409A1 (de) Modellierung von Verknüpfung und Navigation in einem Hostsystem mit alten Beständen
DE10219899A1 (de) Mehrkanal-Übermittlungssystem
JP2003036264A (ja) マニュアル提供装置及びその方法

Legal Events

Date Code Title Description
8364 No opposition during term of opposition