Definieren von Geschäftsprozessen
Der Austausch von Nachrichten zwischen verschiedenen Systemen ist ein notwendiger Teil der Lösung der Probleme, die BizTalk Server adressieren. Das wahre Ziel besteht jedoch im Definieren und Ausführen von Geschäftsprozessen basierend auf den Anwendungen. Die BizTalk Server-Engine verwendet Orchestrierungen, um die Logik dieser Geschäftsprozesse zu definieren. Zum Erstellen und Auswerten von Gruppen von Geschäftsregeln wird die Geschäftsregel-Engine verwendet. In diesem Abschnitt werden Orchestrierungen und die Geschäftsregel-Engine beschrieben.
Verwenden von Orchestrierungen
Die Logik eines automatisierten Geschäftsprozesses kann direkt in einer Sprache wie z. B. Microsoft Visual Basic oder Microsoft Visual C# implementiert werden. Das Erstellen, Warten und Verwalten komplexer Geschäftsprozesse in konventionellen Programmiersprachen kann jedoch eine Herausforderung darstellen. Im Gegensatz zu seinen Vorgängern verfolgt BizTalk Server einen anderen Ansatz. Geschäftsmanagern und Entwicklern wird die grafische Definition eines Geschäftsprozesses ermöglicht. Diese Vorgehensweise kann schneller als das direkte Erstellen des Prozesses in einer Programmiersprache sein, und der Prozess wird einfacher verständlich, zu vermitteln und zu ändern. Auf diese Art erstellte Geschäftsprozesse können außerdem einfacher überwacht werden. Dieser Umstand wird von der Geschäftsaktivitätsüberwachungs-Technologie (Business Activity Monitoring, BAM) genutzt.
Für einen Entwickler basiert das Erstellen einer Orchestrierung auf drei primären Tools: dem BizTalk-Editor zum Erstellen von XML-Schemas, dem BizTalk-Mapper zum Definieren von Übersetzungen zwischen diesen Schemas und dem Orchestrierungs-Designer zum Angeben der Logik von Geschäftsprozessen. Alle diese Tools werden in Visual Studio gehostet und bieten eine konsistente Umgebung für Entwickler. In diesem Abschnitt wird die Funktionsweise dieser Tools sowie ihr Zusammenspiel erläutert.
Erstellen von Schemas: Der BizTalk-Editor
Orchestrierungen arbeiten mit XML-Dokumenten. Jedes dieser Dokumente ist mit einem XML-Schema kompatibel. Der BizTalk-Editor ermöglicht Entwicklern das Definieren dieser Schemas, die im Wesentlichen die Struktur und den Typ der Informationen eines Dokuments mithilfe der XSD-Sprache (XML Schema Definition) definieren.
Das Erstellen von XSD-Rohschemas ohne Unterstützung durch Tools ist nicht einfach. Damit dieser erforderliche Schritt vereinfacht wird, ermöglicht BizTalk Editor Benutzern – die wahrscheinlich Entwickler sind – das Erstellen eines Schemas durch Definieren seiner Elemente in einer grafischen Hierarchie. Vorhandene Schemas können ebenfalls aus Dateien oder Webdiensten importiert werden, auf die zugegriffen werden kann. Unabhängig von ihrer Quelle dienen Schemas als Grundlage für BizTalk-Zuordnungen.
Zuordnung zwischen Schemas: Der BizTalk-Mapper
Eine Orchestrierung, die einen Geschäftsprozess implementiert, empfängt normalerweise einige Dokumente und sendet andere Dokumente. Häufig werden Teile der Informationen aus den empfangenen Dokumenten an die gesendeten Dokumente übertragen und möglicherweise auf bestimmte Art umgewandelt. Ein Auftragserfüllungsprozess kann z. B. eine Bestellung für eine bestimmte Anzahl von Artikeln empfangen und dann eine Nachricht zurücksenden, das der Auftrag aus einem bestimmten Grund abgelehnt wurde. Informationen aus der Bestellung, z. B. ein Anforderungsbezeichner und die bestellte Menge, werden möglicherweise aus Feldern der empfangenen Bestellungsnachricht in Felder in der Ablehnungsnachricht kopiert. BizTalk-Mapper kann zum Definieren einer Transformation, die als Zuordnung bezeichnet wird, von einem Dokument in ein anderes Dokument verwendet werden.
Wie die Abbildung oben zeigt, wird jede Zuordnung als eine grafische Korrelation zwischen zwei XML-Schemas ausgedrückt, die eine Beziehung zwischen Elementen in diesen Schemas definiert. Das World Wide Web Consortium (W3C) hat die Extensible Stylesheet Language Transformation (XSLT) als Standardmethode zum Ausdrücken dieser Art von Transformationen zwischen XML-Schemas definiert, sodass Karten in BizTalk Server als XSLT-Transformationen implementiert werden.
Die in einer Transformation definierte Zuordnung kann einfach sein wie z. B. das unveränderte Kopieren von Werten aus einem Dokument in ein anderes Dokument. Direkte Datenkopien wie diese werden mithilfe einer Verknüpfung ausgedrückt, die in BizTalk-Mapper als angezeigt wird, die die entsprechenden Elemente im Quellschema mit ihren Gegenstücken im Zielschema verbindet. Komplexere Transformationen sind mithilfe von Funktoiden ebenfalls möglich. Ein Funktoid ist ein Segment ausführbaren Codes, das beliebig komplexe Zuordnungen zwischen XML-Schemas definieren kann. Wie oben gezeigt, stellt BizTalk-Mapper diese als Feld auf der Linie dar, die die Elemente verbindet, die transformiert werden. Da einige dieser Transformationen ziemlich häufig sind, enthält BizTalk Server eine Reihe von integrierten Funktoiden. Diese integrierten Funktoide sind in folgenden Kategorien zusammengefasst:
Mathematische Funktoide, die Vorgänge wie z. B. das Addieren, Multiplizieren und Dividieren der Werte von Feldern im Quelldokument ausführen und das Ergebnis in einem Feld im Zieldokument speichern.
Konvertierungsfunktoide, die einen numerischen Wert in seine ASCII-Entsprechung umwandeln und umgekehrt.
Logische Funktoide, die zum Ermitteln verwendet werden können, ob ein Element oder Attribut im Zieldokument basierend auf einem logischen Vergleich von angegebenen Werten im Quelldokument erstellt werden soll. Diese Werte können anhand der Operatoren gleich, größer als/kleiner als oder auf andere Weise verglichen werden.
Kumulative Funktoide, die Durchschnittswerte, Summen oder andere Werte aus verschiedenen Feldern im Quelldokument berechnen und das Ergebnis in einem Feld im Zieldokument speichern.
Datenbankfunktoide, die auf in einer Datenbank gespeicherte Informationen zugreifen können.
Es ist außerdem möglich, benutzerdefinierte Funktoide direkt in XSLT oder mithilfe von .NET-aktivierten Sprachen wie etwa Visual C# oder Visual Basic zu erstellen. Funktoide können auch in Sequenzen kombiniert werden und kaskadierend ihre Ausgaben als Eingaben an andere Funktoide weitergeben.
Es ist unabdingbar, dass ein Verfahren zum Definieren des XML-Schemas eines Dokuments vorhanden ist sowie ein Mechanismus zum Zuordnen von Informationen zu Dokumenten mit verschiedenen Schemas. BizTalk-Editor und BizTalk-Mapper lösen diese beiden Probleme. Das Definieren von Schemas und Zuordnungen ist jedoch nur ein Teil des Vorgangs. Sie müssen auch die Geschäftslogik angeben, die die Schemas verwendet und die Zuordnungen aufruft.
Definieren von Geschäftslogik: Die Orchestrierung Designer
Ein Geschäftsprozess ist eine Sammlung von Aktionen, die zusammen eine sinnvolle Geschäftsanforderung erfüllen. Mit BizTalk Server kann ein Entwickler die Orchestrierungs-Designer verwenden, um diese Aktionen grafisch zu definieren. Anstatt die einzelnen Schritte in einer Programmiersprache auszudrücken, kann ein Entwickler eine Orchestrierung erstellen, indem er eine Reihe von Formen auf logische Weise verbindet. Die folgenden Formen sind im Orchestrierungs-Designer verfügbar:
Die Form „Empfangen“, die der Orchestrierung das Empfangen von Nachrichten ermöglicht. Eine Form „Empfangen“ kann einen Filter besitzen, der die zu empfangenden Nachrichtentypen definiert, und sie kann auch für das Starten einer neuen Instanz einer Orchestrierung konfiguriert werden, wenn eine neue Nachricht eintrifft.
Die Form „Senden“, die der Orchestrierung das Senden von Nachrichten ermöglicht.
Die Form „Port“, die definiert, wie Nachrichten übertragen werden. Jede Instanz einer Form „Port“ ist mit einer Form „Senden“ oder einer Form „Empfangen“ verbunden. Jeder Port weist außerdem einen Typ auf, der die Nachrichtenarten definiert, die ein Port empfangen kann, eine Richtung (z. B. Senden oder Empfangen) und eine Bindung, die festlegt, wie eine Nachricht empfangen wird, z. B. durch Angeben einer bestimmten URL und anderer Informationen.
Die Form „Entscheidung“, die eine If-Then-Else-Anweisung darstellt, durch die eine Orchestrierung verschiedene Aufgaben basierend auf Wahrheitsbedingungen ausführen kann. Ein Ausdrucks-Editor, der Teil des Orchestrierungs-Designers ist, kann zum Angeben dieser Bedingungsanweisung verwendet werden.
Die Form „Schleife“, die die wiederholte Ausführung einer Aktion steuert, solange eine Bedingung wahr ist.
Die Form „Nachricht erstellen“, die das Erstellen einer Nachricht ermöglicht.
Die Form „Transformation“, die das Übertragen von Informationen aus einem Dokument in ein anderes sowie das Transformieren der Informationen durch Aufrufen von mit BizTalk Mapper definierten Zuordnungen ermöglicht.
Die Form „Parallelaktionen“, mit der ein Entwickler angeben kann, dass mehrere Vorgänge parallel anstatt nacheinander ausgeführt werden sollen. Die Form, die auf diese Form folgt, wird erst ausgeführt, nachdem alle parallelen Aktionen abgeschlossen wurden.
Die Form „Bereich“, die die Gruppierung von Vorgängen zu Transaktionen sowie das Definieren von Ausnahmehandlern für die Fehlerbehandlung ermöglicht. Sowohl traditionelle atomare Transaktionen als auch lange ausgeführte Transaktionen werden unterstützt. Im Gegensatz zu atomaren Transaktionen verwenden lange ausgeführte Transaktionen kompensierende Programmlogik anstelle von Rollbackvorgängen, um unerwartete Ereignisse zu verarbeiten.
Die Form „Nachrichtenzuweisung“, die das Zuweisen von Werten zu Orchestrierungsvariablen ermöglicht. Diese Variablen können zum Speichern von Statusinformationen für die Orchestrierung verwendet werden, z. B. zu einer Nachricht, die aktuell erstellt wird, oder einer Zeichenfolge.
Die Abbildung unten zeigt eine Orchestrierung, die im Orchestrierungs-Designer mit einigen dieser Formen erstellt wurde. In diesem einfachen Beispiel wird eine Nachricht empfangen, eine Entscheidung basierend auf dem Inhalt dieser Nachricht getroffen und einer von zwei Pfaden als Ergebnis dieser Entscheidung ausgeführt. Orchestrierungen, die reale Probleme lösen, können wesentlich komplexer sein; Um die Arbeit mit diesen komplexeren Diagrammen zu vereinfachen, enthält das Orchestrierungs-Designer die Möglichkeit zum Vergrößern und Verkleinern. Entwickler können nur die Teile einer Orchestrierung anzeigen, an denen sie derzeit interessiert sind.
Nachdem ein Entwickler eine Orchestrierung definiert hat, wird die Gruppe der Formen sowie die Beziehung zwischen ihnen in MSIL (Microsoft Intermediate Language) konvertiert. Diese Sprache wird von .NET Framework-CLR (Common Language Runtime) verwendet. Letztlich wird die Gruppe der durch einen BizTalk Server-Entwickler definierten Formen zu einer .NET-aktivierten Standardassembly. Bei Bedarf können Sie einer Orchestrierung auch ausdrücklichen Code hinzufügen, indem Sie ein COM- oder .NET-Objekt aus einer Form aufrufen.
Die Rolle der Webdienste
Webdienste ermöglichen den Austausch von XML-Dokumenten mithilfe von SOAP und besitzen erhebliche Auswirkungen auf Integrationsplattformen. Um auf einen externen Webdienst zuzugreifen, kann der Ersteller einer Orchestrierung die Option Webverweis hinzufügen in Visual Studio zusammen mit dem Webdienstadapter verwenden, um Vorgänge direkt aufzurufen. In ähnlicher Weise stellt BizTalk Server einen Assistenten für die Veröffentlichung von Webdiensten bereit, der ein ASP.NET Webdienstprojekt generieren kann, das einen oder mehrere Orchestrierungsvorgänge als SOAP-aufrufbare Webdienste verfügbar macht. Mithilfe dieser beiden Optionen können Entwickler auf vorhandene Webdienste aus einem Geschäftsprozess zugreifen und die Funktionen einer Orchestrierung als Webdienst für andere Geschäftsprozesse bereitstellen.
Die Zunahme der Bedeutung von Webdiensten wirkt sich auch darauf aus, wie Geschäftsprozesse definiert werden. Angenommen, zwei Organisationen interagieren mithilfe von Webdiensten miteinander. Damit die Zusammenarbeit effektiv ist, kann es für jede Partei, die an Interaktion teilnimmt, erforderlich sein, den Geschäftsprozess zu kennen, den die andere Partei verwendet. Wenn beide Organisationen BizTalk Server verwenden, ist dies kein großes Problem. Tools wie die Trading Partner Management-Technologie können verwendet werden, um dieses Wissen zu verteilen. Was jedoch, wenn unterschiedliche Produkte verwendet werden? Unter diesen Umständen ist es sinnvoll, über ein nicht herstellerspezifisches Verfahren zum Beschreiben der verschiedenen Aspekte der Geschäftsprozesse zu verfügen.
Damit dies möglich wird, haben Microsoft, IBM und andere Hersteller BPEL (Business Process Execution Language) erstellt. Ein geschäftsprozess, der mithilfe des Orchestrierungs-Designer definiert wurde, kann nach BPEL exportiert werden, und BizTalk Server kann auch in BPEL definierte Prozesse importieren. BPEL eignet sich zwar zum Beschreiben und gemeinsamen Verwenden von äußerlich sichtbaren Teilen des Geschäftsprozesses, die Sprache konzentriert sich jedoch stärker auf das Lösen dieses Problems als auf die plattformübergreifende Ausführung vollständiger Geschäftsprozesse. Es ist auch wichtig zu verstehen, dass BPEL vollständig auf Webdiensten basiert, während BizTalk Server und andere Produkte, die diese Sprache unterstützen, mehr bieten. Beispielsweise unterstützt BizTalk Server die Zuordnung zwischen verschiedenen XML-Schemas, das Aufrufen von Methoden in lokalen Objekten und andere Features, die in BPEL nicht verfügbar sind. Aus diesen und anderen Gründen ist BPEL keine vollständige Sprache zum Definieren von Geschäftsprozessen. Da sich BPEL außerdem noch im Standardisierungsprozess durch OASIS (Organization for the Advancement of Structured Information Standards) befindet, kann die Sprache heute kaum als ausgereifte Technologie angesehen werden.
Orchestrierungen sind der grundlegende Mechanismus zum Erstellen von Geschäftsprozessen in BizTalk Server. Einige Aspekte einer Orchestrierung ändern sich jedoch häufiger als andere. Insbesondere die Entscheidungen, die für einen Geschäftsprozess relevant sind – die Geschäftsregeln – sind meistens sein unbeständigster Aspekt. Das Ausgabenlimit eines Vorgesetzten betrug letzte Woche 100.000 USD, aber ihre Promotion führt zu einer Erhöhung auf 500.000 USD, oder die maximal zulässige Bestellung eines langsam zahlenden Kunden sinkt von 100 Einheiten auf nur 10. Sie können diese Regeln mithilfe der Geschäftsregel-Engine angeben und aktualisieren.
Verwenden der Geschäftsregel-Engine
Der Orchestrierungs-Designer bietet zusammen mit BizTalk-Editor und BizTalk-Mapper ein effektives Verfahren zum Definieren eines Geschäftsprozesses und der darin verwendeten Regeln. Es kann jedoch sinnvoll sein, ein einfacheres Verfahren zum Definieren und Ändern von Geschäftsregeln zu verwenden. Zu diesem Zweck stellt BizTalk Server das Geschäftsregelmodul (Business Rule Engine, BRE) zur Verfügung. Entwickler verwenden das Geschäftsregelmodul häufig, geschäftsorientiertere Benutzer können jedoch Geschäftregelsätze mithilfe eines Tools namens Geschäftsregelersteller erstellen und ändern.
Das Geschäftsregelmodul ist z. B. dann sinnvoll, wenn eine komplexe Sammlung von Geschäftsregeln ausgewertet werden muss. Die Gewährung eines Darlehens kann z. B. das Durcharbeiten einer großen Regelsammlung bedeuten, die auf der Kreditwürdigkeit des Kunden, seinem Einkommen und anderen Faktoren basiert. Der Verkauf einer Lebensversicherungspolice an einen Antragsteller hängt ebenso von zahlreichen Umständen ab, z. B. von seinem Alter, Geschlecht und Gesundheitszustand. Es wäre zwar möglich, alle diese Regeln als bedingte Anweisungen z. B. in der Form „Entscheidung“ einer Orchestrierung auszudrücken, die Implementierung wäre jedoch recht komplex. Für regelintensive Prozesse wie diesen kann das Geschäftsregelmodul Entwicklern das Leben vereinfachen.
Mithilfe des Geschäftsregelmoduls können Entwickler Regeln bei Bedarf schnell und einfach ändern. Warum das so ist, erkennen Sie schnell, wenn Sie bedenken, was zum Ändern einer in einer Orchestrierung implementierten Geschäftsregel erforderlich ist. Ein Entwickler muss zuerst die Orchestrierung in Visual Studio öffnen, die entsprechenden Formen (und möglicherweise die von ihnen aufgerufenen .NET- oder COM-Objekte) ändern und dann die geänderte Assembly erstellen und bereitstellen. Zu diesem Zweck muss außerdem die BizTalk-Anwendung. die diese Orchestrierung enthält, angehalten und dann neu gestartet werden. Wenn diese Geschäftsregel stattdessen mit dem Geschäftsregelmodul implementiert wird, kann sie ohne erneute Kompilierung oder Neustart geändert werden. Es ist nur erforderlich, den Geschäftsregelersteller zum Ändern der gewünschten Regel zu verwenden und die neue Regelsammlung dann bereitzustellen. Diese Änderungen werden sofort wirksam. Während Orchestrierungen normalerweise von Entwicklern erstellt und verwaltet werden, sind Geschäftregeln lesbar genug, dass sie unter Umständen durch Wirtschaftsanalytiker geändert werden können, ohne technisches Personal einschalten zu müssen.
Der Ersteller eine Geschäftsregelsammlung verwendet normalerweise zuerst den Geschäftsregelersteller zum Definieren des Vokabulars, das bei der Angabe dieser Regeln verwendet werden soll. Jeder Begriff des Vokabulars stellt einen benutzerfreundlichen Namen für bestimmte Informationen zur Verfügung. Ein Vokabular kann z. B. Begriffe wie „Anzahl versandt“ oder „Artikelhöchstmenge“ oder „Genehmigungsgrenzwert“ definieren. Jeder dieser Begriffe kann auf eine Konstante festgelegt oder einem bestimmten Element oder Attribut in einem XML-Schema (und somit in einer eingehenden Nachricht), dem Ergebnis einer SQL-Abfrage einer Datenbank oder sogar einem Wert in einem .NET-Objekt zugeordnet werden.
Nachdem das Vokabular definiert wurde, kann der Geschäftsregelersteller zum Erstellen von Geschäftsrichtlinien verwendet werden, die dieses Vokabular verwenden. Jede Richtlinie kann mindestens eine Regel enthalten. Eine Regel verwendet die im Vokabular definierten Begriffe zusammen mit logischen Operatoren wie z. B. größer als, kleiner als, gleich usw., um zu definieren, wie ein Geschäftsprozess arbeitet. Eine Geschäftsregel kann beispielsweise definieren, wie sich die in einem empfangenen XML-Dokument enthaltene Werte auf die erstellten Werte in einem XML-Dokument auswirken sollen, das gesendet wird, oder wie diese empfangenen Werte beeinflussen, welcher Wert in eine Datenbank geschrieben wird.
Zum Ausführen einer Geschäftsrichtlinie verwendet eine Orchestrierung eine Form „CallRules“. Diese Form erstellt eine Instanz des Geschäftsregelmoduls, gibt die auszuführende Richtlinie an und übergibt dann die Informationen, die diese Richtlinie benötigt, z. B. ein empfangenes XML-Dokument. Der BRE kann auch programmgesteuert mit einem aufgerufen werden. NET-basiertes Objektmodell, das den Aufruf von Anwendungen ermöglicht, die BizTalk Server nicht verwenden. Dies bedeutet, dass Windows Forms-Anwendungen, Software, die Webdienste bereitstellt und alle anderen Komponenten, die auf .NET Framework aufbauen, das Geschäftsregelmodul potenziell verwenden können, wenn auf diese Weise das aktuelle Problem gelöst werden kann.
Vokabulare und Geschäftsregeln können wesentlich komplexer – und leistungsfähiger – sein als die einfachen Beispiele, die hier beschrieben werden. Die Kernidee, ein Vokabular zu definieren und dann Regelsammlungen zu definieren, die dieses Vokabular verwenden, ist jedoch das Hauptkonzept der Geschäftsregel-Engine.