<jupyter_start><jupyter_text>BPMN Workflow (Microservices)----------------------------------------------![](images/Microservices-BPMN.png)- - -Die [Business Process Model and Notation](https://de.wikipedia.org/wiki/Business_Process_Model_and_Notation) (BPMN, deutsch Geschäftsprozessmodell und -notation) ist eine grafische Spezifikationssprache in der Wirtschaftsinformatik und im Prozessmanagement. Sie stellt Symbole zur Verfügung, mit denen Fach-, Methoden- und Informatikspezialisten Geschäftsprozesse und Arbeitsabläufe modellieren und dokumentieren können.[Camunda BPM](https://camunda.com/de/) ist ein in Java geschriebenes freies Workflow-Management-System, mit dem Geschäftsprozesse in BPMN 2.0 definiert und ausgeführt werden können.Das nachfolgende BPMN Beispiel basiert auf dem Blog Eintrag [Use Camunda without touching Java and get an easy-to-use REST-based orchestration and workflow engine](https://blog.bernd-ruecker.com/use-camunda-without-touching-java-and-get-an-easy-to-use-rest-based-orchestration-and-workflow-7bdf25ac198e) von <NAME>.- - -Das Beispiel besteht aus folgenen Microservices* Einer BPMN **Workflow Engine** (Camunda) mit einen Prozess zur Freigabe von Rechnungen.* Ein **Frontend** in HTML und JS implementiert zum starten des obigen Prozesses.* Ein **Backend** zum Verbuchen der Rechnungen implementiert in Java.<jupyter_code>! ./kubectl apply -f https://raw.githubusercontent.com/mc-b/misegr/master/bpmn/bpmn-backend.yaml
! ./kubectl apply -f https://raw.githubusercontent.com/mc-b/misegr/master/bpmn/bpmn-frontend.yaml
! ./kubectl apply -f https://raw.githubusercontent.com/mc-b/misegr/master/bpmn/camunda.yaml<jupyter_output><empty_output><jupyter_text>- - - Nach dem Starten der Microservices müssen wir den BPMN Prozess in der Workflow Engine veröffentlichen.<jupyter_code>! wget https://raw.githubusercontent.com/mc-b/bpmn-tutorial/master/RechnungStep3.bpmn
! curl -w "\n" -H "Accept: application/json" -F "deployment-name=rechnung" -F "enable-duplicate-filtering=true" -F "deploy-changed-only=true" -F "RechnungStep3.bpmn=@RechnungStep3.bpmn" http://camunda:8080/engine-rest/deployment/create<jupyter_output><empty_output><jupyter_text>- - -Nun können wir neue Rechnungen über das Frontend erfassen und diese in der Workflow Engine anschauen. Die URLs sind wie folgt:<jupyter_code>! echo "BPMN Workflow Engine: https://ip cluster/camunda     # User/Password: <PASSWORD>"
! echo "Frontend            : https://ip cluster/frontend/"<jupyter_output><empty_output><jupyter_text>Im `Cockpit` sollte unter `Process Definitions` ein Prozess `RechnungStep3` ersichtlich sein. Fehlt dieser, den Befehl oben für die Veröffentlichung des Prozesses nochmals ausführen.Mittels dem Frontend oder nachfolgenden Befehl können wir diesen Prozess starten. Der gestartete Prozess ist dann unter `Tasklist` ersichtlich.<jupyter_code>%%bash
curl \
-H "Content-Type: application/json" \
-X POST \
-d '{ "variables": { "rnr": {"value": "123", "type": "long"}, "rbetrag": {"value": "200.00", "type": "String"} } }' \
http://camunda:8080/engine-rest/process-definition/key/RechnungStep3/start<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1279439847231063, 'fraction_numerical': 0.009229789942711649, 'mean_word_length': 5.1267056530214425, 'pattern_counts': {'":': 7, '<': 19, '<?xml version=': 0, '>': 19, 'https://': 9, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '359546', 'license': 'Apache-2.0', 'n_tokens_mistral': 1085, 'n_tokens_neox': 1068, 'n_words': 260, 'path': 'data/mlg/Microservices-BPMN-microk8s.ipynb', 'repo_name': 'mc-b/mlg', 'size': '3142'}