DE112021005927T5 - Patchen von arbeitsabläufen - Google Patents

Patchen von arbeitsabläufen Download PDF

Info

Publication number
DE112021005927T5
DE112021005927T5 DE112021005927.0T DE112021005927T DE112021005927T5 DE 112021005927 T5 DE112021005927 T5 DE 112021005927T5 DE 112021005927 T DE112021005927 T DE 112021005927T DE 112021005927 T5 DE112021005927 T5 DE 112021005927T5
Authority
DE
Germany
Prior art keywords
nodes
patches
workflow
target workflow
target
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.)
Pending
Application number
DE112021005927.0T
Other languages
English (en)
Inventor
Michael Johnston
Vasileios Vasileiadis
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112021005927T5 publication Critical patent/DE112021005927T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Abstract

Verfahren zum Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung durch einen oder mehrere Prozessoren in einem Datenverarbeitungssystem werden bereitgestellt. Ein oder mehrere Patches können aus einem Quellarbeitsablauf extrahiert werden. Der Zielarbeitsablauf in einer Mehrzahl von Knoten kann statisch oder dynamisch geändert werden, indem der eine oder mehrere Patches auf den Zielarbeitsablauf angewendet werden. Der eine oder mehrere der Mehrzahl von Knoten können im Zielarbeitsablauf hinzugefügt, entfernt oder geändert werden, während der Zielarbeitsablauf als Reaktion auf das Anwenden des einen oder mehrerer Patches aktiv ist.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf Datenverarbeitungssysteme und im Besonderen auf verschiedene Ausführungsformen zum statischen oder dynamischen Patchen von Arbeitsabläufen (workflows) in einer Datenverarbeitungsumgebung in einem Datenverarbeitungssystem unter Verwendung eines Datenverarbeitungsprozessors.
  • KURZDARSTELLUNG
  • Gemäß einer Ausführungsform der vorliegenden Erfindung wird ein Verfahren zum statischen oder dynamischen Patchen von Arbeitsabläufen in einem Datenverarbeitungssystem bereitgestellt. Ein oder mehrere aus einem Quellarbeitsablauf extrahierte Patches können in einer Mehrzahl von Knoten auf einen Zielarbeitsablauf angewendet werden. Der eine oder mehrere Knoten der Mehrzahl von Knoten im Zielarbeitsablauf können hinzugefügt, entfernt oder geändert werden, während der Zielarbeitsablauf als Reaktion auf das Anwenden des einen oder mehrerer Patches aktiv ist.
  • In einer weiteren Ausführungsform können ein oder mehrere Patches aus einem Quellarbeitsablauf extrahiert werden. Der Zielarbeitsablauf in einer Mehrzahl von Knoten kann statisch oder dynamisch geändert werden, indem der eine oder mehrere Patches auf den Zielarbeitsablauf angewendet werden. Der eine oder mehrere der Mehrzahl von Knoten können im Zielarbeitsablauf hinzugefügt, entfernt oder geändert werden, während der Zielarbeitsablauf als Reaktion auf das Anwenden des einen oder mehrerer Patches aktiv ist.
  • In einer weiteren Ausführungsform können ein oder mehrere Patches aus einem Quellarbeitsablauf extrahiert werden. Der Zielarbeitsablauf in einer Mehrzahl von Knoten kann statisch oder dynamisch geändert werden, indem der eine oder mehrere Patches auf den Zielarbeitsablauf angewendet werden. Eine Konfiguration dieser Knoten der Mehrzahl von Knoten im Zielarbeitsablauf kann als Reaktion auf das Anwenden des einen oder mehrerer Patches geändert werden. Diese Knoten der Mehrzahl von Knoten sowie alle abhängigen Knoten, die im Zielarbeitsablauf aktiv oder inaktiv sind, können als Reaktion auf das Anwenden des einen oder mehrerer Patches identifiziert und selektiv entfernt werden.
  • Eine Ausführungsform enthält ein durch einen Computer verwendbares Programmprodukt. Das durch einen Computer verwendbare Programmprodukt enthält eine durch einen Computer lesbare Speichereinheit sowie Programmanweisungen, die in der Speichereinheit gespeichert sind.
  • Eine Ausführungsform enthält ein Computersystem. Das Computersystem umfasst einen Prozessor, einen durch einen Computer lesbaren Speicher und eine durch einen Computer lesbare Speichereinheit sowie Programmanweisungen, die in der Speichereinheit gespeichert sind, um über den Speicher von dem Prozessor ausgeführt zu werden.
  • Zusätzlich zu den vorstehenden beispielhaften Ausführungsformen des Verfahrens werden daher weitere beispielhafte Ausführungsformen von Systemen und Computerprodukten zum statischen oder dynamischen Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung bereitgestellt.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
    • 1 ist ein Blockschaubild eines beispielhaften Cloud-Computing-Knotens gemäß einer Ausführungsform der vorliegenden Erfindung;
    • 2 stellt eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung dar;
    • 3 stellt Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung dar;
    • 4 ist ein zusätzliches Blockschaubild, das eine beispielhafte funktionale Beziehung zwischen verschiedenen Aspekten der vorliegenden Erfindung darstellt;
    • die 5A bis 5E sind Blockschaubilder/Ablaufpläne, die beispielhafte Systeme und Funktionen zum statischen oder dynamischen Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung durch einen Prozessor darstellen, in der Aspekte der vorliegenden Erfindung umgesetzt werden können;
    • 6 ist ein Ablaufplan, der ein beispielhaftes Verfahren zum statischen oder dynamischen Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung durch einen Prozessor darstellt, in der Aspekte der vorliegenden Erfindung umgesetzt werden können;
    • 7 ist ein Ablaufplan, der ein beispielhaftes Verfahren zum statischen oder dynamischen Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung durch einen Prozessor darstellt, in der Aspekte der vorliegenden Erfindung umgesetzt werden können; und
    • 8 ist ein Ablaufplan, der wiederum ein beispielhaftes Verfahren zum statischen oder dynamischen Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung durch einen Prozessor in einer Datenverarbeitungsumgebung darstellt, in der Aspekte der vorliegenden Erfindung umgesetzt werden können.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • Datenverarbeitungsressourcen werden in der Regel von Anbietern mit festen Konfigurationsebenen vorkonfiguriert. Ein Aspekt besteht darin, dass jede einzelne Datenverarbeitungsressource, z.B. Speichergröße, Anzahl von CPUs, Festplattengröße usw., begrenzt ist. Ein weiterer Aspekt ist die begrenzte Anzahl an physischen Anpassungsmöglichkeiten, die jede Datenverarbeitungsplattform bietet. Moderne Arbeitslasten unterliegen diesen Einschränkungen, weshalb in Datenverarbeitungsumgebungen Techniken wie Auslagern von Speicher und Cache-Optimierung eingesetzt werden.
  • So stellt Cloud-Computing im Allgemeinen die Illusion eines unendlichen Ressourcenpools bereit und stellt den Benutzern flexibel Ressourcen zur Verfügung bzw. deaktiviert sie. Dieses dynamische Bereitstellen hat für leistungsempfindliche Arbeitslasten wie z.B. Trainieren von tiefem Lernen (deep learning) und hochleistungsfähige Datenverarbeitung (high-performance computing - „HPC“) seinen Preis. Für diese Arbeitslasten müssen die bereitgestellten Ressourcen so nah wie möglich beieinander liegen, um optimale Ausführungszeiten zu gewährleisten. Diese Arbeitslasten haben unterschiedliche Rechen- und Datenübertragungszyklen, und die Geschwindigkeit des Arbeitsablaufs wird durch die Maschine mit dem langsamsten Rechenzyklus und den längsten Datenübertragungszyklen im Verhältnis zu anderen Maschinen begrenzt.
  • Die Verwaltung des Arbeitsablaufs stellt eine Infrastruktur für das Einrichten, Durchführen und Überwachen definierter Aufgaben in einem Prozess bereit, der als Arbeitsablauf gestaltet werden kann. Aktuelle Arbeitsablaufsysteme gehen davon aus, dass ein Modell des Prozesses vorhanden ist und die Hauptaufgabe des Systems darin besteht, sicherzustellen, dass alle Aktivitäten in der richtigen Reihenfolge durchgeführt werden und der Prozess erfolgreich abgeschlossen wird. Einzelne Aufgaben eines Arbeitsablaufs können vom Abschließen einer vorhergehenden Aufgabe abhängen, bevor eine nachfolgende Aufgabe begonnen und abgeschlossen werden kann. Eine Verzögerung beim Abschließen früherer Aufgaben in einem beliebigen Stadium des Prozesses kann einen Kaskadeneffekt nach sich ziehen, der wiederum das Abschließen der nachfolgenden Aufgaben verzögern kann, wodurch sich der gesamte Prozess verzögert.
  • Einige Anwendungen nutzen Arbeitsablaufplaner, um die Arbeitsleistung zu beschleunigen, z.B. das Forschungstempo eines Wissenschaftlers. Arbeitsablaufplaner ermöglichen es beispielsweise einem Endbenutzer (z.B. einem Wissenschaftler), sich auf ein bestimmtes Thema (z.B. ein Forschungsgebiet des Wissenschaftlers) zu konzentrieren, indem er hochleistungsfähige Datenverarbeitung (HPC) und Cloud-Ressourcen einsetzt, ohne dass er dafür Fachwissen auf dem Gebiet HPC/Cloud-Computing benötigt. Arbeitsabläufe begünstigen auch die Idee reproduzierbarer und portabler Pipelines. Dies wiederum ermöglicht es einem Benutzer (z.B. Wissenschaftler, Forscher usw.), Informationen wie z.B. die Forschungsergebnisse des Wissenschaftlers mit anderen Beteiligten (z.B. einem Forschungsteam) zu teilen. Intuitiv betrachtet, sind Arbeitsabläufe für Forschung genauso wichtig wie Container für Cloud-Computing. Natürlich sind Endbenutzer wie z.B. Wissenschaftler nicht darauf beschränkt, einen Arbeitsablauf lediglich zu verwenden. Der Benutzer kann einen Arbeitsablauf auch ändern und tut dies in der Regel auch, um ihn an seine Bedürfnisse anzupassen. Ein Arbeitsablauf kann aus einer Bibliothek abgerufen werden. Der Arbeitsablauf kann angepasst werden, um Knoten hinzuzufügen, zu entfernen oder zu ändern, bevor der Arbeitsablauf auf einer HPC-/Cloud-Infrastruktur gestartet wird. Sobald der Arbeitsablauf beendet ist, analysieren die Forscher/Werkzeuge die Ergebnisse des Arbeitsablaufs und können diese Informationen verwenden, um den Arbeitsablauf zu verbessern. Diese Rückmeldeschleife kann so oft wiederholt werden, bis das gewünschte Ergebnis erreicht ist.
  • Arbeiten mit Arbeitsabläufen wird komplex, wenn die Benutzer einen aktiven Arbeitsablauf ändern möchten. Dies geht mit besonderen Herausforderungen einher, weshalb Benutzer von Arbeitsabläufen in der Regel über statisches Patchen einen Arbeitsablauf anhalten, ändern und dann neu starten. Statisches Patchen ist viel einfacher, kann aber einen bereits erreichten Arbeitsfortschritt zunichtemachen, da ein Anhalten eines Arbeitsablaufs zu einem sofortigen Beenden von Knotenaufgaben führen kann. Daher besteht ein Bedarf, den Benutzer in die Lage zu versetzen, einen Arbeitsablauf entweder statisch (d.h. während der Arbeitsablauf nicht aktiv ist) oder dynamisch zu ändern.
  • Verschiedene Ausführungsformen der vorliegenden Erfindung stellen daher ein statisches oder dynamisches Patchen von Arbeitsabläufen bereit. Bei einem Aspekt kann ein Patch aus einem Quellarbeitsablauf extrahiert und auf einen Zielarbeitsablauf angewendet werden. Statische Patches können 1) neue Knoten einfügen, 2) Knoten aus dem Zielarbeitsablauf entfernen, 3) jeden Knoten im Zielarbeitsablauf ändern. Dynamische Patches 1) können angewendet werden, ohne dass der Arbeitsablauf angehalten und neu gestartet werden muss, und/oder 2) können künftige Aufgaben von Knoten im Zielarbeitsablauf ändern (z.B. Knoten, die zum Zeitpunkt des dynamischen Patchens entweder aktiv oder inaktiv sind, oder solche, die im Laufe ihrer Lebensdauer aktiv mehrere Aufgaben erzeugen). Bei einem Aspekt kann es sich bei einem „Patch“ (statisch oder dynamisch) um einen Patch einer Computeranwendung handeln, d.h. um eine Software, die entwickelt wurde, um Probleme bei einem Computerprogramm zu beheben/zu lösen. Der Patch kann zum Beispiel dazu dienen, Sicherheitslücken zu beheben, einen Programmierfehler zu korrigieren, bestehende Funktionen zu verbessern oder das Softwareverhalten des Computerprogramms zu ändern. Patches können auf einen Hypervisor, ein Betriebssystem, Middleware und verschiedene andere Computersoftwareanwendungen angewendet werden.
  • Bei einem Aspekt kann ein Arbeitsablauf entweder statisch (d.h. während der Arbeitsablauf nicht aktiv ist) oder dynamisch mit einer Operation für maschinelles Lernen (z.B. künstliche Intelligenz) geändert werden. Eine Operation für maschinelles Lernen kann eingesetzt werden, um zu lernen, einen extrahierten Patch statisch oder dynamisch von einem Quellarbeitsablauf in einen Zielarbeitsablauf zu ändern. Der Zielarbeitsablauf kann mithilfe der Operation für maschinelles Lernen identifiziert werden.
  • Bei einem weiteren Aspekt ermöglichen es Mechanismen der dargestellten Ausführungsformen, leistungsfähige Patches aus Quellarbeitsabläufen zu extrahieren und diese extrahierten Patches über statisches Patchen oder dynamisches Patchen anzuwenden. Das dynamische Patchen kann auf den Zielarbeitsablauf angewendet werden, ohne dass beim Durchführen des dynamischen Patchens ein aktiver Zielarbeitsablauf angehalten und/oder neu gestartet werden muss. Somit verringert ein Bereitstellen des statischen oder dynamischen Patchens von Arbeitsabläufen von einem Quellarbeitsablauf zu einem Zielarbeitsablauf Zeit (z.B. Entwicklungszeit), Testen, Fehlersuche, Nutzen einer HPC- und Cloud-Infrastruktur und/oder die „Markteinführungszeit“ für Forschung/Produkte, die während ihres Produktionszyklus Arbeitsabläufe verwenden. Diese Verbesserungen können auch die Kosten für Forschung und Entwicklung senken.
  • Wie hier verwendet, kann es sich bei einem Arbeitsablauf um einen gerichteten azyklischen Graphen handeln. Bei Knoten des Graphen kann es sich um Anwendungen/Dienste handeln, und Kanten des Graphen können eine oder mehrere Abhängigkeiten zwischen den Knoten anzeigen. Bei einer Aufgabe (z.B. eine Aufgabe des Arbeitsablaufs) kann es sich um das Ausführen einer Anwendung/eines Dienstes handeln. Bei einem Arbeitsablauf-Orchestrator/Verwalter kann es sich um ein Regelwerk handeln, das die Konfiguration eines Arbeitsablaufs und seiner Knoten interpretiert, um Knoten des Graphen zu erzeugen, zu verwalten und zu überwachen.
  • Ein Planer (z.B. ein Arbeitsablaufplaner) kann Anweisungen vom Arbeitsablauf-Orchestrator/Verwalter empfangen und das Planen, Verwalten und Überwachen von Aufgaben verarbeiten, abwickeln und/oder orchestrieren. Bei einer Konfiguration eines Knotens oder „Knotenkonfiguration“ kann es sich um Informationen handeln, die das Verhalten eines Knotens und der Knotenaufgabe(n) definieren, darunter, ohne auf diese beschränkt zu sein, ausführbare Aufgaben, Argumente für die ausführbaren Aufgaben, ein Container-Image, Umgebungsvariablen, Dateiabhängigkeiten, Eingabeabhängigkeiten in Bezug auf andere Knoten, Backend-Optionen (d.h. Warteschlange, Cluster-Selektoren usw.), Metadaten zum Verbessern des Planens und/oder der Fehlererkennung und -korrektur usw.
  • Bei einem weiteren Aspekt stellt die vorliegende Erfindung außerdem automatisches Verbinden der Eingaben von eingefügten Knoten mit den Ausgaben von Knoten im Zielarbeitsablauf bereit. Es können ein oder mehrere Konflikte zwischen der Konfiguration des Zielknotens, der den eingefügten Knoten Eingaben bereitstellt, und der erwarteten Konfiguration der Eingabeknoten für die eingefügten Knoten erkannt und gelöst werden. Die Mechanismen der veranschaulichten Ausführungsformen berücksichtigen weiterhin verschiedene Konzepte externer Abhängigkeiten des Arbeitsablaufs (z.B. Dateien, die im Dateisystem vorhanden sein sollten, Dateien, die dem Arbeitsablauf zum Zeitpunkt seiner Ausführung bereitgestellt werden, usw.). Das hier beschriebene dynamische Patchen erfordert auch nicht, dass zusätzlicher Software-/Anwendungscode für die Patch-Operation implementiert werden muss, und das dynamische Patchen erfordert auch nicht, dass ein aktiver Arbeitsablauf angehalten und neu gestartet werden muss, damit die Patch-Operation durchgeführt werden kann. Das dynamische Patchen unterstützt und ermöglicht auf diese Weise das Entfernen bestehender Knoten aus dem aktiven Zielarbeitsablauf und unterstützt und ermöglicht das Ändern von aktiven Knoten im aktiven Zielarbeitsablauf. Somit kann das dynamische Patchen Arbeitsabläufe dynamisch ändern, indem es a) neue Knoten hinzufügt, b) bestehende Knoten ändert, c) bestehende Knoten entfernt, ohne dass aktive Zielarbeitslasten gestartet, angehalten oder neu gestartet werden müssen.
  • Bei einem weiteren Aspekt stellt das statische oder dynamische Patchen von Arbeitsabläufen sicher, dass der resultierende Arbeitsablauf als ein völlig neuer Arbeitsablauf betrachtet werden kann, der Artefakte/Knoten wiederverwenden kann. Dadurch kann das statische oder dynamische Patchen von Arbeitsabläufen mit größerer Unabhängigkeit operieren und umfangreichere Änderungen am Zielarbeitsablauf durchführen. Beim statischen oder dynamischen Patchen von Arbeitsabläufen können neue Knoten in einem beliebigen Unterarbeitsablauf hinzugefügt werden, wodurch ihre Eingaben automatisch den bestehenden Knoten im Zielarbeitsablauf zugeordnet werden, beliebige Knoten des Zielarbeitsablaufs entfernt werden und/oder die Signatur/Struktur und Funktion des gesamten Zielarbeitsablaufs geändert werden usw.
  • Das statische oder dynamische Patchen von Arbeitsabläufen kann auch auf der Grundlage des folgenden Satzes von Regeln und Definitionen erfolgen. Ein „Backend“ führt einen Prozess oder einen Dienst unter Verwendung einer physischen/virtuellen Hardware aus. Bei einem Backend kann es sich beispielsweise um OpenShift, Kubernetes, eine Cloud/Hybrid-Cloud, eine Lastverteilungseinrichtung (load sharing facility - „LSF“) usw. handeln. Bei einer Aufgabe kann es sich um einen Prozess oder ein Dienst handeln, der in einem Backend ausgeführt wird. Ein Arbeitsablaufknoten kann Informationen umfassen, die ein Backend zum Ausführen von Aufgaben verwendet. Ein Arbeitsablaufverwalter orchestriert die Ausführung eines Arbeitsablaufs und delegiert die Planungsentscheidungen für einzelne Aufgaben von Arbeitsablaufknoten an einen Planer. Ein Planer versteht die Abhängigkeiten zwischen Knoten des Arbeitsablaufs. Der Planer ermittelt, wann ein Knoten zum Ausführen bereit ist, und entscheidet, wann die Aufgabe(n) für ihn in einem Backend ausgeführt werden soll(en). Online-Patchen oder dynamisches Patchen kann sich auf den Prozess des Änderns eines Arbeitsablaufs beziehen, während dieser aktiv ist (d.h., mindestens einer der Knoten ist entweder zum Ausführen bereit oder führt aktiv eine Aufgabe in einem Backend aus). Durch das Patchen können dem Arbeitsablaufgraphen neue Knoten hinzugefügt, bestehende Knoten im Arbeitsablauf geändert oder bestehende Knoten im Arbeitsablauf gelöscht werden. Bei bestehenden Knoten, die geändert werden, werden die Änderungen nur von Aufgaben berücksichtigt, die in der Zukunft ausgeführt werden (d.h., nachdem die Patch-Anwendung beendet wurde).
  • Die vorliegende Offenbarung enthält zwar eine ausführliche Beschreibung von Cloud-Computing, es versteht sich jedoch von vornherein, dass die Implementierung der hier dargelegten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit beliebigen Arten von jetzt bekannter oder später entwickelter Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud-Computing ist ein Modell zum Liefern eines Dienstes, der einen problemlosen, bedarfsorientierten Netzwerkzugang zu einem gemeinsamen Pool an konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Speicher, Anwendungen, virtuelle Maschinen und Dienste) ermöglicht, die rasch bereitgestellt und mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter eines Dienstes freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Implementierungsmodelle enthalten.
  • Bei den Eigenschaften handelt es sich um die Folgenden:
    • On-Demand Self-Service (bedarfsorientierte Selbstbedienung): Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher bereitstellen, ohne dass eine menschliche Interaktion mit dem Anbieter der Dienste erforderlich ist.
    • Broad Network Access (breiter Netzzugriff): Über ein Netzwerk sind Funktionen verfügbar, auf die durch Standardmechanismen zugegriffen wird, die die Verwendung durch heterogene schlanke oder leistungsintensive Client-Plattformen unterstützen (z.B. Mobiltelefone, Laptops und PDAs).
    • Ressource Pooling (Ressourcen-Bündelung): Die Datenverarbeitungsressourcen des Anbieters werden gebündelt, um mehreren Nutzern unter Verwendung eines Mehrmietermodells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
    • Rapid Elasticity (schnelle Anpassungsfähigkeit): Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden.
    • Measured Service (messbarer Dienst): Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, kontrolliert und protokolliert werden, wodurch Transparenz für den Anbieter und den Kunden des genutzten Dienstes bereitgestellt wird.
  • Es gibt folgende Dienstmodelle:
    • Software as a Service (Saas) (Software als Dienst): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur laufenden Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine schlanke Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende eMail) von verschiedenen Client-Einheiten aus zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Einstellungen der Anwendungskonfiguration.
    • Platform as a Service (Paas) (Plattform als Dienst): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Werkzeugen erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen der Hosting-Umgebung der Anwendung.
    • Infrastructure as a Service (laas) (Infrastruktur als Dienst): Die dem Nutzer bereitgestellte Funktion besteht darin, Verarbeiten, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Es gibt folgende Einsatzmodelle:
    • Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
    • Community Cloud (Benutzergemeinschafts-Cloud): Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Anliegen hat (z.B. Aufgabe, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder fremden Räumen befinden.
    • Public Cloud (öffentliche Cloud): Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Branchengruppe zur Verfügung gestellt und gehört einer Organisation, die Cloud-Dienste verkauft.
    • Hybrid Cloud (hybride Cloud): Die Cloud-Infrastruktur besteht aus zwei oder mehr Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Entitäten bleiben, aber durch eine standardisierte oder herstellereigene Technologie miteinander verbunden sind, die eine Übertragbarkeit von Daten und Anwendungen ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastenausgleich zwischen Clouds).
    • Eine Cloud-Computing-Umgebung ist dienstorientiert und schwerpunktmäßig auf Statusunabhängigkeit, geringe Kopplung, Modularität und semantische Interoperabilität ausgerichtet. Der Kern der Cloud-Datenverarbeitung ist eine Infrastruktur, die ein Netzwerk aus miteinander verbundenen Knoten aufweist.
  • Mit Bezug nunmehr auf 1 ist ein Schema eines Beispiels eines Cloud-Computing-Knotens dargestellt. Der Cloud-Computing-Knoten 10 ist nur ein Beispiel eines geeigneten Cloud-Computing-Knotens und soll keine Beschränkung des Anwendungsbereichs der Nutzung oder Funktionalität von Ausführungsformen der hier beschriebenen Erfindung nahelegen. Ungeachtet dessen kann der Cloud-Computing-Knoten 10 implementiert werden und/oder eine beliebige der vorstehend dargelegten Funktionalitäten durchführen.
  • Im Cloud-Computing-Knoten 10 gibt es ein Computersystem/einen Server 12, der mit zahlreichen anderen universellen oder speziellen Datenverarbeitungssystem-Umgebungen oder -Konfigurationen funktionsfähig ist. Zu Beispielen für bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für die Nutzung mit dem Computersystem/Server 12 geeignet sein können, gehören, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme, Server-Computer-Systeme, schlanke Clients, leistungsintensive Clients, Hand- oder Laptop-Einheiten, Mehrprozessorsysteme, Systeme auf der Grundlage von Mikroprozessoren, Beistellgeräte, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, die jedes beliebige der vorstehend genannten Systeme oder Einheiten und Ähnliches enthalten.
  • Das Computersystem/der Server 12 kann im allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen beschrieben werden, z.B. Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen implementieren. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen eingesetzt werden, wo die Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokalen als auch auf entfernt angeordneten Computersystem-Speichermedien befinden, darunter Speichereinheiten mit Arbeitsspeichern.
  • Wie in 1 gezeigt, wird das Computersystem/der Server 12 im Cloud-Computing-Knoten 10 in Form einer universellen Datenverarbeitungseinheit dargestellt. Bei den Komponenten des Computersystems/Servers 12 kann es sich - ohne auf diese beschränkt zu sein - um einen oder mehrere Prozessoren oder Verarbeitungseinheiten 16, einen Systemspeicher 28 und einen Bus 18 handeln, der verschiedene Systemkomponenten, darunter den Systemspeicher 28, mit dem Prozessor 16 verbindet.
  • Der Bus 18 stellt einen oder mehrere von beliebigen mehreren Arten von Busstrukturen dar, darunter einen Speicherbus oder eine Speichersteuereinheit, einen Peripheriebus, eine AGP-Schnittstelle (Accelerated Graphics Port) und einen Prozessor oder lokalen Bus, der eine beliebige aus einer Vielfalt von Busarchitekturen nutzt. Beispielsweise und nicht einschränkend enthalten solche Architekturen einen Industry-Standard-Architecture(ISA)-Bus, einen Micro-Channel-Architecture(MCA)-Bus, einen Enhanced-ISA(EISA)-Bus, einen lokalen Video-Electronics-Standards-Association(VESA)-Bus und einen Peripheral-Component-Interconnects(PCI)-Bus.
  • Das Computersystem/der Server 12 umfasst in der Regel eine Vielfalt von durch einen Computer lesbaren Medien. Bei diesen Medien kann es sich um beliebige verfügbare Medien handeln, auf die das Computersystem/der Server 12 zugreifen kann, darunter flüchtige und nichtflüchtige Medien, wechselbare und nichtwechselbare Medien.
  • Der Systemspeicher 28 kann vom Computersystem lesbare Medien in Form von flüchtigen Speichern, z.B. Direktzugriffsspeicher (RAM) 30 und/oder Cache 32, enthalten. Das Computersystem/der Server 12 kann ferner weitere wechselbare/nichtwechselbare, flüchtige/nichtflüchtige Computersystem-Speichermedien enthalten. Nur beispielhaft kann das Speichersystem 34 bereitgestellt werden, um ein nichtwechselbares, nichtflüchtiges magnetisches Medium auszulesen und zu beschreiben (nicht dargestellt und üblicherweise als „Festplatte“ bezeichnet). Obwohl nicht dargestellt, können ein Laufwerk für magnetische Speicherplatten zum Auslesen und Beschreiben einer wechselbaren, nichtflüchtigen magnetischen Speicherplatte (z.B. „Diskette“) und ein Laufwerk für optische Speicherplatten zum Auslesen oder Beschreiben einer wechselbaren, nichtflüchtigen optischen Speicherplatte wie einer CD-ROM, DVD-ROM und andere optische Medien bereitgestellt werden. In solchen Fällen kann jedes über eine oder mehrere Datenmedien-Schnittstellen mit dem Bus 18 verbunden sein. Wie nachstehend weiter dargestellt und beschrieben, kann der Systemspeicher 28 mindestens ein Programmprodukt mit einem (z.B. mindestens einem) Satz von Programmmodulen enthalten, die so konfiguriert sind, dass sie die Funktionen der Ausführungsformen der Erfindung ausführen.
  • Das Programm/Dienstprogramm 40 mit (mindestens) einem Satz von Programmmodulen 42 kann beispielsweise und nicht einschränkend im Systemspeicher 28 gespeichert sein, ebenso ein Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Implementierung einer Netzwerkumgebung enthalten. Die Programmmodule 42 führen im Allgemeinen die Funktionen und/oder Methodiken von Ausführungsformen der hier beschriebenen Erfindung aus.
  • Das Computersystem/der Server 12 kann auch mit einer oder mehreren externen Einheiten 14, z.B. mit einer Tastatur, einer Zeigeeinheit, einer Anzeige 24 usw., Daten austauschen; sowie mit einer oder mehreren Einheiten, die einen Benutzer in die Lage versetzen, mit dem Computersystem/Server 12 zu interagieren; und/oder beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die das Computersystem/den Server 12 in die Lage versetzen, mit einer oder mehreren Datenverarbeitungseinheiten Daten auszutauschen. Eine solche Datenübertragung kann über die Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 22 erfolgen. Überdies kann das Computersystem/der Server 12 mit einem oder mehreren Netzwerken, z.B. mit einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. das Internet), über den Netzwerkadapter 20 Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter 20 über den Bus 18 mit den anderen Komponenten des Computersystems/Servers 12 Daten aus. Es versteht sich, dass sonstige Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden können, auch wenn sie nicht dargestellt sind. Zu Beispielen gehören, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, Anordnungen externer Festplattenlaufwerke, RAID-Systeme, Bandlaufwerke und Speichersysteme für die Datenarchivierung usw.
  • Mit Bezug nunmehr auf 2 ist eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt, weist die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10 auf, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie der persönliche digitale Assistent (PDA) oder das Mobiltelefon 54A, der Desktop-Computer 54B, der Laptop-Computer 54C und/oder das Kraftfahrzeug-Computersystem 54N Daten austauschen können. Die Knoten 10 können miteinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken wie private, benutzergemeinschaftliche, öffentliche oder hybride Clouds wie oben beschrieben oder in einer Kombination davon in Gruppen angeordnet sein (nicht dargestellt). Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es ist ersichtlich, dass die Arten von Datenverarbeitungseinheiten 54A bis N, die in 2 dargestellt sind, nur veranschaulichend sein sollen und die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 mit jeder Art von computergestützter Einheit über jede Art von Netzwerk und/oder netzwerkadressierbarer Verbindung Daten austauschen kann (z.B. über einen Web-Browser).
  • Mit Bezug auf 3 nunmehr ist ein Satz funktionaler Abstraktionsschichten dargestellt, die von der Cloud-Computing-Umgebung 50 (2) bereitgestellt werden. Es versteht sich von vornherein, dass die in 3 dargestellten Komponenten, Schichten und Funktionen nur veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Die Einheitenschicht 55 umfasst physische und/oder virtuelle Einheiten, bei denen es sich um eigenständige Elektronik, Sensoren, Aktuatoren und andere Objekte handelt und/oder die in diese integriert sind, um verschiedene Aufgaben in einer Cloud-Computing-Umgebung 50 durchzuführen. Jede der Einheiten in der Einheitenschicht 55 ist mit anderen funktionalen Abstraktionsschichten vernetzbar, sodass von den Einheiten abgerufene Informationen diesen bereitgestellt werden können und/oder Informationen von den anderen Abstraktionsschichten den Einheiten bereitgestellt werden können. In einer Ausführungsform können die verschiedenen Einheiten, darunter die Einheitenschicht 55, ein Netzwerk von Entitäten umfassen, die allgemein als das „Internet der Dinge“ (internet of things - loT) bekannt sind. Ein solches Netzwerk von Entitäten ermöglicht Datenübertragung untereinander sowie Sammeln und Verbreiten von Daten für eine große Vielfalt von Zwecken, wie der Fachmann weiß.
  • Die dargestellte Einheitenschicht 55 umfasst wie gezeigt den Sensor 52, den Aktuator 53, den „lernenden“ Thermostat 56 mit integrierter Verarbeitungs-, Sensor- und Vernetzungselektronik, die Kamera 57, die steuerbare Haushaltssteckdose 58 und den steuerbaren elektrischen Schalter 59. Zu anderen möglichen Einheiten gehören, ohne auf diese beschränkt zu sein, verschiedene zusätzliche Sensoreinheiten, Netzwerkeinheiten, elektronische Einheiten (z.B. eine Fernbedienungseinheit), zusätzliche Aktuatoreinheiten, sogenannte „intelligente“ Geräte wie ein Kühlschrank oder eine Waschmaschine/ein Trockner und eine große Vielfalt anderer möglicher miteinander verbundener Objekte.
  • Die Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören: die Großrechner 61; die Server 62 auf Grundlage der RISC-Architektur (RISC = Reduced Instruction Set Computer, Computer mit reduziertem Befehlssatz), die Server 63; die Blade-Server 64; die Speichereinheiten 65; sowie die Netzwerke und Netzwerkkomponenten 66. In einigen Ausführungsformen enthalten die Software-Komponenten die Netzwerkanwendungs-Serversoftware 67 und die Datenbank-Software 68.
  • Die Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Entitäten bereitgestellt werden können: virtuelle Server 71; virtuelle Speicher 72; virtuelle Netzwerke 73; darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann die Verwaltungsschicht 80 die nachfolgend beschriebenen Funktionen bereitstellen. Die Ressourcenbereitstellung 81 ermöglicht eine dynamische Bereitstellung von Datenverarbeitungsressourcen und anderen Ressourcen, die verwendet werden, um Aufgaben in der Cloud-Computing-Umgebung durchzuführen. Messen und Preisfindung 82 stellen Kostenverfolgung beim Verwenden von Ressourcen in der Cloud-Computing-Umgebung sowie Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungs-Software aufweisen. Die Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt Nutzern und Systemadministratoren den Zugang zur Cloud-Computing-Umgebung bereit. Die Verwaltung der Dienstgüte 84 stellt Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, sodass die erforderliche Dienstgüte erreicht wird. Die Planung und Erfüllung der Dienstgütevereinbarung (Service Level Agreement, SLA) 85 stellt eine Vorabeinteilung und eine Beschaffung von Cloud-Computing-Ressourcen bereit, deren künftiger Bedarf auf der Grundlage einer Dienstgütevereinbarung vorausgesehen wird.
  • Die Arbeitslastschicht 90 stellt Beispiele für Funktionalitäten bereit, für die die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 91; Softwareentwicklung und Lebenszyklusverwaltung 92; Bereitstellung von Ausbildung in virtuellen Klassenzimmern 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95 und im Zusammenhang mit den dargestellten Ausführungsformen der vorliegenden Erfindung verschiedene Arbeitslasten und Funktionen 96 zum statischen oder dynamischen Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung (z.B. in einer Architektur eines neuronalen Netzwerks). Darüber hinaus können Arbeitslasten und Funktionen 96 zum statischen oder dynamischen Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung Operationen wie Analytik, tiefes Lernen und wie weiter unten beschrieben Benutzer- und Einheitenverwaltungsfunktionen umfassen. Der Fachmann weiß, dass die Arbeitslasten und Funktionen 96 zum statischen oder dynamischen Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung auch mit anderen Teilen der verschiedenen Abstraktionsschichten zusammenwirken können, z.B. mit denen der Hardware- und Software 60, der Virtualisierung 70, der Verwaltung 80 und anderen Arbeitslasten 90 (z.B. der Datenanalyseverarbeitung 94), um die verschiedenen Zwecke der dargestellten Ausführungsformen der vorliegenden Erfindung zu erfüllen.
  • Wie bereits erwähnt, stellt die vorliegende Erfindung neue Lösungen zum Bereitstellen von statischem oder dynamischem Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung in einem Datenverarbeitungssystem bereit. Ein oder mehrere Patches können aus einem Quellarbeitsablauf extrahiert werden. Der Zielarbeitsablauf in einer Mehrzahl von Knoten kann statisch oder dynamisch geändert werden, indem der eine oder mehrere Patches auf den Zielarbeitsablauf angewendet werden. Der eine oder mehrere der Mehrzahl von Knoten können im Zielarbeitsablauf hinzugefügt, entfernt oder geändert werden, während der Zielarbeitsablauf als Reaktion auf das Anwenden des einen oder mehrerer Patches aktiv ist.
  • Mit Bezug nunmehr auf 4 ist ein Blockschaubild dargestellt, das beispielhafte funktionale Komponenten des Systems 400 zum statischen oder dynamischen Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung (z.B. in einer Architektur eines neuronalen Netzwerks) gemäß verschiedenen Mechanismen der dargestellten Ausführungsformen zeigt. Bei einem Aspekt können eine oder mehrere der in den 1 bis 3 beschriebenen Komponenten, Module, Dienste, Anwendungen und/oder Funktionen in 4 verwendet werden. Wie ersichtlich, können viele der funktionalen Blöcke auch als „Module“ oder „Komponenten“ der Funktionalität betrachtet werden, in demselben beschreibenden Sinne, wie er zuvor in den 1 bis 3 beschrieben wurde.
  • Gezeigt wird ein Arbeitsablauf-Patch-Dienst 410 mit einer Verarbeitungseinheit 420 („Prozessor“) zum Durchführen verschiedener Berechnungs-, Datenverarbeitungs- und anderer Funktionen gemäß verschiedenen Aspekten der vorliegenden Erfindung. Bei einem Aspekt können sich der Prozessor 420 und der Speicher 430 in dem Arbeitsablauf-Patch-Dienst 410 und/oder außerhalb davon befinden und sich in dem Datenverarbeitungssystem/Datenverarbeitungsserver 12 und/oder außerhalb davon befinden. Der Arbeitsablauf-Patch-Dienst 410 kann sich wie in 1 beschrieben in dem Datenverarbeitungssystem/Datenverarbeitungsserver 12 und/oder außerhalb davon befinden. Die Verarbeitungseinheit 420 kann mit dem Speicher 430 Daten austauschen. Der Arbeitsablauf-Patch-Dienst 410 kann eine Verwaltungskomponente 440 (z.B. einen Orchestrator), eine Konfigurationskomponente 450, eine Planungskomponente 460 und eine Knotenkomponente 470 umfassen.
  • Bei einem Aspekt kann das System 400 virtualisierte Datenverarbeitungsdienste bereitstellen (d.h. virtualisiertes Verarbeiten von Daten, virtualisiertes Speichern, virtualisiertes Vernetzen usw.). Insbesondere kann das System 400 virtualisiertes Verarbeiten von Daten, virtualisiertes Speichern, virtualisiertes Vernetzen und andere virtualisierte Dienste bereitstellen, die auf einem Hardwaresubstrat ausgeführt werden.
  • Bei einem Aspekt kann die Verwaltungskomponente 440 in Verbindung mit der Knotenkomponente 470 einen oder mehrere Quellarbeitsabläufe (z.B. einen Quellarbeitsablauf mit einer oder mehreren Aufgaben) in einem Knoten oder einer Gruppe von Knoten identifizieren. Die Verwaltungskomponente 440 kann den einen oder mehrere Patches aus dem Quellarbeitsablauf extrahieren. Die Verwaltungskomponente 440 kann einen oder mehrere aus einem Quellarbeitsablauf extrahierte Patches auf einen Zielarbeitsablauf in einer Mehrzahl von Knoten anwenden. Das heißt, die Verwaltungskomponente 440 kann den einen oder mehrere Patches dynamisch oder statisch auf den Zielarbeitsablauf anwenden.
  • Die Verwaltungskomponente 440 kann in Verbindung mit der Knotenkomponente 470 einen oder mehrere Verbindungspunkte identifizieren, um den einen oder mehrere Patches anzuwenden. Bei einem Verbindungspunkt kann es sich um einen Knoten im Zielarbeitsablauf handeln, der einem Knoten, der in dem einen oder mehreren Patches identifiziert wird, eine Eingabe bereitstellt.
  • Die Verwaltungskomponente 440 kann in Verbindung mit der Konfigurationskomponente 450 einen oder mehrere der Mehrzahl von Knoten im Zielarbeitsablauf hinzufügen, entfernen oder ändern, während der Zielarbeitsablauf als Reaktion auf das Anwenden des einen oder mehrerer Patches aktiv ist.
  • Die Verwaltungskomponente 440 kann in Verbindung mit der Planungskomponente 460 jede Aufgabe des Arbeitsablaufs in einem Knoten oder einer Gruppe von Knoten planen. Die Verwaltungskomponente 440 kann in Verbindung mit der Planungskomponente 460 jegliche Planung für zusätzliche Knoten auf die Mehrzahl der Knoten beschränken, während sie den einen oder mehrere Patches anwendet.
  • Die Verwaltungskomponente 440 kann in Verbindung mit der Konfigurationskomponente 450 und/oder der Knotenkomponente 470 Konflikte zwischen Metadaten, die in dem einen oder mehreren Patches definiert sind, und denjenigen der Mehrzahl von Knoten im Zielarbeitsablauf identifizieren. Die Verwaltungskomponente 440 kann in Verbindung mit der Konfigurationskomponente 450 und/oder der Knotenkomponente 470 auch eine oder mehrere Lösungsaktionen erzeugen, um alle identifizierten Konflikte zu lösen, damit der eine oder mehrere Patches mit dem Zielarbeitsablauf kompatibel sind.
  • Die Verwaltungskomponente 440 kann in Verbindung mit der Konfigurationskomponente 450 und/oder der Knotenkomponente 470 die Mehrzahl von Knoten initialisieren, die in dem einen oder mehreren Patches enthalten sind, die in den Zielarbeitsablauf einbezogen werden sollen. Bei einem Aspekt handelt es sich bei dem Zielarbeitsablauf um einen aktiven Arbeitsablauf. Die Verwaltungskomponente 440 kann in Verbindung mit der Planungskomponente 460 und/oder der Knotenkomponente 470 einen Knoten oder eine Gruppe von Knoten planen, die im Zielarbeitsablauf aktiv sind, dem ein oder mehrere Patches zugehörig sind.
  • Im Betrieb können beispielsweise die folgenden Schritte mithilfe des Arbeitsablauf-Patch-Dienstes 410 und einer oder mehrerer Komponenten des Arbeitsablauf-Patch-Dienstes 410 wie in 4 beschrieben durchgeführt werden. In Schritt 1) kann der Arbeitsablauf-Patch-Dienst 410 einen Patch aus dem Quellarbeitsablauf extrahieren. In Schritt 2) kann der Arbeitsablauf-Patch-Dienst 410 (über die Verwaltungskomponente 440 (z.B. ein Orchestrator)) die Planungskomponente 460 anweisen, keine neuen Knoten zu planen. In Schritt 3) kann der Arbeitsablauf-Patch-Dienst 410 alle „zu löschenden“ Knoten (z.B. Knoten, die aus dem Arbeitsablauf gelöscht werden müssen) und alle nachgeordneten Knoten, die den „zu löschenden Knoten“ zugehörig sind, aus dem Zielarbeitsablauf entfernen. In Schritt 4) kann der Arbeitsablauf-Patch-Dienst 410 einen oder mehrere Verbindungspunkte in einem Zielarbeitsablauf identifizieren (z.B. Knoten des Zielarbeitsablaufs, die Eingaben für im Patch definierte Knoten bereitstellen). In Schritt 5) kann der Arbeitsablauf-Patch-Dienst 410 Konflikte zwischen Metadaten, die im extrahierten Patch definiert sind, und den Knoten im Zielarbeitsablauf identifizieren (da Konflikte, die unbearbeitet bleiben, die Anwendung des Patches verhindern). In Schritt 6) kann der Arbeitsablauf-Patch-Dienst 410 Konflikte lösen (z.B. Aktionen erzeugen, die dafür sorgen, dass der Patch mit dem Zielarbeitsablauf kompatibel ist). In Schritt 7) kann der Arbeitsablauf-Patch-Dienst 410 Knoten initialisieren, die im Patch, aber nicht im aktiven Arbeitsablauf vorhanden sind. In Schritt 8) kann der Arbeitsablauf-Patch-Dienst 410 die Konfiguration von Knoten im Zielarbeitsablauf ändern, die mit dem Patch in Konflikt stehen. In Schritt 9) kann der Arbeitsablauf-Patch-Dienst 410 (über die Verwaltungskomponente 440 (z.B. ein Orchestrator)) die Planungskomponente 460 anweisen, Knoten zu planen, die zum Ausführen bereit sind.
  • Es sei darauf hingewiesen, dass beim dynamischen Patchen jeder der oben beschriebenen Schritte ausgeführt werden kann, während der statische Patch-Algorithmus nur die Schritte 1, 3, 4, 5, 6, 7 und 8 umfassen kann (in dieser Reihenfolge oder in einer anderen ausgewählten/angeordneten Reihenfolge der Schritte 1, 3, 4, 5, 6, 7 und 8). Es sei auch darauf hingewiesen, dass es sich in einer Ausführungsform bei einem Quellarbeitsablauf und einem Zielarbeitsablauf um denselben Arbeitsablauf handeln kann. In einer anderen Ausführungsform kann es sich jedoch bei dem Quellarbeitsablauf und dem Zielarbeitsablauf um unterschiedliche Arbeitsabläufe handeln.
  • Mit Bezug nunmehr auf die 5A bis 5E stellen die Blockschaubilder 500, 515, 525, 535 und 545 weitere beispielhafte Systeme und Funktionen zum statischen oder dynamischen Patchen von Arbeitsabläufen aus den vorstehenden Schritten 1 bis 9 dar, die ausführlich beschrieben werden. Bei einem Aspekt können eine oder mehrere der in den 1 bis 3 beschriebenen Komponenten, Module, Dienste, Anwendungen und/oder Funktionen in 4 verwendet werden. Wie ersichtlich, können viele der funktionalen Blöcke auch als „Module“ oder „Komponenten“ oder „Knoten“ der Funktionalität betrachtet werden, in demselben beschreibenden Sinne, wie er zuvor in den 1 bis 3 beschrieben wurde.
  • Mit Bezug nunmehr auf die 5A und 5B stellen die Arbeitsdarstellungen 500 einen beispielhaften Quellarbeitsablauf dar, der die Schritte 1) zum Extrahieren eines Patches aus dem Quellarbeitsablauf 500 beschreibt.
  • Erstens kann ein Quellarbeitsablauf mit einem oder mehreren Knoten, z.B. Knoten 502A bis G und Knoten 504A bis C, identifiziert werden.
  • Zweitens ist ein Untergraph des Arbeitsablaufs zum Extrahieren vorhanden, z.B. der Untergraph mit den Knoten 502A bis G, der die Knoten (z.B. die Knoten 502A bis G) auswählt, die in dem Untergraph vorhanden sind, der die Komponentensätze „A“ und „B“ verbindet, wobei die Ausgaben von A (schließlich) von B genutzt werden (er umfasst die Sätze A und B). Außerdem können diejenigen Knoten, die nicht extrahiert und in den Patch einbezogen werden sollen, identifiziert und gekennzeichnet werden, z.B. die Knoten 504A bis C.
  • Drittens kann Schritt 1) auch Identifizieren eines oder mehrerer Eingabeknoten (I) umfassen, z.B. Knoten 502A für den Untergraphen des Quellarbeitsablaufs 500.
  • Viertens können die Untergraphenabhängigkeiten in interne Abhängigkeiten 512 und externe Abhängigkeiten 510 (z.B. Metadaten für externe Abhängigkeiten) unterteilt werden. Das heißt, bei den internen Abhängigkeiten 512 kann es sich um Verweise auf Daten/Dateien/Binärprogramme handeln, die im Paket des Quellarbeitsablaufs enthalten sind. Bei den externen Abhängigkeiten 510 kann es sich um Verweise auf Daten, Dateien oder Binärprogramme handeln, die nicht Teil des Pakets des Quellarbeitsablaufs sind (z.B. absolute Pfade zum Dateisystem der Ausführungsplattform oder Verweise auf Eingabedaten, die zum Ausführungszeitpunkt bereitgestellt werden).
  • Fünftens können ein oder mehrere Elemente des Arbeitsablaufs (z.B. eine Komponentenkonfiguration, Definitionen von Umgebungsvariablen, Knotenvariablen usw.) des Untergraphen identifiziert werden. Sechstens können die gesammelten Informationen in einen Satz von Dateien umgewandelt werden, die Folgendes enthalten: a) Knotendefinitionen des Untergraphen und Metadaten, die Abhängigkeiten in Bezug auf Erzeugerknoten des Untergraphen darstellen, und b) eine Knotendefinition der Eingabe an die Knoten des Untergraphen und c) Abhängigkeiten innerhalb des Quellarbeitsablaufs (z.B. Binärprogramme, Datendateien).
  • Es sei darauf hingewiesen, dass Schritt 2), in dem die Planungskomponente 460 angewiesen wird, keine neuen Knoten zu planen, eingeschränkt oder ausschließlich für die Patch-Operation (online/dynamisch) verwendet werden kann. So können Operationen zum Durchführen von Schritt 2), in dem die Planungskomponente 460 angewiesen wird, keinen neuen Knoten zu planen, die folgenden Operationen umfassen.
  • Zunächst kann ein Orchestrator/Verwalter (z.B. die Verwaltungskomponente 440 in 4) eines Zielarbeitsablaufs einen Planer (z.B. die Planungskomponente 460 in 5) informieren, dass ein Patch angewendet wird. Der Planer reagiert wie folgt: a) Aufschieben eines Kennzeichnens, Markierens oder Identifizierens von Knoten als „bereit“, sobald die Eingabeabhängigkeiten des Knotens zu vorgelagerten Knoten erfüllt sind (d.h., bestehende aktive Knoten und zugehörige Aufgaben werden in keiner Weise beeinträchtigt), b) Aufschieben des Verarbeitens von Planungsereignissen von fertigen Knoten, bis der Patch abgeschlossen ist.
  • Aufgaben für neue Knoten werden nicht zur Ausführung geplant, während der Patch durchgeführt wird, auch wenn ihre Abhängigkeiten erfüllt sind, um sicherzustellen, dass sich die „Konfiguration der Aufgaben“ nicht ändert, während die Aufgaben zur Ausführung geplant werden. Außerdem sind Knoten, deren Aufgaben bereits zum Ausführen an ein Backend übermittelt wurden, nicht betroffen. Der Planer kann weiterhin Aufgaben für die Knoten senden, als ob kein Patch durchgeführt würde. Auf diese Weise wird der Zielarbeitsablauf nicht durch den Patch-Prozess verlangsamt.
  • Mit Bezug nunmehr auf 5C beschreibt das Blockschaubild 525 Schritt 3), in dem alle „zu löschenden“ Knoten (z.B. Knoten, die aus dem Arbeitsablauf gelöscht werden müssen) und alle nachgeordneten Knoten, die den „zu löschenden Knoten“ zugehörig sind, aus dem Zielarbeitsablauf entfernt werden.
  • Wie in 5C dargestellt, stellen Mechanismen der veranschaulichten Ausführungsformen sowohl die Möglichkeit bereit, neue Knoten zu einem Zielarbeitsablauf hinzuzufügen und bestehende zu ändern, als auch Knoten aus dem Arbeitsablaufgraphen zu entfernen. Beispielsweise kann die anfängliche Liste der „zu löschenden“ Knoten (z.B. Identifizieren, Markieren, Kennzeichnen von zu löschenden Knoten) ähnlich wie beim Definieren eines Untergraphen wie in Schritt 1) beschrieben festgelegt werden, aber anstatt auf Knoten im Quellarbeitsablauf zu verweisen, werden die Referenzknoten im Zielarbeitsablauf identifiziert. Während dieser Operation erkennt und identifiziert der Orchestrator/Verwalter alle Knoten im Zielarbeitsablauf, die Abhängigkeiten in Bezug auf die Liste der zu löschenden Knoten haben, und fügt sie der Liste der „zu löschenden“ Knoten hinzu.
  • Der Planer wird vom Orchestrator/Verwalter (z.B. Verwaltungskomponente 440 in 4) eines Zielarbeitsablaufs benachrichtigt oder informiert, dass die Aufgaben, die den Knoten zugehörig sind (z.B. die Liste der „zu löschenden“ Knoten), im Zielarbeitsablauf abgeschlossen werden, und der Planer wird benachrichtigt oder informiert, die Liste der „zu löschenden“ Knoten als normale Abschlüsse zu betrachten. Anders ausgedrückt betrachtet der Planer die Liste der „zu löschenden“ Knoten nicht als anormale Abschlüsse und Fehler. Eine Abhängigkeitsanalyse kann vom Planer durchgeführt werden, und diese ermittelt, dass die Ausgaben der anfänglichen „zu löschenden“ Knoten (z.B. Knoten, die ein Benutzer/ein System für maschinelles Lernen aus einem Zielarbeitsablauf entfernen möchte/zu entfernen beabsichtigt, wie z.B. die Knoten 502F, 5021, 502J und 502K) an die Eingaben der identifizierten Liste der „zu löschenden“ Knoten weitergeleitet werden. Der Planer wird vom Orchestrator/Verwalter (z.B. Verwaltungskomponente 440 von 4) eines Zielarbeitsablaufs benachrichtigt oder informiert, die Aufgaben, die der Liste der „zu löschenden“ Knoten zugehörig sind, wie in 5C als resultierender Zielarbeitsablauf („Ergebnis“) dargestellt abzuschließen und zu beenden, z.B. die Knoten 502A bis H.
  • Es sei darauf hingewiesen, dass es sich bei den „anfänglich zu löschenden“ Knoten um einen oder mehrere Sätze von Knoten handeln kann, die ein Benutzer und/oder Systeme für maschinelles Lernen aus dem Zielarbeitsablauf entfernen möchten. Nach Abschluss der Abhängigkeitsanalyse umfassen die „zu löschenden“ Knoten den „anfänglich zu löschenden“ Knoten und jeden anderen Knoten, der direkt/indirekt die Ausgaben der „anfänglich zu löschenden“ Knoten verwendet.
  • Beispielsweise handelt es sich bei dem „anfänglich zu löschenden“ Knoten in 5C um den Knoten 502D (z.B. ein für Löschen/Entfernen ausgewählter Knoten). Durch Anwenden einer Abhängigkeitsanalyse (d.h. Verfolgen der Ausgaben von 502D, die durch die nachgelagerten Knoten des Arbeitsablaufs laufen) wird festgestellt, dass die Knoten 502F, 5021, 502J und 502K alle direkt/indirekt von 502D abhängen. Genauer gesagt verwendet 502F die Ausgaben von 502D direkt, den Rest indirekt (d.h., der Pfad, der 502D mit jedem dieser Knoten verbindet, enthält mindestens einen weiteren Knoten).
  • Mit Bezug nunmehr auf 5D beschreibt das Blockschaubild 535 Schritt 4) zum Identifizieren eines oder mehrerer Verbindungspunkte in einem Zielarbeitsablauf (z.B. Knoten des Zielarbeitsablaufs, die Eingaben für im Patch definierte Knoten bereitstellen).
  • Bei einem Aspekt handelt es sich bei einem oder mehreren Verbindungspunkten um Knoten des Zielarbeitsablaufs. Der eine oder mehrere Verbindungspunkte können automatisch identifiziert werden, z.B. durch maschinelles Lernen. Bei einem Verbindungspunkt handelt es sich um einen Knoten, der als Eingabeknoten in Bezug auf bestehende Knoten im Patch fungiert. Das automatische Identifizieren von Verbindungspunkten kann zum Beispiel eine oder mehrere der folgenden Operationen umfassen. Zunächst kann ein Merkmalsvektor für jeden Eingabeknoten derjenigen Knoten erzeugt werden, die im Patch enthalten oder identifiziert sind (z.B. im Folgenden als „Eingaben neuer Knoten“ bezeichnet und gekennzeichnet). Bei dem Merkmalsvektor kann es sich um einen Satz von Feldern handeln, z.B.: [„Namensbereich des Knotens“, „Name des Knotens“, „ausführbar“, „Argumente“].
  • Als Nächstes können Merkmalsvektoren für alle Knoten eines Graphen eines Zielarbeitsablaufs erzeugt werden. In einer weiteren Ausführungsform können ein oder mehrere Eingabe-Merkmalsvektoren aus einem oder mehreren Wurzelknoten des Patches erzeugt und mit einem oder mehreren Ausgabe-Merkmalsvektoren im Ziel verglichen werden (z.B. Abgleichen von Domänen mit Ko-Domänen). Ein „Merkmal“ (wie es beim maschinellen Lernen verwendet wird) kann zum Beispiel als Eigenschaft einer beliebigen Entität bezeichnet werden. Bei einem „Merkmalsvektor“ kann es sich um eine Sammlung von Merkmalen handeln. Eine Operation kann ausgeführt werden, um diejenigen Knoten des Zielarbeitsablaufs zu identifizieren, zu finden und zu lokalisieren, deren Merkmalsvektor den Merkmalsvektoren der „Eingaben neuer Knoten“ mit einem höheren Ähnlichkeitsfaktor als einem ausgewählten Schwellenwert (z.B. einem Schwellenwert für die „Merkmalsvektorübereinstimmung“) ähnelt. Identifizierte übereinstimmende Paare (z.B. Knoten mit ähnlichen Merkmalsvektoren) können erfasst werden. Darüber hinaus kann ein Benutzer und/oder eine Operation für maschinelles Lernen festlegen, welche Knoten aus dem Zielarbeitsablauf als Eingaben für die im Patch enthaltenen Knoten verwendet werden sollen, indem Paare von Kennungen für Knoten des Zielarbeitsablaufs (Namensbereich und Name) und die Kennungen für die „Eingaben neuer Knoten“ bereitgestellt werden.
  • So werden wie in 5D gezeigt eine Konfiguration von Knoten (z.B. die Knoten 502Q bis W) im Patch und ihre Eingabeknoten (z.B. Knoten 502Q) identifiziert. Der Knoten 502E aus dem Zielarbeitsablauf hat beispielsweise einen übereinstimmenden Merkmalsvektor von Knoten 502Q, der im Patch enthalten ist. Der Knoten 502Q umfasst und identifiziert jede der Knotenabhängigkeiten von Knoten 502Q.
  • An dieser Stelle sei darauf hingewiesen, dass der Patch Informationen für die „Eingaben neuer Knoten“ sowie gepatchte Knoten enthält, die aus dem Quellarbeitsablauf extrahiert wurden. Wenn einer der Knoten im Patch bereits im Zielarbeitsablauf vorhanden ist, besteht die Möglichkeit, dass es einen Konflikt gibt. Es besteht auch die Möglichkeit eines Konflikts zwischen der Definition von „Eingaben neuer Knoten“ und übereinstimmenden Knoten, der in Schritt 4 erkannt wird. Bei einem Aspekt ist beispielsweise ein Konflikt ein Unterschied zwischen der Konfiguration von zwei Knoten, wobei einer der Knoten Teil des Patches und der andere Knoten Teil des Zielarbeitsablaufs ist. Daher können nach Schritt 4) die Operationen von Schritt 5 ausgeführt werden, um Konflikte zwischen Metadaten, die im extrahierten Patch definiert sind, und den Knoten im Zielarbeitsablauf zu identifizieren. Außerdem können in Schritt 5) die Knoten im Zielarbeitsablauf durchlaufen und alle Konflikte zwischen dem Zielarbeitsablauf und dem Patch erfasst werden.
  • Nach Schritt 5) wiederum kann Schritt 6) ausgeführt werden, in dem der Arbeitsablauf-Patch-Dienst 410 Konflikte lösen kann (z.B. durch Erzeugen von Aktionen, die dafür sorgen, dass der Patch mit dem Zielarbeitsablauf kompatibel ist). Dabei kann es mehrere Möglichkeiten geben, solche Konflikte zu lösen. Beispielsweise kann ein Werkzeug (z.B. ein Werkzeug für Operationen für maschinelles Lernen), das semantisches Wissen und Sprachverarbeitungstechnologien verwendet, eingesetzt werden, um zu ermitteln, wie die widersprüchlichen Konfigurationen von zwei Knoten angemessen zusammengeführt werden können. Bei einem weiteren Aspekt kann eine Operation für maschinelles Lernen verwendet werden, um alle widersprüchlichen Informationen zu überprüfen und zu ermitteln, wie der Konflikt gelöst werden kann, entweder durch: 1) Übernehmen der Konfiguration des Zielknotens, 2) Übernehmen der Konfiguration des Quellknotens oder 3) Eingeben einer neuen Konfiguration, die die beiden Knoten kombiniert. Ziel von Schritt 6 ist es daher, sicherzustellen, dass Komponenten/Knoten des Patches und bestehende Knoten des Zielarbeitsablaufs jeweils in der Lage sind, jede ihrer Aufgaben erfolgreich auszuführen.
  • Mit Bezug nunmehr auf 5E beschreibt das Blockschaubild 545 Schritt 7) zum Initialisieren von Knoten, die im Patch, aber nicht im aktiven Arbeitsablauf vorhanden sind. Beim statischen Patchen kann jeder neue Knoten in den Zielarbeitsablauf eingefügt werden. Die Operation des dynamischen Patchens stellt die Liste von Knoten bereit, die im Patch enthalten sind, aber im Zielarbeitsablauf nicht vorhanden sind. Der Orchestrator/Verwalter kann seine eigenen internen Datenstrukturen aktualisieren und initialisiert die „Eingaben neuer Knoten“ mit folgenden Schritten, ohne auf diese beschränkt zu sein: a) Initialisierung von Backend(s), b) Änderungen an Dateien im Dateisystem (z.B. Kopieren von „internen Abhängigkeiten“ aus dem Patch (siehe Schritt 1) oder weitere Informationen), c) Aktualisierungen der Metadaten des Zielarbeitsablaufs, und/oder d) Aktualisierungen der Datenstrukturen des Planers usw.
  • Nach Schritt 7 wiederum kann Schritt 8) ausgeführt werden, um die Konfiguration von Knoten im Zielarbeitsablauf zu ändern, die mit dem Patch in Konflikt stehen. In Schritt 8) kann der Orchestrator/Verwalter des Zielarbeitsablaufs die Konfiguration von Knoten ändern, die mit den im Patch enthaltenen Informationen in Konflikt stehen. Der Orchestrator/Verwalter des Zielarbeitsablaufs kann die in Schritt 6) getroffenen Entscheidungen wiederholen und überprüfen. Der Orchestrator/Verwalter kann seine internen Datenstrukturen aktualisieren und Initialisierungsschritte für jeden der folgenden im Konflikt stehenden Knoten durchführen, ohne auf diese beschränkt zu sein: a) Initialisierung von Backend(s), b) Änderungen an Dateien im Dateisystem (z.B. Kopieren von „internen Abhängigkeiten“ aus dem Patch (siehe Schritt 1) oder weitere Informationen), c) Aktualisierungen der Metadaten des Zielarbeitsablaufs, und/oder d) Aktualisierungen der Datenstrukturen des Planers usw. Mit Schritt 8) wird die Umwandlung des Zielarbeitsablaufs abgeschlossen, womit die im Patch codierten Informationen enthalten sind.
  • Auch Schritt 9), in dem die Planungskomponente 460 angewiesen wird, alle ausführungsbereiten Knoten zu planen, ist möglicherweise nur für die Operation des dynamischen Patchens gültig. In Schritt 9) kann der Orchestrator/Verwalter des Zielarbeitsablaufs dem Planer mitteilen, dass das dynamische Patchen nun abgeschlossen ist. Der Planer kann a) rückwirkend Planungsereignisse behandeln/verarbeiten, die in Schritt 2) verschoben wurden, und auch b) das Verbot/die Beschränkung der Planung von Aufgaben für Knoten entfernen/aufheben, die noch nicht zur Ausführung bereit waren, bevor der Prozess des dynamischen Patchens begann.
  • Mit Bezug nunmehr auf 6 ist ein Verfahren 600 zum Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung unter Verwendung eines Prozessors dargestellt, bei dem verschiedene Aspekte der dargestellten Ausführungsformen implementiert werden können. Die Funktion 600 kann als ein Verfahren (z.B. ein durch einen Computer implementiertes Verfahren) implementiert werden, das in Form von Anweisungen auf einer Maschine ausgeführt wird, wobei die Anweisungen auf mindestens einem durch einen Computer lesbaren Medium oder einem nichtflüchtigen maschinenlesbaren Speichermedium enthalten sind. Die Funktion 600 kann in Block 602 beginnen.
  • Ein oder mehrere aus einem Quellarbeitsablauf extrahierte Patches können wie in Block 604 dargestellt in einer Mehrzahl von Knoten auf einen Zielarbeitsablauf angewendet werden. Der eine oder mehrere der Mehrzahl von Knoten im Zielarbeitsablauf können wie in Block 606 dargestellt hinzugefügt, entfernt (wie durch maschinelles Lernen und/oder durch einen Benutzer/Administrator angezeigt) oder geändert werden, während der Zielarbeitsablauf gemäß Anwenden des einen oder mehrerer Patches aktiv ist. Die Funktion 600 kann in Block 608 enden.
  • Mit Bezug nunmehr auf 7 ist ein weiteres Verfahren 700 zum statischen oder dynamischen Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung unter Verwendung eines Prozessors dargestellt. Die Funktion 700 kann als ein Verfahren (z.B. ein durch einen Computer implementiertes Verfahren) implementiert werden, das in Form von Anweisungen auf einer Maschine ausgeführt wird, wobei die Anweisungen auf mindestens einem durch einen Computer lesbaren Medium oder einem nichtflüchtigen maschinenlesbaren Speichermedium enthalten sind. Die Funktion 700 kann in Block 702 beginnen.
  • Aus einem Quellarbeitsablauf können ein oder mehrere Patches wie in Block 704 dargestellt extrahiert werden. Der Zielarbeitsablauf in einer Mehrzahl von Knoten kann wie in Block 706 dargestellt statisch oder dynamisch geändert werden, indem der eine oder mehrere Patches auf den Zielarbeitsablauf angewendet werden. Der eine oder mehrere der Mehrzahl von Knoten können wie in Block 708 dargestellt im Zielarbeitsablauf hinzugefügt, entfernt oder geändert werden, während der Zielarbeitsablauf gemäß Anwenden des einen oder mehrerer Patches aktiv ist. Die Funktion 700 kann in Block 710 enden.
  • Mit Bezug nunmehr auf 8 ist ein weiteres Verfahren 800 zum statischen oder dynamischen Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung unter Verwendung eines Prozessors dargestellt. Die Funktion 800 kann als ein Verfahren (z.B. ein durch einen Computer implementiertes Verfahren) implementiert werden, das in Form von Anweisungen auf einer Maschine ausgeführt wird, wobei die Anweisungen auf mindestens einem durch einen Computer lesbaren Medium oder einem nichtflüchtigen maschinenlesbaren Speichermedium enthalten sind. Die Funktion 800 kann in Block 802 beginnen.
  • Aus einem Quellarbeitsablauf können ein oder mehrere Patches wie in Block 804 dargestellt extrahiert werden. Der Zielarbeitsablauf in einer Mehrzahl von Knoten kann wie in Block 806 dargestellt statisch oder dynamisch geändert werden, indem der eine oder mehrere Patches auf den Zielarbeitsablauf angewendet werden. Eine Konfiguration dieser Knoten der Mehrzahl von Knoten im Zielarbeitsablauf kann gemäß Anwenden des einen oder mehrerer Patches wie in Block 808 dargestellt hinzugefügt werden. Diese Knoten der Mehrzahl von Knoten sowie alle abhängigen Knoten, die im Zielarbeitsablauf aktiv oder inaktiv sind, können wie in Block 810 dargestellt als Reaktion auf das Anwenden des einen oder mehrerer Patches identifiziert und selektiv entfernt werden. Bei einem Aspekt können die aktiven oder inaktiven (z.B. unerwünschten) Knoten auf der Grundlage von maschinellem Lernen oder Benutzerpräferenzen entfernt werden und nicht nur, weil die Knoten an sich inaktiv sind. Die Funktion 800 kann in Block 812 enden.
  • Bei einem Aspekt können die Operationen 600, 700 und/oder 800 in Verbindung mit und/oder als Teil von mindestens einem der Blöcke der 6 bis 8 Folgendes umfassen. Die Operationen 600, 700 und/oder 800 können den einen oder mehrere Patches aus dem Quellarbeitsablauf extrahieren und den einen oder mehrere Patches dynamisch oder statisch auf den Zielarbeitsablauf anwenden.
  • Die Operationen 600, 700 und/oder 800 können Planungen für zusätzliche Knoten auf die Mehrzahl von Knoten beschränken, während sie den einen oder mehrere Patches anwenden und einen Verbindungspunkt zum Anwenden des einen oder mehrerer Patches identifizieren. Bei einem Verbindungspunkt kann es sich um einen Knoten im Zielarbeitsablauf handeln, der einem oder mehreren Knoten, die in dem einen oder mehreren Patches identifiziert werden, eine Eingabe bereitstellt. Die Operationen 600, 700 und/oder 800 können Konflikte zwischen Metadaten, die in dem einen oder mehreren Patches definiert sind, und denjenigen der Mehrzahl von Knoten im Zielarbeitsablauf identifizieren und eine oder mehrere Lösungsaktionen erzeugen, um alle identifizierten Konflikte zu lösen, damit der eine oder mehrere Patches mit dem Zielarbeitsablauf kompatibel sind.
  • Die Operationen 600, 700 und/oder 800 können Merkmalsvektoren für alle Knoten eines Zielarbeitsablaufgraphen erzeugen. In einer weiteren Ausführungsform können die Operationen 600, 700 und/oder 800 einen oder mehrere Eingabe-Merkmalsvektoren aus einem oder mehreren Wurzelknoten des Patches erzeugen und den einen oder mehrere Eingabe-Merkmalsvektoren mit einem oder mehreren Ausgabe-Merkmalsvektoren im Ziel vergleichen (z.B. Abgleichen von Domänen mit Ko-Domänen).
  • Die Operationen 600, 700 und/oder 800 können die Mehrzahl von Knoten, die in dem einen oder mehreren in den Zielarbeitsablauf einzubeziehenden Patches enthalten sind, initialisieren, wobei der Zielarbeitsablauf aktiv ist, und diejenigen der Mehrzahl von Knoten, die in dem Zielarbeitsablauf aktiv sind, der dem einen oder mehreren Patches zugehörig ist, planen.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder-medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. einen Lichtwellenleiter durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hier beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hier unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, einen Herstellungsartikel aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Implementierungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern bzw. und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung vorgestellt, sollen jedoch nicht erschöpfend oder auf die Ausführungsformen beschränkt sein. Für Fachleute ist offensichtlich, dass viele Änderungen und Abwandlungen möglich sind, ohne vom Anwendungsbereich der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber Technologien auf dem Markt bestmöglich zu erläutern oder es Fachleuten zu ermöglichen, die hier beschriebenen Ausführungsformen zu verstehen.

Claims (25)

  1. Verfahren zum Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung durch einen oder mehrere Prozessoren, wobei das Verfahren aufweist: Anwenden eines oder mehrerer aus einem Quellarbeitsablauf extrahierter Patches auf einen Zielarbeitsablauf in einer Mehrzahl von Knoten; und Hinzufügen, Entfernen oder Ändern eines oder mehrerer Knoten der Mehrzahl von Knoten im Zielarbeitsablauf, während der Zielarbeitsablauf gemäß Anwenden des einen oder mehrerer Patches aktiv ist.
  2. Verfahren nach Anspruch 1, das weiterhin Extrahieren des einen oder mehrerer Patches aus dem Quellarbeitsablauf aufweist.
  3. Verfahren nach Anspruch 1, das weiterhin dynamisches oder statisches Anwenden des einen oder mehrerer Patches auf den Zielarbeitsablauf aufweist.
  4. Verfahren nach Anspruch 1, das weiterhin Beschränken jedes Planens zusätzlicher Knoten für die Mehrzahl von Knoten aufweist, während der eine oder mehrere Patches angewendet werden.
  5. Verfahren nach Anspruch 1, das weiterhin aufweisend Identifizieren eines oder mehrerer Verbindungspunkte aufweist, um den einen oder mehrere Patches anzuwenden, wobei es sich bei einem Verbindungspunkt um einen Knoten im Zielarbeitsablauf handelt, der Knoten, die in dem einen oder mehreren Patches identifiziert werden, Eingaben bereitstellt.
  6. Verfahren nach Anspruch 1, das weiterhin aufweist: Identifizieren von Konflikten zwischen Metadaten, die in dem einen oder mehreren Patches definiert sind, und denjenigen der Mehrzahl von Knoten im Zielarbeitsablauf; und Erzeugen einer oder mehrerer Lösungsaktionen, um alle identifizierten Konflikte zu lösen, damit der eine oder mehrere Patches mit dem Zielarbeitsablauf kompatibel sind.
  7. Verfahren nach Anspruch 1, das weiterhin aufweist: Initialisieren der Mehrzahl von Knoten, die in dem einen oder mehreren in den Zielarbeitsablauf einzubeziehenden Patches enthalten sind, wobei der Zielarbeitsablauf aktiv ist; und Planen derjenigen Knoten der Mehrzahl von Knoten, die in dem Zielarbeitsablauf aktiv sind, der dem einen oder mehreren Patches zugehörig ist.
  8. System zum Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung, das aufweist: einen oder mehrere Computer mit ausführbaren Anweisungen, die, wenn sie ausgeführt werden, das System veranlassen: ein oder mehrere aus einem Quellarbeitsablauf extrahierte Patches auf einen Zielarbeitsablauf in einer Mehrzahl von Knoten anzuwenden; und ein oder mehrere Knoten der Mehrzahl von Knoten im Zielarbeitsablauf hinzuzufügen, zu entfernen oder zu ändern, während der Zielarbeitsablauf gemäß Anwenden des einen oder mehrerer Patches aktiv ist.
  9. System nach Anspruch 8, wobei die ausführbaren Anweisungen, wenn sie ausgeführt werden, das System veranlassen, den einen oder mehrere Patches aus dem Quellarbeitsablauf zu extrahieren.
  10. System nach Anspruch 8, wobei die ausführbaren Anweisungen, wenn sie ausgeführt werden, das System veranlassen, den einen oder mehrere Patches auf den Zielarbeitsablauf dynamisch oder statisch anzuwenden.
  11. System nach Anspruch 8, wobei die ausführbaren Anweisungen, wenn sie ausgeführt werden, das System veranlassen, jedes Planen zusätzlicher Knoten für die Mehrzahl von Knoten zu beschränken, während der eine oder mehrere Patches angewendet werden.
  12. System nach Anspruch 8, wobei die ausführbaren Anweisungen, wenn sie ausgeführt werden, das System veranlassen, einen oder mehrere Verbindungspunkte zu identifizieren, um den einen oder mehrere Patches anzuwenden, wobei es sich bei einem Verbindungspunkt um einen Knoten im Zielarbeitsablauf handelt, der einem Knoten, der in dem einen oder mehreren Patches identifiziert wird, eine Eingabe bereitstellt.
  13. System nach Anspruch 8, wobei die ausführbaren Anweisungen, wenn sie ausgeführt werden, das System veranlassen: Konflikte zwischen Metadaten, die in dem einen oder mehreren Patches definiert sind, und denjenigen der Mehrzahl von Knoten im Zielarbeitsablauf zu identifizieren; und eine oder mehrere Lösungsaktionen zu erzeugen, um alle identifizierten Konflikte zu lösen, damit der eine oder mehrere Patches mit dem Zielarbeitsablauf kompatibel sind.
  14. System nach Anspruch 8, wobei die ausführbaren Anweisungen, wenn sie ausgeführt werden, das System veranlassen: die Mehrzahl von Knoten, die in dem einen oder mehreren in den Zielarbeitsablauf einzubeziehenden Patches enthalten sind, zu initialisieren, wobei der Zielarbeitsablauf aktiv ist; und diejenigen Knoten der Mehrzahl von Knoten, die in dem Zielarbeitsablauf aktiv sind, der dem einen oder mehreren Patches zugehörig ist, zu planen.
  15. Computerprogrammprodukt zum Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt aufweist: ein oder mehrere durch einen Computer lesbare Speichermedien und Programmanweisungen, die gemeinsam auf dem einen oder mehreren durch einen Computer lesbaren Speichermedien gespeichert sind, wobei die Programmanweisung aufweist: Programmanweisungen zum Anwenden eines oder mehrerer aus einem Quellarbeitsablauf extrahierter Patches auf einen Zielarbeitsablauf in einer Mehrzahl von Knoten; und Programmanweisungen zum Hinzufügen, Entfernen oder Ändern eines oder mehrerer Knoten der Mehrzahl von Knoten im Zielarbeitsablauf, während der Zielarbeitsablauf gemäß Anwenden des einen oder mehrerer Patches aktiv ist.
  16. Computerprogrammprodukt nach Anspruch 15, das weiterhin Programmanweisungen zum Extrahieren des einen oder mehrerer Patches aus dem Quellarbeitsablauf aufweist.
  17. Computerprogrammprodukt nach Anspruch 15, das weiterhin Programmanweisungen zum dynamischen oder statischen Anwenden des einen oder mehrerer Patches auf den Zielarbeitsablauf aufweist.
  18. Computerprogrammprodukt nach Anspruch 5, das weiterhin Programmanweisungen zum Beschränken jedes Planens zusätzlicher Knoten für die Mehrzahl von Knoten aufweist, während der eine oder mehrere Patches angewendet werden.
  19. Computerprogrammprodukt nach Anspruch 15, das weiterhin Programmanweisungen zum Identifizieren eines oder mehrerer Verbindungspunkte aufweist, um den einen oder mehrere Patches anzuwenden, wobei es sich bei einem Verbindungspunkt um einen Knoten im Zielarbeitsablauf handelt, der einem Knoten, der in dem einen oder mehreren Patches identifiziert wird, eine Eingabe bereitstellt.
  20. Computerprogrammprodukt nach Anspruch 15, das weiterhin Programmanweisungen aufweist, um: Konflikte zwischen Metadaten, die in dem einen oder mehreren Patches definiert sind, und denjenigen der Mehrzahl von Knoten im Zielarbeitsablauf zu identifizieren; und eine oder mehrere Lösungsaktionen zu erzeugen, um alle identifizierten Konflikte zu lösen, damit der eine Patch oder mehrere Patches mit dem Zielarbeitsablauf kompatibel sind.
  21. Computerprogrammprodukt nach Anspruch 15, das weiterhin Programmanweisungen aufweist, um: die Mehrzahl von Knoten, die in dem einen oder mehreren in den Zielarbeitsablauf einzubeziehenden Patches enthalten sind, zu initialisieren, wobei der Zielarbeitsablauf aktiv ist; und diejenigen Knoten der Mehrzahl von Knoten, die in dem Zielarbeitsablauf aktiv sind, der dem einen oder mehreren Patches zugehörig ist, zu planen.
  22. Verfahren zum Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung durch einen oder mehrere Prozessoren, das aufweist: Extrahieren eines oder mehrere Patches aus einem Quellarbeitsablauf; statisches oder dynamisches Ändern eines Zielarbeitsablaufs in einer Mehrzahl von Knoten, indem der eine oder mehrere Patches auf den Zielarbeitsablauf angewendet werden; und Hinzufügen, Entfernen oder Ändern eines oder mehrerer Knoten der Mehrzahl von Knoten im Zielarbeitsablauf, während der Zielarbeitsablauf als Reaktion auf das Anwenden des einen oder mehrerer Patches aktiv ist.
  23. Verfahren nach Anspruch 22, das weiterhin Identifizieren eines oder mehrerer Verbindungspunkte aufweist, um den einen oder mehrere Patches anzuwenden, wobei es sich bei einem Verbindungspunkt um einen Knoten im Zielarbeitsablauf handelt, der Knoten, die in dem einen oder mehreren Patches identifiziert werden, Eingaben bereitstellt.
  24. Verfahren nach Anspruch 22, das weiterhin aufweist: Identifizieren von Konflikten zwischen Metadaten, die in dem einen oder mehreren Patches definiert sind, und denjenigen der Mehrzahl von Knoten im Zielarbeitsablauf; und Erzeugen einer oder mehrerer Lösungsaktionen, um alle identifizierten Konflikte zu lösen, damit der eine oder mehrere Patches mit dem Zielarbeitsablauf kompatibel sind.
  25. Verfahren zum Patchen von Arbeitsabläufen in einer Datenverarbeitungsumgebung durch einen oder mehrere Prozessoren, das aufweist: Extrahieren eines oder mehrere Patches aus einem Quellarbeitsablauf; statisches oder dynamisches Ändern eines Zielarbeitsablaufs in einer Mehrzahl von Knoten, indem der eine oder mehrere Patches auf den Zielarbeitsablauf angewendet werden; Ändern einer Konfiguration dieser Knoten der Mehrzahl von Knoten im Zielarbeitsablauf als Reaktion auf das Anwenden des einen oder mehrerer Patches; und Identifizieren und Entfernen dieser Knoten der Mehrzahl von Knoten sowie aller abhängigen Knoten, die im Zielarbeitsablauf aktiv oder inaktiv sind, als Reaktion auf das Anwenden des einen oder mehrerer Patches.
DE112021005927.0T 2020-11-12 2021-10-28 Patchen von arbeitsabläufen Pending DE112021005927T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/949,741 2020-11-12
US16/949,741 US11886867B2 (en) 2020-11-12 2020-11-12 Workflow patching
PCT/CN2021/126861 WO2022100439A1 (en) 2020-11-12 2021-10-28 Workflow patching

Publications (1)

Publication Number Publication Date
DE112021005927T5 true DE112021005927T5 (de) 2023-10-05

Family

ID=81454390

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021005927.0T Pending DE112021005927T5 (de) 2020-11-12 2021-10-28 Patchen von arbeitsabläufen

Country Status (6)

Country Link
US (1) US11886867B2 (de)
JP (1) JP2023548500A (de)
CN (1) CN116569141A (de)
DE (1) DE112021005927T5 (de)
GB (1) GB2616544B (de)
WO (1) WO2022100439A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762874B2 (en) * 2021-07-28 2023-09-19 Alteryx, Inc. Interactive workflow for data analytics
CN113919728A (zh) * 2021-10-22 2022-01-11 长鑫存储技术有限公司 工艺流程管理方法及设备

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281018B1 (en) * 2004-05-26 2007-10-09 Microsoft Corporation Form template data source change
US7562356B2 (en) 2004-09-22 2009-07-14 Hewlett-Packard Development Company, L.P. Automatically resolving patch dependencies for a path bundle
US7565640B2 (en) 2004-10-01 2009-07-21 Microsoft Corporation Framework for seamlessly authoring and editing workflows at design and runtime
US8122446B2 (en) * 2005-11-03 2012-02-21 International Business Machines Corporation Method and apparatus for provisioning software on a network of computers
US7895226B2 (en) * 2007-11-30 2011-02-22 Sap Ag System and method for translating and executing update requests
US8335773B2 (en) 2008-12-17 2012-12-18 Sap Ag Stable linking and patchability of business processes through hierarchical versioning
US9778921B2 (en) * 2009-06-02 2017-10-03 Apple Inc. Method for creating, exporting, sharing, and installing graphics functional blocks
US20110138374A1 (en) 2009-12-09 2011-06-09 Suprio Pal Downtime reduction for enterprise manager patching
US8984503B2 (en) 2009-12-31 2015-03-17 International Business Machines Corporation Porting virtual images between platforms
US8209564B2 (en) * 2010-02-26 2012-06-26 Red Hat, Inc. Systems and methods for initiating software repairs in conjunction with software package updates
US20120259913A1 (en) * 2011-04-07 2012-10-11 Infosys Technologies, Ltd. System and method for implementing a dynamic change in server operating condition in a secured server network
US9710307B1 (en) 2012-05-07 2017-07-18 Amazon Technologies, Inc. Extensible workflows for processing content
CN106716360B (zh) 2014-09-24 2020-03-03 甲骨文国际公司 支持多租户应用服务器环境中的补丁修补的***和方法
US11237814B2 (en) 2017-08-17 2022-02-01 Oracle International Corporation System and method for supporting custom hooks during patching in an application server environment
US10552779B2 (en) 2017-10-27 2020-02-04 International Business Machines Corporation Cognitive learning workflow execution
US10474977B2 (en) 2017-10-27 2019-11-12 International Business Machines Corporation Cognitive learning workflow execution
US20190163463A1 (en) * 2017-11-30 2019-05-30 International Business Machines Corporation Relational patch orchestration
US11303533B2 (en) * 2019-07-09 2022-04-12 Cisco Technology, Inc. Self-healing fabrics
US11397873B2 (en) * 2020-02-25 2022-07-26 Oracle International Corporation Enhanced processing for communication workflows using machine-learning techniques

Also Published As

Publication number Publication date
CN116569141A (zh) 2023-08-08
US11886867B2 (en) 2024-01-30
GB202308448D0 (en) 2023-07-19
WO2022100439A1 (en) 2022-05-19
JP2023548500A (ja) 2023-11-17
US20220147344A1 (en) 2022-05-12
GB2616544B (en) 2024-01-31
GB2616544A (en) 2023-09-13

Similar Documents

Publication Publication Date Title
DE112010003886B4 (de) Bereitstellung von Diensten unter Verwendung eines Cloud-Dienste-Katalogs
DE112012000444B4 (de) Verfahren, System und Computerprogrammprodukt zum Ermitteln einer optimalen Datenverarbeitungsumgebung zum Ausführen eines Abbildes sowie Verfahren zum Implementieren eines entsprechenden Systems
DE112018002984T5 (de) Konformitätsbewusste Laufzeiterzeugung auf Grundlage von Anwendungsmustern und Risikobeurteilung
DE102016205297A1 (de) Festlegen von speicherebenen zum platzieren von datensätzen während des ausführens von aufgaben in einem arbeitsablauf
DE102013205572B4 (de) Verwenden von softwarekomponenten-metadaten zum bereitstellen von virtuellen maschinen in einer vernetzten datenverarbeitungsumgebung
DE112020000629T5 (de) Vereinheitlichte und automatisierte installation, einsatz, konfiguration und verwaltung von softwaredefinierten speicheranlagen
DE112011100094T5 (de) Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen
DE112012004238T5 (de) Auf Erkennung beruhende Identifizierung und Migration von leicht in eine Cloud verlagerbaren Anwendungen
DE112012002941T5 (de) Anwendungsressourcenverwalter über eine Cloud
DE112021006130T5 (de) Automatisierte orchestrierung von containern durch bewerten von mikrodiensten
DE112018005898T5 (de) Dynamische bereitstellung von software-funktionen
DE112020000912T5 (de) Verwalten von software-programmen
DE112021003401T5 (de) Schattenexperimente für serverlose multi-tenant-cloud-dienste
DE112021005927T5 (de) Patchen von arbeitsabläufen
DE112021000390T5 (de) Anpassen der leistung eines datenverarbeitungssystems
DE102021127254A1 (de) Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern
DE102016103713A1 (de) Erkennung virtueller Maschineneinheiten auf der Grundlage eines Katalogs
DE112022002615T5 (de) Kontinuierliche funktionsfähigkeit und integrität von anwendungen während eines migrationsvorgangs
DE102021122508A1 (de) Ausgleichen von grossrechner- und verteilten arbeitslasten auf der grundlage von leistung und kosten
DE112019002052T5 (de) Datenschutzsensibilisierung bei der bereitstellung von arbeitslasten
DE102014116744A1 (de) Management von Informationstechnologieressourcen
DE112021004577T5 (de) Verwalten eines aufgabenablaufs in einer edge-datenverarbeitungsumgebung
DE102021130359A1 (de) Ressourcenzuordnung auf der grundlage eines kontextbezogenen szenarios
DE102021125847A1 (de) Auf blockchain beruhende reservierung und delegierung von diensten
DE112021003274T5 (de) Ressourcenzuordnung zum optimieren von hyperparametern bei umfangreichen deep-learning-arbeitslasten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0067100000

Ipc: G06F0008600000