Ein Tutorial zur Einführung in ProcessMaker.IO für Entwickler

Hallo zusammen. Ich bin Taylor Dondich und ich bin der CTO hier bei ProcessMaker. ProcessMaker.IO ist unsere leistungsstarke Workflow-Engine in der Cloud, und ich freue mich darauf, Ihnen zu zeigen, wie Sie loslegen können. Am besten zeige ich Ihnen das anhand von echtem Code.
 
Dieser erste Beitrag ist der erste in einer Reihe von Tutorials, die Sie zunächst in ProcessMaker.IO einführen werden. In jedem neuen Beitrag werden Sie neue Konzepte kennenlernen und erfahren, wie Sie diese anwenden können. Sie beginnen mit einem einfachen Arbeitsablauf und arbeiten sich dann an komplexere Szenarien heran. Diese Szenarien zeigen einige der spannenden Funktionen, die ProcessMaker.IO bietet.
 
ProcessMaker.IO ist kostenlos, um sich zu registrieren und loszulegen. Sobald Sie Ihr Konto haben, können Sie den Code für diese Tutorials in unserem GitHub-Repository.
Nehmen wir für unser Beispiel an, wir sind Entwickler bei Widget Co. Unser Chef möchte, dass wir ein Formular erstellen, mit dem unsere Kunden uns aus beliebigen Gründen kontaktieren können. Wenn sie das Formular ausfüllen, sollen wir eine E-Mail mit den vom Kunden angegebenen Details erhalten.
 
Es ist ein einfaches Beispiel und perfekt, um uns die Füße nass zu machen.

Anmeldung und Start Ihrer ersten Workflow Engine

Besuchen Sie zunächst die ProcessMaker.IO-Registrierungsseite, um Ihr Konto zu erstellen.

Sobald Sie Ihre Daten eingegeben haben, erhalten Sie eine E-Mail mit einem Link zur Verifizierung Ihres Kontos. Sobald Sie verifiziert sind, können Sie Ihre erste Workflow-Engine erstellen.

Sie sehen dann das ProcessMaker.IO-Dashboard. Dieses Dashboard zeigt die Liste Ihrer Workflow-Engines an. Da Sie noch keine haben, klicken Sie auf die Schaltfläche "Instanz erstellen", um Ihre eigene Engine zu erstellen.

Über Workflow-Engines

Jede Workflow-Engine ist eine isolierte Umgebung, die über einen eigenen API-Endpunkt und eigene Daten verfügt. Diese Isolierung ermöglicht es Ihnen, viele Engines für verschiedene Szenarien zu verwenden. Sie könnten eine Engine für eine Staging-Umgebung und eine für die Produktion haben. Sie können separate Engines für verschiedene Geschäftsbereiche haben. Wie Sie Ihre Engines organisieren, bleibt Ihnen überlassen. Jede Engine hat ihre eigenen Daten und kann die Daten einer anderen Engine in Ihrem Konto nicht einsehen.

Erstellen Ihres ersten Workflows

Für unser Beispiel werden wir einen einfachen Arbeitsablauf erstellen, der auch als Prozess bezeichnet wird und eine E-Mail versendet. Wenn wir diesen Arbeitsablauf visualisieren würden, würde er wie folgt aussehen:

Wenn Sie mit Geschäftsprozessen vertraut sind, wird Ihnen das obige Diagramm bekannt vorkommen. Es ist ein BPMN-Diagramm, das visuell darstellt, was wir tun wollen. ProcessMaker.IO ist eine BPMN-konforme Workflow-Engine. Wenn Sie mit BPMN vertraut sind, werden Sie sich bei der Verwendung der Engine wohlfühlen. Wenn Sie mit BPMN nicht vertraut sind, brauchen Sie sich keine Sorgen zu machen, das ist nicht notwendig. Wir werden die Konzepte durchgehen.

Wenn Sie einen Workflow in ProcessMaker.IO erstellen, haben Sie die Wahl, wie Sie vorgehen. Wenn Sie mit BPMN-Diagrammwerkzeugen vertraut sind, können Sie ein BPMN-Diagramm erstellen und es in die Engine importieren. Wir werden in einem späteren Tutorial ein Beispiel dafür zeigen. Sie können einen Prozess auch programmatisch erstellen, was wir in diesem Beispiel tun werden. ProcessMaker.IO bietet SDKs in vielen Sprachen an. Für dieses Beispiel werden wir das ProcessMaker.IO PHP SDK verwenden.

Zunächst müssen wir unseren SDK-Client initialisieren. Dazu benötigen Sie den API-Endpunkt Ihrer Engine und das API-Zugangs-Token Ihres ersten Benutzers. Diese können Sie in Ihrem Dashboard finden.

Stellen Sie sicher, dass Sie den Code von unserem GitHub-Repository herunterladen. Wir werden dies als Ausgangspunkt verwenden. Führen Sie den Befehl composer install von PHP aus, um das SDK zu installieren. Erstellen Sie anschließend eine .env-Datei im Stammverzeichnis Ihres Codes. Diese Datei enthält Ihren API-Endpunkt, Ihr Zugriffstoken und andere Konfigurationsoptionen.

PMIO_ENDPOINT=https://fds23zz.api.processmaker.io/api/v1
PMIO_ACCESS_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjkwMTBmZGI5YWMxYTZiNGI2ZGMyZjNiODZmZDg5OTJhYWRlODI0MGU5MWI3NWRkNDhjNTA4MzRlYjQzZjUzNmFjMDkxNTg4MDY5MDZiM2MxIn0.eyJhdWQiOiIxIiwianRpIjoiOTAxMGZkYjlhYzFhNmI0YjZkYzJmM2I4NmZkODk5MmFhZGU4MjQwZTkxYjc1ZGQ0OGM1MDgzNGViNDNmNTM2YWMwOTE1ODgwNjkwNmIzYzEiLCJpYXQiOjE1MDY1NDM5MTMsIm5iZiI6MTUwNjU0MzkxMywiZXhwIjoxNTM4MDc5OTEzLCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.PTFaPvddgKqB51trFAV2Ka_8W2npZ9jbc2uGAoYdFKfMNNvvNl07DWTDXxK90B0OwLAA08husWmfkVomWlm6W44hXuJEa8zG3SfRGwpzPQiA4NZ706YkbWqjLfY5QH41MwpJlkgKeQv6Q6nvZluyXrzQlvZVkSfSb9GvNe4h6arLLn1KQp3xQnnK-Jk8Q109uEnhmkOs4mfUKj5rd0E_DKJUTc-CmXoJZ8zsvuDv-irv7PtQlpQRmVdlOJD2mTO2NNwQpLjdl4d3D4a7zKpMcrkeLmqz_Cums4uk5069Ju2TRmAbyGfWUgL7aTg-o80xWPnwY9AY7xC__mZvW1ydlpLKX18-bIpj_5acCyqQmnA921KAoO99YV3rT19I_VKF9dglzMOPWrcLzb44qK4ONXjx8Za3zyFJZpBa_SrCkhYiOhY1GNNk5EpqqMCAT_D8nCnrR7fmLrXtFJsP9yPDYwMZxYuppCH6rcqLIeB0VlmEiNTJu_1RlYgcmG02boSNPXHmzrEd9eJKRksSWVfkE90quuDMNoEFYaL1A_yU0yn2iW0T--lh_kPOGEth2WrShoYEZ667FSrSmsRYoLe8BiqGbiSquYrtDhHYhcidOeWyZLtUDMnVNi00v3i3hrIp7KIvIM9zAQxzk3OwAxXFrKV6Ut3-cqyvpMhWo9NPyZI
# Setzen Sie diese Option auf true, wenn Sie jeden HTTP-Api-Aufruf protokollieren möchten.
[email protected]
PMIO_DEBUG=false
PMIO_DEBUG_FILE=debug.log

Initialisierung des PHP-SDK

Zunächst müssen wir unseren API-Client mit unseren Anmeldedaten initialisieren. In unseren Code-Beispielen ist die Datei bootstrap.php die Datei. Diese Datei ist enthalten in allen Beispielen enthalten. Schauen wir uns an, wie der Client initialisiert wird.

// Create our API configuration object and pass in it's configuration
$config = new Configuration();
$config->setHost(getenv('PMIO_ENDPOINT'));
$config->setAccessToken(getenv('PMIO_ACCESS_TOKEN'));
$config->setDebug(getenv('PMIO_DEBUG'));
$config->setDebugFile(__DIR__ . '/' . getenv('PMIO_DEBUG_FILE'));

// Initialize our API client which will be referenced by client scripts
$pmio = new Client(new ApiClient($config));

Erstellen des Prozessobjekts

Das Prozessobjekt speichert die Definition unseres Arbeitsablaufs. Es enthält die Zuordnung von Ereignissen zu Aufgaben und wie jedes Element in das nächste übergeht. Machen Sie sich keine Gedanken über diese Begriffe, wir werden sie bald behandeln. In der Datei introduction/create.php beginnen wir mit der Erstellung des Prozessobjekts über unsere API.

$response = $pmio->addProcess(new ProcessCreateItem([
    'data' => new Process([
        'attributes' => new ProcessAttributes([
            'name' => 'Einführungsprozess'
        ])
    ])
]));
// Abrufen des zugrunde liegenden Datenobjekts, das unseren Prozess wirklich repräsentiert
$process = $response->getData();

Erstellen der Start- und Endereignisse

In der Welt des Workflows beschreiben Ereignisse, was in Ihrem Workflow zu verschiedenen Zeiten geschieht. In unserem einfachen Fall verwenden wir ein Startereignis und ein Endereignis. Das Startereignis ist der Beginn der Ausführung unseres Prozesses. Unser Startereignis wird ausgelöst, wenn ein Kunde das Kontaktformular abschickt. Das Endereignis signalisiert, dass unser Workflow abgeschlossen ist. Das Ziel des Workflows ist es, vom Startereignis zum Endereignis zu gelangen. In der Datei introduction/create.php sehen Sie, wie wir sie erstellen.

$response = $pmio->addEvent($process->getId(), new EventCreateItem([
    data' => new Event([
        'attributes' => new EventAttributes([
            'name' => 'Start',
            'type' => 'START',
            'definition' => EventAttributes::DEFINITION_MESSAGE
        ])
    ])
]));
$startEvent = $response->getData();

$response = $pmio->addEvent($process->getId(), new EventCreateItem([
    'data' => new Event([
        'attributes' => new EventAttributes([
            'name' => 'Ende',
            'type' => 'END',
            'definition' => EventAttributes::DEFINITION_NONE
        ])
    ])
]));
$endEvent = $response->getData();

Erstellen der Aufgabe zum Senden einer E-Mail

In unserem Workflow wollen wir eine E-Mail senden, wenn der Kunde das Kontaktformular abschickt. Dazu müssen wir eine Dienstaufgabe verwenden. Eine Aufgabe stellt etwas dar, das in einem Arbeitsablauf ausgeführt werden kann, und wen es betreffen sollte. Ein Service-Task läuft im Hintergrund und benötigt keinen menschlichen Eingriff. Das ist genau das, was wir wollen, damit unser Workflow eine E-Mail sendet.

$response = $pmio->addTask($process->getId(), new TaskCreateItem([
    data' => neue Aufgabe([
        'attributes' => new TaskAttributes([
            name' => 'Kontakt-Formular E-Mail senden',
            'type' => 'SERVICE-TASK'
        ])
    ])
]));
$serviceTask = $response->getData();

Wir müssen unserer ServiceTask die Details ihrer Implementierung mitteilen. Wir werden einen der ProcessMaker.IO-Konnektoren verwenden, um die Möglichkeit zu schaffen, E-Mails zu versenden. ProcessMaker.IO hat viele Konnektoren, die Interaktionen mit Diensten von Drittanbietern ermöglichen. Konnektoren für Slack, Mailchimp und Google Apps und mehr sind verfügbar.

Lassen Sie uns zunächst unsere E-Mail-Vorlage erstellen, damit wir unserem Connector mitteilen können, dass er sie verwenden soll.

$template = <<

Name: {name}
Email: {email}
Subject: {subject}
Message: {message}

EOM;
Dies ist eine HTML-E-Mail-Vorlage. Sie können einige Felder sehen, die von geschweiften Klammern umgeben sind. ProcessMaker.IO kann Werte in diese Platzhalter einfügen. Das Datenmodell des laufenden Prozesses enthält diese Werte. In unserem Beispiel stellt die Übermittlung des HTML-Formulars das Datenmodell dar.
 
Erstellen wir unseren Konnektor und weisen wir ihn an, sich mit unserem ServiceTask zu verbinden.
$pmio->addTaskConnector($process->getId(), $serviceTask->getId(), new TaskConnectorCreateItem([
    'data' => new TaskConnector([
        'attributes' => new TaskConnectorAttributes([
            'connector_class' => 'SendMailConnector',
            'input_parameters' => [
                'to' => getenv('TARGET_EMAIL_ADDRESS'),
                'name' => 'Introduction Form Submission',
                'subj' => 'Contact Form Submission from {name}',
                'body' => $template
            ]
        ])
    ])
]));

Stellen Sie sicher, dass Sie die TARGET_EMAIL_ADDRESS in Ihrer .env-Datei geändert haben. Der Verweis darauf ist im Codebeispiel zu sehen.

Verdrahtung des Ganzen mit Flows

Da wir nun unsere Ereignisse und Aufgaben haben, müssen wir den Pfad vom Startereignis zum Endereignis definieren. Flows definieren diese Pfade. Ein Flow muss eine Quelle und ein Ziel haben. Unser erster Flow beginnt zum Beispiel mit dem Start Event und endet mit der ServiceTask. Ein weiterer Flow bewegt sich von der ServiceTask zu unserem End Event. Lassen Sie uns diese jetzt erstellen.

$pmio->addFlow($process->getId(), new FlowCreateItem([
    data' => new Flow([
        'attributes' => new FlowAttributes([
            name' => 'Start zur Serviceaufgabe',
            'from_object_id' => $startEvent->getId(),
            'from_object_type' => $startEvent->getType(),
            to_object_id' => $serviceTask->getId(),
            bis_objekt_typ' => $serviceTask->getType()
        ])
    ])
]));

$pmio->addFlow($process->getId(), new FlowCreateItem([
    'data' => new Flow([
        'attributes' => new FlowAttributes([
            'name' => 'Serviceaufgabe zu beenden',
            'from_object_id' => $serviceTask->getId(),
            'from_object_type' => $serviceTask->getType(),
            'to_object_id' => $endEvent->getId(),
            to_object_type' => $endEvent->getType()
        ])
    ])
]));

Behalten Sie unsere Prozess-ID und Start-Event-ID für die zukünftige Verwendung

Sobald wir unseren Prozess definiert haben, müssen wir die ID des Prozesses und das Startereignis kennen. Wir werden diese Werte verwenden, wenn wir unsere API mit unseren HTML-Formulardaten aufrufen.

print("Prozess-ID: " . $process->getId() . "n");
print("Start-Event-ID: " . $startEvent->getId() . "n");

Ausführen des erstellten Skripts

Wenn Sie Ihr Skript ausführen, erhalten Sie die endgültige Prozess-ID und die Start-Event-ID

$ php ./einleitung/erstellen.php
Prozess-ID: b78fc897-91f8-4f38-b8e3-7d60267d9b67
Start-Ereignis-ID: 271bf2f1-47bb-4616-9edb-3892b5696710

Vorbereiten des HTML-Formulars

Nachdem wir nun einen Workflow in unserer Engine definiert haben, können wir unser HTML-Formular vorbereiten. In unseren Codebeispielen ist ein Formular bereits in der Datei introduction/form.html vorbereitet.
 
Wir möchten die Datei aktualisieren, um eine Variable zu definieren, die einen API-Endpunkt von unserer Engine darstellt. Dieser Endpunkt ist der Webhook für unser Startereignis.

Beachten Sie, dass die URL sowohl die Prozess-ID als auch die ID des Startereignisses enthält. Der Webhook-Endpunkt ermöglicht es uns, ein HTTP POST mit Formulardaten zu senden. Diese Formulardaten stellen das Datenmodell dar, wenn der Workflow ausgeführt wird.

In unserem Beispiel verwenden wir jQuery, um das Formular an unseren Webhook zu übermitteln. Wir verwenden einen AJAX-Aufruf. Wenn der Aufruf erfolgreich ist, zeigen wir dem Benutzer eine nette Nachricht an und unser Workflow wird gestartet.

$('#contact-form').on('submit', function(e) {
     $.ajax({
         url: pmio_webook,
         type: 'POST',
         data: {
             name: $('#contactInputName').val(),
             email: $('#contactInputEmail').val(),
             subject: $('#contactInputSubject').val(),
             message: $('#contactInputMessage').val()
         }
     })
         // Our promise handler on success
         .done(function() {
             $('#contact-form button, #contact-form p.alert-danger').remove();
             $('#contact-form p.alert-success').removeClass('hide');
         })
         // And our promise handler on failure
         .fail(function(xhr, status, err) {
             $('#contact-form p.alert-danger').removeClass('hide');
         });
     return false;
 });

Übermittlung des Formulars

Wenn Sie die HTML-Datei in Ihrem Browser laden, können Sie das Formular abschicken und sehen eine Erfolgsmeldung. Hinter den Kulissen wurde der Webhook für das Startereignis unseres Workflows aufgerufen. Es ist lebendig!

Der Lebenszyklus einer Workflow-Instanz

Start Events erstellen neue Instanzen eines Workflows. Diese Instanzen haben ihren eigenen unabhängigen Lebenszyklus sowie ein eigenes Datenmodell. Die Workflow-Instanz erstellt ein Token, das den Workflow durchläuft.
 
Beginnend mit dem Startereignis durchläuft er den Ablauf des Workflows und führt dabei Aufgaben aus. Die Aufgaben im Workflow können das Datenmodell während ihrer Ausführung verwenden und es nach der Ausführung ändern.
 
Das Datenmodell ist ein JSON-Dokument, das komplexe Datentypen enthalten kann. In unserem Beispiel ist das Datenmodell die Sammlung von Formularfeldwerten, die in der Ajax-Übermittlung enthalten sind.
 
Sobald der Token das End-Ereignis erreicht, ist der Lebenszyklus der Instanz beendet. Die Instanz hat den Status "COMPLETED".
 
In unserem Beispiel umfasste der Workflow-Lebenszyklus die folgenden Schritte:
  1. Das Token startete beim Start Event Webhook und füllte das Datenmodell auf.
  2. Das Token wird an die ServiceTask weitergeleitet, die den SendMailConnector ausführt.
  3. Das Token floss von der Serviceaufgabe zum End-Ereignis und signalisierte damit den Abschluss des Workflows.
Dieser Lebenszyklus findet in der Engine statt und ist asynchron zum Ajax-Aufruf. Wenn Sie mitgemacht haben, sollten Sie eine E-Mail in Ihrem Posteingang erhalten haben.

Nächste Schritte

Unser Arbeitsablauf ist sehr einfach, aber er gab uns die Möglichkeit, einige grundlegende Konzepte zu behandeln. Die meisten Arbeitsabläufe werden nicht so einfach sein. Wie in unserem Beispiel werden alle Arbeitsabläufe eine Mischung aus Ereignissen, Aufgaben und Abläufen enthalten.
 
In unserem nächsten Tutorial werden wir damit beginnen, Logik in unseren Workflow einzuführen. Wir werden Logik verwenden, um auf der Grundlage der Auswertung von Werten in unserem Datenmodell an verschiedene E-Mail-Empfänger zu senden.
PEX-Bericht: Die Macht der Prozessintelligenz
Demo anfordern

Demo anfordern

Erfahren Sie, wie führende Unternehmen ProcessMaker einsetzen, um ihre Abläufe durch Prozessautomatisierung zu rationalisieren.

Demo anfordern

Demo anfordern

Datenschutz-Update
Wir verwenden Cookies, um die Interaktion mit unserer Website und unseren Dienstleistungen einfach und sinnvoll zu gestalten. Cookies helfen uns, besser zu verstehen, wie unsere Website genutzt wird, und die Werbung entsprechend anzupassen.

Akzeptieren