{"id":1593,"date":"2016-01-27T13:20:42","date_gmt":"2016-01-27T12:20:42","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=1593"},"modified":"2023-07-24T11:18:23","modified_gmt":"2023-07-24T09:18:23","slug":"open-source-bpm-jbpm6-vs-camunda7","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/open-source-bpm-jbpm6-vs-camunda7\/","title":{"rendered":"Open Source BPM &#8211; jBPM6 vs Camunda7"},"content":{"rendered":"\n<p>Kilka tygodni temu mia\u0142em przyjemno\u015b\u0107 pracowa\u0107 z platform\u0105 BPM (ang. <em>Business Process Management<\/em>), pochodz\u0105c\u0105 ze stajni Red Hat\u2019a tj.: jBPM6. Z racji tego, \u017ce ju\u017c wcze\u015bniej pracowa\u0142em z mniej znanym, konkurencyjnym rozwi\u0105zaniem, tj.: Camunda7, postanowi\u0142em zbli\u017cy\u0107 te technologie do siebie, poniewa\u017c jestem zdania, \u017ce Camunda mo\u017ce sporo \u201enamiesza\u0107\u201d na rynku system\u00f3w BPM typu \u201eOpen Source\u201d?<\/p>\n\n\n\n<p>Por\u00f3wnanie jest moj\u0105 subiektywn\u0105 opini\u0105 wynikaj\u0105c\u0105 z pracy z powy\u017cszymi technologiami.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Przegl\u0105d <a href=\"http:\/\/www.jbpm.org\/\" rel=\"nofollow\" >jBPM6<\/a><\/h2>\n\n\n\n<p>Prac\u0119 z jBPM-em zacz\u0105\u0142em od uruchomienia obrazu Docker-a. Takie podej\u015bcie daje du\u017ce u\u0142atwienie osobom usi\u0142uj\u0105cym szybko pozna\u0107 platform\u0119 bez wnikania w kwesti\u0119 bazy danych i serwera aplikacyjnego. Po uruchomieniu \u015brodowiska mamy mo\u017cliwo\u015b\u0107 zalogowania si\u0119 do aplikacji \u201eWorkbench\u201d. Aplikacja ta stanowi element pracy zar\u00f3wno os\u00f3b technicznych, jak r\u00f3wnie\u017c u\u017cytkownik\u00f3w biznesowych. Nie wiem do ko\u0144ca czy takie po\u0142\u0105czenie by\u0142o dobrym pomys\u0142em, poniewa\u017c osobom nietechnicznym, interfejs u\u017cytkownika mo\u017ce wydawa\u0107 si\u0119 ma\u0142o intuicyjny i trudny do poruszania. Platforma kompleksowo zawiera funkcjonalno\u015bci zwi\u0105zane z modelowaniem, administrowaniem i zarz\u0105dzaniem procesami.<\/p>\n\n\n\n<p>Aplikacja umo\u017cliwia nam utworzenie projektu Git lub SVN (niestety nie uda\u0142o mi si\u0119 ;]). Za pomoc\u0105 edytora BPMN mo\u017cemy zamodelowa\u0107 proces, dodatkowo jeste\u015bmy w stanie utworzy\u0107 model danych lub zaimportowa\u0107 go z istniej\u0105cych klas Java. Edytor BPMN posiada wsparcie dla podstawowych komponent\u00f3w HTML oraz umo\u017cliwia wygenerowanie domy\u015blnych formularzy dla zada\u0144 typu \u201eUser Task\u201d. Niestety brak jest mo\u017cliwo\u015bci podpi\u0119cia zewn\u0119trznych formularzy np. JSF.<\/p>\n\n\n\n<p>Dobrym rozwi\u0105zaniem jest mo\u017cliwo\u015b\u0107 definiowania, dynamicznego menu w \u201eWorkbench\u201d. W tym celu mo\u017cemy u\u017cy\u0107 JavaScript, a nawet AngularJS. Du\u017cym minusem jest brak wsparcia dla \u201e<em>Responsive Web Design<\/em>\u201d.<\/p>\n\n\n\n<p>U\u017cytkownik biznesowy ma mo\u017cliwo\u015b\u0107 podgl\u0105du zada\u0144 oraz wykonywania akcji typu: <em>claim<\/em>, <em>accept<\/em>. Z dodatkowych opcji to: widok podgl\u0105du logu zmian, priorytetyzacja lub delegowanie zada\u0144.<\/p>\n\n\n\n<p>U\u017cytkownik administracyjny mo\u017ce zobaczy\u0107 podgl\u0105d stanu procesu.<\/p>\n\n\n\n<p>Do ciekawych funkcjonalno\u015bci nale\u017cy zaliczy\u0107 narz\u0119dzie do przeprowadzania symulacji proces\u00f3w, zgodne ze standardem <a href=\"http:\/\/www.bpsim.org\/\" rel=\"nofollow\" >BPSim<\/a>. Nie jest on mo\u017ce tak rozbudowany jak np. w IBM BPM, natomiast daje podstawowe mo\u017cliwo\u015bci przeprowadzenia symulacji procesu.<\/p>\n\n\n\n<p>Warto wspomnie\u0107 r\u00f3wnie\u017c o podstawowym narz\u0119dziu BAM (ang. <em>Business Activity Monitoring<\/em>). Dodatkowo istnieje mo\u017cliwo\u015b\u0107 \u0142atwej integracji z innym produktem Red Hat-a tj. <a href=\"http:\/\/www.dashbuilder.org\/\" rel=\"nofollow\" >Dashbuilder<\/a>, kt\u00f3ry daje ju\u017c bardziej zaawansowane opcje zwi\u0105zane ze statystykami, monitoringiem, itp.<\/p>\n\n\n\n<p>W trakcie pracy natrafi\u0142em na sporo problem\u00f3w z aplikacj\u0105, niekt\u00f3re rozwi\u0105zuj\u0105c za pomoc\u0105 zmiany przegl\u0105darki (Chrome -&gt; IE11). Z mojego punktu widzenia aplikacja sprawia wra\u017cenie mocno niedopracowanej.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Przegl\u0105d <a href=\"https:\/\/camunda.org\/\" rel=\"nofollow\" >Camunda7<\/a><\/h2>\n\n\n\n<p>Podobnie jak dla jBPM dostawca opisa\u0142 platform\u0119 obrazem Docker, dzi\u0119ki czemu mia\u0142em mo\u017cliwo\u015b\u0107 szybkiego postawienia \u015brodowiska.<\/p>\n\n\n\n<p>Camunda dostarcza nam trzy oddzielne aplikacje web-owe, tj.: Camunda Tasklist, Camunda Cockpit oraz Camunda Admin. Do tego dochodzi jeszcze odr\u0119bne narz\u0119dzie s\u0142u\u017c\u0105ce do modelowania, tj.: Camunda Modeler, dost\u0119pne jako aplikacja typu standalone lub web.<\/p>\n\n\n\n<p>Aplikacje s\u0105 intuicyjne, wygl\u0105daj\u0105 dobrze i nie sprawiaj\u0105 problem\u00f3w technicznych. Wyj\u0105tek stanowi modeler, kt\u00f3ry sprawia wra\u017cenie niedopracowanego, zawieraj\u0105cego b\u0142\u0119dy, np. podczas edycji p\u00f3l typu <em>properties<\/em>. Du\u017cym plusem jest wsparcie dla \u201e<em>Responsive Web Design<\/em>\u201d.<\/p>\n\n\n\n<p>Camunda Tasklist jest przeznaczona dla u\u017cytkownik\u00f3w biznesowych. Podobnie jak w jBPM, udost\u0119pnia opcje zwi\u0105zane z przegl\u0105dem zada\u0144 oraz startem proces\u00f3w. Fajn\u0105 opcj\u0105 jest mo\u017cliwo\u015b\u0107 tworzenia filtr\u00f3w, za pomoc\u0105 kt\u00f3rych u\u017cytkownik dokonuje personalizacji aplikacji. Camunda Tasklist wspiera cztery rodzaje formularzy dla zada\u0144, tj.: <em>embedded<\/em> \u2013 wbudowane w aplikacj\u0119 TaskList formularze oparte o HTML, <em>generated<\/em> \u2013 wygenerowane z XML na podstawie metadanych BPMN 2.0, <em>external<\/em> \u2013 skierowane do formularzy innej aplikacji np. napisanej w JSF oraz <em>generic<\/em> &#8211; &nbsp;wygenerowane na podstawie zmiennych procesowych.<\/p>\n\n\n\n<p>Camunda Cockpit skierowana jest do&nbsp;u\u017cytkownik\u00f3w technicznych. Istnieje mo\u017cliwo\u015b\u0107 podgl\u0105du definicji, instancji oraz stanu proces\u00f3w. Dodatkowo u\u017cytkownik ma mo\u017cliwo\u015b\u0107 podgl\u0105du logu w przypadku b\u0142\u0119du i ewentualnego ponowienia akcji. Za pomoc\u0105 <em>plugin extension<\/em> jeste\u015bmy w stanie rozbudowa\u0107 <em>tab menu<\/em>, np. dok\u0142adaj\u0105c zak\u0142adk\u0119 z linkiem do innej aplikacji lub z raportami.<\/p>\n\n\n\n<p>Camunda Admin udost\u0119pnia funkcjonalno\u015bci administratorom platformy, zwi\u0105zane z zarz\u0105dzaniem u\u017cytkownikami, grupami oraz autoryzacj\u0105 do poszczeg\u00f3lnych aplikacji. Dodatkowo istnieje mo\u017cliwo\u015b\u0107 zarz\u0105dzania definicjami, instancjami proces\u00f3w oraz zada\u0144 w kontek\u015bcie dost\u0119pu.<\/p>\n\n\n\n<p>Platforma Camunda BPM na chwil\u0119 obecn\u0105 nie dostarcza narz\u0119dzia typu BAM. Oczywi\u015bcie istnieje mo\u017cliwo\u015b\u0107 integracji np. z <a href=\"https:\/\/sii.pl\/blog\/2016\/04\/27\/numer-1-z-2-milionow-projektow-java-fenomen-elasticsearch-2\/\">Elasticsearch<\/a>\/Kibana, ale jest to dodatkowy narzut na technologi\u0119 i development.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Por\u00f3wnanie<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>&nbsp;<\/td><td><strong>jBPM<\/strong><\/td><td><strong>Camunda<\/strong><\/td><\/tr><tr><td>Narz\u0119dzie do modelowania (Web, Eclipse)<\/td><td>tak<\/td><td>tak<\/td><\/tr><tr><td>Wsparcie BPMN 2.0<\/td><td>tak<\/td><td>tak<\/td><\/tr><tr><td>Wsparcie CMMN 1.1<\/td><td>nie<\/td><td>tak<\/td><\/tr><tr><td>Wsparcie DMN 1.1<\/td><td>nie<\/td><td>tak<\/td><\/tr><tr><td>Integracja z Spring Framework<\/td><td>tak<\/td><td>tak<\/td><\/tr><tr><td>Integracja z Java EE, CDI<\/td><td>tak<\/td><td>tak<\/td><\/tr><tr><td>Wsparcia dla OSGi<\/td><td>tak<\/td><td>tak<\/td><\/tr><tr><td>Obraz dla Docker<\/td><td>tak<\/td><td>tak<\/td><\/tr><tr><td>Symulacje proces\u00f3w<\/td><td>tak<\/td><td>nie<\/td><\/tr><tr><td>BAM<\/td><td>tak<\/td><td>nie<\/td><\/tr><tr><td>Integracja z Java API<\/td><td>tak<\/td><td>tak<\/td><\/tr><tr><td>Integracja z Rest API<\/td><td>tak<\/td><td>tak<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Podsumowanie<\/h2>\n\n\n\n<p>Zaprezentowane powy\u017csze dwie platformy r\u00f3\u017cni\u0105 si\u0119 w znacznym stopniu swoj\u0105 wizj\u0105 rozwoju.<\/p>\n\n\n\n<p>Zgodnie z wizj\u0105 \u201eZero-Code\u201d, Red Hat stworzy\u0142 kompleksow\u0105, zintegrowan\u0105 platform\u0119, kt\u00f3ra ma by\u0107 dost\u0119pna dla u\u017cytkownika nietechnicznego. Dzi\u0119ki temu w jednym \u015brodowisku mo\u017ce by\u0107 wykonany pe\u0142ny cykl zwi\u0105zany z analiz\u0105, modelowaniem, zarz\u0105dzaniem, wdra\u017caniem i monitorowaniem proces\u00f3w biznesowych. Niesie to ze sob\u0105 pewne konsekwencje, jak np. uzale\u017cnienie si\u0119 do sprzedawcy (Red Hat) oraz s\u0142aba elastyczno\u015b\u0107 na dostosowanie rozwi\u0105zania do wymaga\u0144 korporacyjnych.<\/p>\n\n\n\n<p>Z drugiej strony Camunda kieruj\u0105c si\u0119 wizj\u0105 \u201eDeveloper-Friendliness\u201d, utworzy\u0142a profesjonaln\u0105, wydajn\u0105 platform\u0119, kt\u00f3rej zadaniem jest, jak najlepsza integracja ze \u015brodowiskiem klienta. Co prawda wymaga od zespo\u0142u deweloperskiego zintegrowania jej z innymi komponentami, w celu wype\u0142nienia luk funkcjonalnych, takich jak np. symulacje oraz BAM, ale tym samym potwierdza elastyczno\u015b\u0107 rozwi\u0105zania i niezale\u017cno\u015b\u0107 od dostawcy.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;1593&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;2&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( votes: 2)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Open Source BPM - jBPM6 vs Camunda7&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( votes: 2)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Kilka tygodni temu mia\u0142em przyjemno\u015b\u0107 pracowa\u0107 z platform\u0105 BPM (ang. Business Process Management), pochodz\u0105c\u0105 ze stajni Red Hat\u2019a tj.: jBPM6. &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/open-source-bpm-jbpm6-vs-camunda7\/\">Continued<\/a><\/p>\n","protected":false},"author":68,"featured_media":1844,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314],"tags":[256,255],"class_list":["post-1593","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","tag-camunda7","tag-jbpm6"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/01\/25_camunda_v2.jpg","category_names":["Development na twardo"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/1593"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/68"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=1593"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/1593\/revisions"}],"predecessor-version":[{"id":23052,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/1593\/revisions\/23052"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/1844"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=1593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=1593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=1593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}