Jest to plugin do Operatona, który przechwytuje rzucane eventy, tworzy z nich wiadomości i wysyła na kolejkę.
- wymagana minimalna wersja Operaton to 1.0.0
- należy dodać do pliku pom.xml naszego projektu (Operaton) następującą zależność (dependency pluginu musi znajdować się nad dependency operaton w pomie):
<dependencies>
<dependency>
<groupId>pl.beone</groupId>
<artifactId>operaton_event_handler</artifactId>
<version>${}</version>
</dependency>
</dependencies>- konfiguracja połączenia do RabbitMQ znajduje się w pliku application.yml, należy podać nazwę hosta, port, nazwę użytkownika, hasło oraz nazwę kolejki, poniżej domyślne dane:
denormalization:
rabbitmq:
host: rabbitmq
port: 5672
username: guest
password: guest
queue: queueEventHandler- istnieje możliwość filtrowania procesów tzn. jedynie wymienione po przecinku nazwy procesów będą wysyłane na kolejkę, w przykładzie poniżej jedynie procesy o nazwach MyProcess oraz YourProcess będą wysyłane, w przypadku braku ustawionej tej własności lub gdy wartość tej własności jest pusta, będą wysyłane wszystkie procesy:
denormalization:
process.include: MyProcess, YourProcess- propsy zostały przeniesione do pliku
operatoneventhandler.properties- ustawiamy je analogicznie do tego jak to jest przedstawione wyżej
- udostępnione endpointy:
POST /admin/reindex/, reindeksuje dane z bazy camundy do bazy denormalizacji dla wszystkich procesówPOST /admin/reindex/{definitionKey}, reindeksuje dane z bazy camundy do bazy denormalizacji dla procesu o podanym definitinonKeyPOST /admin/reindex/process-instance-id/{processInstanceId}, reindeksuje dane z bazy camundy do bazy denormalizacji dla procesu o podanym processInstanceId- przykładowy request:
POST http://nginx-test.apps.seod-d1.diag.pl/operaton/admin/reindex/leaveRequestProcess
- w przypadku powodzenia zostanie zwrócony kod odpowiedzi HTTP:
200 OK - aby korzystać z API potrzebujemy uprawnień admina (
ACTIVITI_ADMIN)
Można skonfigurować camundę tak aby przy uruchamianiu tworzone były wybrane tabele i kolumny zmiennych procesowych. Aby skorzystać z tej możliwości należy w katalogu resources utworzyć katalog initializeOperatonConfig, z którego następnie pobierane będą wszystkie pliki z rozszerzeniem json. Pliki te powinny mieć następującą strukturę:
[
{
"name": "nazwa_procesu",
"variables": [
{
"name": "zmienna_procesowa_1",
"type": "integer"
},
{
"name": "zmienna_procesowa_2",
"type": "string"
}
]
}
]Następnie operaton wyśle wiadomości na kolejkę do denormalizacji, która utworzy tabele operaton_nazwa_procesu oraz operaton_hi_nazwa_procesu, i w nich kolumny execution_id, process_id, zmienna_procesowa_1 oraz zmienna_procesowa_2.
Możliwe typy danych to:
- boolean
- short
- long
- double
- string
- integer
- date
- serializable
Przykładowy plik test.json:
[
{
"name": "test_process",
"variables": [
{
"name": "test_uuid",
"type": "string"
},
{
"name": "test_num",
"type": "integer"
},
{
"name": "isTest",
"type": "boolean"
},
{
"name": "testDate",
"type": "date"
}
]
},
{
"name": "test_process_2",
"variables": [
{
"name": "test_2_id",
"type": "long"
}
]
}
]