Camunda 8 - czym się różni od wersji 7 i jak ją uruchomić
Camunda - wersja 7
Camundę w wersji siódmej można nadal pobrać ze strony - link. Ta wersja będzie utrzymywana i rozwijana przez co najmniej kolejnych pięć lat. Wersję 7 możemy pobrać w kilku edycjach:
- [Community Edition ] Camunda Platform 7 Run - do zainstalowania na działającym już serwerze Tomcat
- [Community Edition ] Camunda Platform 7 + Tomcat - instalacja zwiera Tomcat wraz z modułem Camundy
- [Community Edition ] Camunda Platform 7 Enterprise Edition - komercyjna wersja Camundy
Wersja Community Edition zawiera Tasklist oraz Cockpit Basic + silnik wykonywania procesów BPMN i DMN. Camunda w wersji 7 może np. zostać osadzona jako plik JAR w aplikacji Java [na etapie wczesnego rozwoju w wersji 8]. Domyślną bazą danych jest H2 którą w środowisku produkcyjnym można zamienić na inną relacyjną bazę danych.
Camunda - wersja 8
Camunda w wersji 8 nie jest kontunuacja wersji siódmej. To zupełnie inny produkt - choć oczywiście bardzo podobny do poprzedniego, ta sama idea i podobna logika [inna architektura na poziomie oprogramowania]. W Camunda Platform 8 domyślnym środowiskiem jest wersja SaaS - to był główny motywator napisania nowej edycji Camundy. Można tam tworzyć klastry gdzie "silnikami przepływów pracy" jest produkt nazwany "Zeebe". Camunda w wersji 8 jako bazę danych wykorzystuje Elasticsearch.
Camundę 8 mamy w dwóch edycjach:
- Camunda Platform 8 Self-Managed - kontener Docker lub Kubernetes
- Camunda Platform 8 SaaS
Architektura Camundy w wersji 8 wygląda następująco:
Komponenty oznaczone niebieskim kolorem są komponentami komercyjnymi. Choć wersja "Self-Managed" którą można pobrać zawiera je, producent jasno określa że nie możesz ich wykorzystywać w środowisku produkcyjnym: "If you want to put these components into production, you will need to buy a license (via enterprise subscription) from Camunda".
Komponenty oznaczone zielonymi paskami to komponenty na licencji "source-available" - możesz ich używać w produkcyjnej wersji bez opłat [to jest silnik przepływów, Zebe, oraz baza danych instalacji - Elasticsearch]. Co więcej, Camundę w wersji 8 możesz pobrać jako kontenery Docker lub Kubernetes [jedyne opcje na oficjalnej stronie pobierania Camundy w wersji 8] lub jako komponenty do instalacji bezpośrednio w systemie operacyjnym - do pobrania tutaj.
Taka Camunda, "Self-Managed", nie posiada też zarządzania użytkownikami i ich uprawnieniami - mogło to być przydatne jeśli firma wykorzystywała moduł Tasklists i formularze. Instalacja Camundy 8, "Self-Managed" w wersji "source-available" ma zatem póki co niewielki sens. W praktyce jest to tylko demo produktu.
Przetwarzanie strumieni danych
Dane, dane są wszędzie… wszyscy korzystamy intensywnie z różnych cyfrowych usług i w rezultacie coraz więcej serwisów produkuje coraz większe ilości danych. Informacje muszą szybko dotrzeć do właściwych odbiorców, muszą być błyskawicznie przetworzone lub wzbogacone, zdarzenia w jednym systemie powodują wyzwolenie reakcji w innym miejscu. W „czasie rzeczywistym” – co oznacza z minimalnym opóźnieniem.
Kiedy pojawia się dużo danych z jednego lub wielu systemów, automatycznie stajemy przed problemem zapisu tych informacji, ich interpretacji i prezentacji wyników. Jeśli słyszysz o systemach do przetwarzania „strumieni danych”, zwykle problem zapisu dużej ilości danych jest wymieniany jako główny powód do przejścia z tradycyjnych baz danych do platform strumieniowego przetwarzania danych. Ale to nie jest prawda. „Tradycyjne bazy” potrafią przyjąć miliony rekordów w sekundzie (właściwie górny limit nie istnieje). Masz więcej danych?
To co jest prawdziwym wyzwaniem, to dystrybucja danych (także ich bezpieczne przechowanie), wzbogacenie i aktualizacja, odczyt w różnych systemach.
Jak odbywa się przetwarzanie strumieni danych?
System A wykonuje jakąś czynność i rezultatem tej czynności jest informacja. System B bazuje na tych danych, by dostarczyć informację dla użytkownika tego systemu lub przesłać ją do innego systemu. Dla przypomnienia – dzisiaj procesy obsługiwane są przez systemy, które mają budowę modułową, jak taśma produkcyjna w fabryce. Bardzo rzadko jest to wszystkorobiący kombajn.
System A non-stop produkuje więc dane, to jest nasz ‘strumień danych’. System B z różnych przyczyn nie odbiera tych danych bezpośrednio. Po pierwsze nie potrafi. Nie jest tak zaawansowany, by sobie z tym poradzić. Po drugie często potrzebuje danych, które są przetworzone (dane muszą być zagregowane, dołączone inne informacje, niepotrzebne informacje usunięte…). Wymień inne powody.
I tutaj pojawia się pośrednik – „platforma przetwarzania strumieniowego”. Coś, co będzie w stanie odebrać dane, które napływają z systemu A i udostępnić je po przetworzeniu systemowi B. Najczęściej tą platformą jest Kafka. Ale są też inne – na chmurce i takie, które można mieć u siebie. Są też rozwiązania, które jako takie nie służą do odbierania informacji i ich udostępniania, ale zajmują się przetwarzaniem informacji i ich publikacją do platform - skąd mogą być one pobrane przez systemy (np. Apache Flink).

Pentaho - praca z datami
Jak odczytywać daty, konwertować do innego formatu i inne operacje na datach w Pentaho Kettle
Odczyt dat i ich konwersja sprawia wiele problemów niedoświadczonym użytkownikom. Bez zbędnej gadaniny - przejdźmy prosto do tematu.
Odczyt daty
Przy czytaniu plików (Tekstowe, pliki Excela) daty w kolumnie mogą mieć jeden z przykładowych formatów (tylko mała próbka jak mogą być one zapisane):
2023-10-26
26/10/2023
10/26/23 14:15
26/Oct/23 5:43 AM
Często krok odczytujący plik, np. "Text file input" potrafi automatycznie, poprawnie zinterpretować format daty i zaproponować właściwy w opcjach "Format". Czasami jednak musimy ręcznie wstawić tam właściwy. Np. jeśli nasze daty zapisane są w formacie "2023-10-26", w polu "Format" wpisujemy maskę "yyyy-MM-dd". Upewnij się że odczytywana data ma typ danych "Date" - jeśli będzie to "String", nie będziesz mógł użyć takiej informacji jako daty w następnych krokach.
Amerykański zapis daty jest często "dziwaczny" i nie dość że miesiąc występuje tam na początku, często zapisany jest słownie skrótem lub pełną nazwą miesiąca. Dodatkowo nie rzadko godzina występuje w formacie dwunastogodzinnym z następującą po nim określeniu czy chodzi o rano czy popołudnie; AM, PM. I tak gdybyśmy chcieli odczytać datę "26/Oct/23 05:29 AM" musimy użyć maski "dd/MMM/yy h:mm a".
Uwaga, powyższa maska może nie zadziałać jeśli masz system operacyjny w polskiej wersji. Popularne formaty dat zostały wymienione w tym dokumencie Pentaho: https://help.hitachivantara.com/Documentation/Pentaho/9.3/Products/Common_Formats

Apache Flink - przetwarzanie danych
Domyślnym sposobem tworzenia aplikacji Apache Flink jest użycie Flink SQL. Ułatwia on tworzenie aplikacji przetwarzania strumieniowego przy użyciu standardowego SQL. Łatwo jest nauczyć się Flink, jeśli kiedykolwiek pracowałeś z bazą danych lub systemem podobnym do SQL, zgodnym z ANSI-SQL 2011.
Podobnie jak w przypadku wszystkich silników SQL, zapytania Flink działają na szczycie tabel. Różnią się one jednak od tradycyjnej bazy danych, ponieważ Flink nie zarządza danymi składowanymi w statycznych tabelach; zamiast tego jego zapytania działają w sposób ciągły na danych zewnętrznych (z tabel baz danych lub plików powstają tabele dynamiczne w programie Flink a po przetworzeniu danych mogą być z powrotem zapisane do tradycyjnych tabel baz danych i do plików).
Potoki przetwarzania danych Flink zaczynają się od danych źródłowych. Dane źródłowe tworzą wiersze obsługiwane podczas wykonywania zapytania; są to dynamiczne tabele Flink, do których odwołuje się klauzula FROM zapytania. Mogą to być topiki Kafki, bazy danych, systemy plików lub dowolny inny system z którego Flink wie jak korzystać.
Zanim zaczniesz czytać dalej, upewnij się że przeczytałe(a)ś wcześniejsze artykuły jak zainstalować Apache Flink [uruchomienie-apache-flink-w-windows] i jak utworzyć pierwszą aplikację w tym środowisku [pierwsza-transformacja-w-apache-flink]
Raz jeszcze: tabele dynamiczne Flink nie są tabelami baz danych - powstają one poprzez odczytanie tabel baz danych [np MySQL, Oracle], plików [np. CSV] lub pochodzą z innych źródeł [np. Kafka]. Flink używa swoich własnych tabel - przeczytaj o nich więcej na stronie Apache Flink