{"id":10659,"date":"2025-03-12T09:44:23","date_gmt":"2025-03-12T08:44:23","guid":{"rendered":"https:\/\/pomoc.comarch.pl\/cee\/640\/?post_type=ht_kb&#038;p=10659"},"modified":"2025-03-12T09:44:24","modified_gmt":"2025-03-12T08:44:24","slug":"wywolaj-aplikacje-w-tle-w-workflow","status":"publish","type":"ht_kb","link":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/wywolaj-aplikacje-w-tle-w-workflow\/","title":{"rendered":"Wywo\u0142aj aplikacje w tle w workflow"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Spis tre\u015bci<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Prze\u0142\u0105cznik Spisu Tre\u015bci\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/wywolaj-aplikacje-w-tle-w-workflow\/#Definicje_terminow\" >Definicje termin\u00f3w<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/wywolaj-aplikacje-w-tle-w-workflow\/#Definicja_dzialania\" >Definicja dzia\u0142ania<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/wywolaj-aplikacje-w-tle-w-workflow\/#Aplikacja_w_tle\" >Aplikacja w tle<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/wywolaj-aplikacje-w-tle-w-workflow\/#Przetwarzanie_zlecenia\" >Przetwarzanie zlecenia<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/wywolaj-aplikacje-w-tle-w-workflow\/#Opis_aplikacji\" >Opis aplikacji<\/a><\/li><\/ul><\/nav><\/div>\n<p>Definicja dzia\u0142ania mo\u017ce by\u0107 u\u017cyta do uruchomienia aplikacji dzia\u0142aj\u0105cej w tle jako zadanie przetwarzania. Aby to zrobi\u0107, parametry musz\u0105 by\u0107 opisane w obiekcie deweloperskim aplikacji dzia\u0142aj\u0105cej w tle. Nie wszystkie aplikacje spe\u0142niaj\u0105 te wymagania.<\/p>\n<p>Niniejszy dokument opisuje, w jaki spos\u00f3b mo\u017cna wywo\u0142a\u0107 aplikacj\u0119 dzia\u0142aj\u0105c\u0105 w tle za pomoc\u0105 aplikacji <em>Wywo\u0142aj aplikacje w tle w workflow,<\/em> nawet je\u015bli nie wszystkie parametry s\u0105 do tego opisane. Warunkiem wst\u0119pnym wywo\u0142ania jest to, \u017ce j\u0119zyk skryptowy u\u017cywany przez definicj\u0119 dzia\u0142ania obs\u0142uguje typy danych aplikacji dzia\u0142aj\u0105cej w tle.<\/p>\n<p>Wi\u0119cej informacji na temat sposobu wywo\u0142ywania aplikacji w definicjach dzia\u0142a\u0144 mo\u017cna znale\u017a\u0107 w dokumentacji <em>Definicje dzia\u0142a\u0144<\/em>.<\/p>\n<h3 id=\"definicje-terminow\" ><span class=\"ez-toc-section\" id=\"Definicje_terminow\"><\/span>Definicje termin\u00f3w<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4 id=\"definicja-dzialania\" ><span class=\"ez-toc-section\" id=\"Definicja_dzialania\"><\/span>Definicja dzia\u0142ania<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Definicja dzia\u0142ania jest szablonem dla dzia\u0142a\u0144 generowanych na jej podstawie. Je\u015bli definicja dzia\u0142ania jest aktywna, silnik workflow generuje nowe dzia\u0142anie, gdy wyst\u0105pi zarejestrowane zdarzenie, pod warunkiem spe\u0142nienia warunku przej\u015bcia. Definicje dzia\u0142a\u0144 s\u0105 niezale\u017cne od bazy danych OLTP i systemu, w kt\u00f3rym zosta\u0142y zarejestrowane, poniewa\u017c nie zawieraj\u0105 ani danych specyficznych dla systemu, ani danych specyficznych dla OLTP. Definicje dzia\u0142a\u0144 s\u0105 zapisywane w bazie danych repozytorium.<\/p>\n<h4 id=\"aplikacja-w-tle\" ><span class=\"ez-toc-section\" id=\"Aplikacja_w_tle\"><\/span>Aplikacja w tle<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Aplikacja dzia\u0142aj\u0105ca w tle to aplikacja, kt\u00f3ra jest wykonywana bez interakcji z u\u017cytkownikiem. Mo\u017ce zosta\u0107 otwarta przez zadanie przetwarzania, przez wywo\u0142anie CORBA lub przez inn\u0105 aplikacj\u0119.<\/p>\n<h4 id=\"przetwarzanie-zlecenia\" ><span class=\"ez-toc-section\" id=\"Przetwarzanie_zlecenia\"><\/span>Przetwarzanie zlecenia<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Zlecenie przetwarzania zawiera informacje niezb\u0119dne do op\u00f3\u017anionego wykonania aplikacji dzia\u0142aj\u0105cej w tle przez kolejk\u0119 przetwarzania.<\/p>\n<h3 id=\"opis-aplikacji\" ><span class=\"ez-toc-section\" id=\"Opis_aplikacji\"><\/span>Opis aplikacji<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Aplikacj\u0119 dzia\u0142aj\u0105c\u0105 w tle <em>Wywo\u0142aj aplikacje w tle w workflow<\/em> (<em>com.cisag.app.general.log.Activity2BatchJob<\/em>) definiuje si\u0119 jako aplikacj\u0119 do przetwarzania w definicji dzia\u0142ania na zak\u0142adce <em>Aplikacja<\/em>. Definicja dzia\u0142ania musi mie\u0107 wpis <em>Zlecenie przetwarzania<\/em> wybrane jako opracowuj\u0105cy u\u017cytkownik. Nale\u017cy zdefiniowa\u0107 parametry aplikacji dzia\u0142aj\u0105cej w tle.<\/p>\n<p>Ponadto nale\u017cy wprowadzi\u0107 parametry wywo\u0142ywanej aplikacji dzia\u0142aj\u0105cej w tle i ich warto\u015bci w deklaracjach definicji dzia\u0142a\u0144 jako <em>HashMap<\/em>. Wi\u0119cej informacji na ten temat mo\u017cna znale\u017a\u0107 w opisach parametr\u00f3w.<\/p>\n<p>Nale\u017cy r\u00f3wnie\u017c zdefiniowa\u0107 kolejk\u0119 przetwarzania za pomoc\u0105 <em>setJobQueue<\/em> i u\u017cytkownika za pomoc\u0105 <em>setJobUser<\/em> w deklaracjach, je\u015bli nie zosta\u0142y one zdefiniowane w aplikacji <em>Konfiguracja<\/em>.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Przyk\u0142ad w j\u0119zyku skryptowym systemu:<\/p>\n<p>setJobQueue(&#8222;JOBQUEUE01&#8221;);<\/p>\n<p>setJobUser(&#8222;MAX&#8221;);<\/div><\/section>\n<p>Aplikacja dzia\u0142aj\u0105ca w tle ma nast\u0119puj\u0105ce parametry:<\/p>\n<ul>\n<li><strong>Dzia\u0142anie<\/strong> \u2013 ten parametr s\u0142u\u017cy do wywo\u0142ywania okre\u015blonej akcji aplikacji dzia\u0142aj\u0105cej w tle. Akcje s\u0105 identyfikowane przez numer. Aby znale\u017a\u0107 prawid\u0142ow\u0105 akcj\u0119, mo\u017cna najpierw uruchomi\u0107 aplikacj\u0119 w tle, a nast\u0119pnie odczyta\u0107 akcj\u0119 w polu <em>Akcja<\/em> na zak\u0142adce <em>Zlecenie<\/em> w oknie dialogowym w\u0142a\u015bciwo\u015bci zlecenia przetwarzania. Je\u015bli warto\u015b\u0107 wynosi zero (0), mo\u017cna pomin\u0105\u0107 akcj\u0119. W przeciwnym razie nale\u017cy wprowadzi\u0107 wy\u015bwietlan\u0105 warto\u015b\u0107 jako parametr. Nale\u017cy upewni\u0107 si\u0119, \u017ce uruchamiana jest aplikacja dzia\u0142aj\u0105ca w tle w dok\u0142adnie tym samym kontek\u015bcie, w jakim b\u0119dzie ona p\u00f3\u017aniej wykonywana przez definicj\u0119 dzia\u0142ania. Na przyk\u0142ad generowanie faktury wykorzystuje r\u00f3\u017cne akcje, je\u015bli jest wywo\u0142ywane dla zam\u00f3wienia sprzeda\u017cy i zlecenia dostawy. Je\u015bli aplikacja dzia\u0142aj\u0105ca w tle ma kilka parametr\u00f3w tego samego typu danych, mo\u017cna wprowadzi\u0107 r\u00f3\u017cne warto\u015bci, aby u\u0142atwi\u0107 ich p\u00f3\u017aniejsze rozr\u00f3\u017cnienie w oknie dialogowym w\u0142a\u015bciwo\u015bci.<\/li>\n<li><strong>DetailGuid<\/strong> \u2013 je\u015bli aplikacja dzia\u0142aj\u0105ca w tle tworzy zlecenie w odniesieniu do elementu zlecenia, nale\u017cy wprowadzi\u0107 w tym parametrze identyfikator GUID elementu zlecenia, kt\u00f3ry ma zosta\u0107 przetworzony. Tego parametru nale\u017cy zawsze u\u017cywa\u0107 razem z parametrem <em>ObjectGuid<\/em>. W przypadku zdarzenia typu <em>Business Entity<\/em>, identyfikator GUID pozycji zlecenia znajduje si\u0119 w parametrze zdarzenia <em>object <\/em>(<em>object:guid<\/em>).<\/li>\n<li><strong>ObjectGuid<\/strong> \u2013 je\u015bli aplikacja dzia\u0142aj\u0105ca w tle tworzy zlecenie w odniesieniu do zlecenia, w tym parametrze nale\u017cy wprowadzi\u0107 identyfikator <em>GUID<\/em> zlecenia, kt\u00f3re ma zosta\u0107 przetworzone. W przypadku zdarzenia typu <em>Business Entity<\/em> identyfikator <em>GUID<\/em> zlecenia znajduje si\u0119 w parametrze zdarzenia <em>object<\/em> (<em>object:guid<\/em>). Je\u015bli zdarzenie zosta\u0142o wywo\u0142ane przez zmian\u0119 pozycji zam\u00f3wienia, identyfikator <em>GUID<\/em> zlecenia znajduje si\u0119 w parametrze zdarzenia <em>entity<\/em> (<em>parameters.entity:guid<\/em>).<\/li>\n<li><strong>ObjectOQL<\/strong> \u2013 je\u015bli aplikacj\u0105 dzia\u0142aj\u0105c\u0105 w tle jest tworzenie zlecenia z odniesieniem do wi\u0119cej ni\u017c jednego zam\u00f3wienia, mo\u017cna wprowadzi\u0107 instrukcj\u0119 OQL w tym parametrze, kt\u00f3ra zawiera identyfikatory <em>GUID<\/em> zam\u00f3wie\u0144, kt\u00f3re maj\u0105 by\u0107 przetwarzane jako warto\u015bci zwracane, takie jak zlecenia dostawy i prowizje w tym przyk\u0142adzie.<\/li>\n<\/ul>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">SELECT o:guid FROM com.cisag.app.sales.obj.ShippingOrder o JOIN com.cisag.app.sales.obj.PickingOrder po ON po:guid=o:pickingOrder JOIN com.cisag.app.sales.obj.PickingOrderType pot ON pot:guid = po:type WHERE po:number = '&#8221; + parameters.object:number + &#8222;&#8217; AND pot:code= '&#8221; + parameters.object-&gt;Type:code + &#8221;<\/p>\n<p>W przypadku wybrania dw\u00f3ch identyfikator\u00f3w <em>GUID<\/em> w instrukcji <em>SELECT<\/em>, pierwszy identyfikator <em>GUID<\/em> jest interpretowany jako identyfikator <em>GUID<\/em> zam\u00f3wienia, a drugi identyfikator <em>GUID<\/em> jako identyfikator <em>GUID<\/em> pozycji zam\u00f3wienia.<\/div><\/section>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Nie nale\u017cy u\u017cywa\u0107 tego parametru jednocze\u015bnie z parametrami <em>DetailGuid<\/em> i <em>ObjectGuid<\/em>.<\/div><\/section>\n<ul>\n<li><strong>Parametry<\/strong> \u2013 w tym parametrze u\u017cytkownik przekazuje aplikacji dzia\u0142aj\u0105cej w tle list\u0119 parametr\u00f3w i ich warto\u015bci. Parametry dla obiektu deweloperskiego aplikacji dzia\u0142aj\u0105cej w tle mo\u017cna znale\u017a\u0107 w aplikacji <em>Obiekty deweloperskie<\/em> w dolnej zak\u0142adce <em>Akcja <\/em>karty <em>Edytor<\/em>. Je\u015bli parametry nie s\u0105 opisane w obiekcie deweloperskim lub je\u015bli warto\u015bci, kt\u00f3re maj\u0105 zosta\u0107 przeniesione, nie s\u0105 oczywiste, np. dla parametru <em>Proces<\/em> tworzenia zam\u00f3wienia, mo\u017cna najpierw uruchomi\u0107 aplikacj\u0119 w tle, a nast\u0119pnie wywo\u0142a\u0107 okno dialogowe w\u0142a\u015bciwo\u015bci przetwarzanego zam\u00f3wienia. Tam mo\u017cna wy\u015bwietli\u0107 przeniesion\u0105 warto\u015b\u0107 w zak\u0142adce <em>Zlecenie<\/em> pod nag\u0142\u00f3wkiem <em>Parametry<\/em>. Parametry i ich warto\u015bci wprowadza si\u0119 w deklaracjach definicji dzia\u0142a\u0144 jako <em>HashMap<\/em>, jak pokazuje ten przyk\u0142ad w j\u0119zyku skryptowym systemu:<\/li>\n<\/ul>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"> var params as HashMap;<\/p>\n<p>function create()<\/p>\n<p>{<\/p>\n<p>params[&#8222;Process&#8221;]:=9;<\/p>\n<p>params[&#8222;SummaryLevel&#8221;]:=1;<\/p>\n<p>params[&#8222;Date&#8221;]:=today();<\/p>\n<p>}<\/p>\n<p>Nale\u017cy upewni\u0107 si\u0119, \u017ce lista parametr\u00f3w jest zadeklarowana poza funkcj\u0105 <em>create(),<\/em> aby mog\u0142a by\u0107 u\u017cywana w zak\u0142adce <em>Aplikacja<\/em>.<\/p>\n<p>W przypadku aplikacji dzia\u0142aj\u0105cych w tle, kt\u00f3rych parametry nie s\u0105 zadeklarowane w obiekcie deweloperskim, mo\u017cna r\u00f3wnie\u017c znale\u017a\u0107 u\u017cywane parametry w oknie dialogowym w\u0142a\u015bciwo\u015bci zlecenia przetwarzania. Poniewa\u017c aplikacja dzia\u0142aj\u0105ca w tle jest zawsze wykonywana z ustawieniami wyj\u015bciowymi u\u017cytkownika, w imieniu kt\u00f3rego uruchomiono zlecenie przetwarzania, nie nale\u017cy u\u017cywa\u0107 \u017cadnych parametr\u00f3w wymienionych w sekcji <em>OutputOptions<\/em>. Podczas tworzenia zadania nale\u017cy r\u00f3wnie\u017c zignorowa\u0107 parametry techniczne, takie jak <em>BatchRun<\/em>, <em>Orders<\/em> i <em>ParallelComputing<\/em>. Je\u015bli zar\u00f3wno <em>Date<\/em>, jak i <em>DocumentDate<\/em> s\u0105 okre\u015blone dla utworzenia zadania w oknie dialogowym w\u0142a\u015bciwo\u015bci, nale\u017cy zignorowa\u0107 <em>DocumentDate<\/em> i okre\u015bli\u0107 tylko <em>Date<\/em>. <\/div><\/section>\n<ul>\n<li><strong>ProcessParameters<\/strong> \u2013 te parametry kontroluj\u0105, kt\u00f3ra aplikacja w tle jest wywo\u0142ywana. Nale\u017cy wprowadzi\u0107 nazw\u0119 techniczn\u0105 aplikacji jako ci\u0105g znak\u00f3w bez spacji, jak w poni\u017cszym przyk\u0142adzie:<\/li>\n<\/ul>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"> Application=com.cisag.app.sales.invoice.log.Invoicing<\/div><\/section>\n","protected":false},"author":27,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"class_list":["post-10659","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-definicje-workflow"],"_links":{"self":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/10659","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb"}],"about":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/comments?post=10659"}],"version-history":[{"count":3,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/10659\/revisions"}],"predecessor-version":[{"id":26724,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/10659\/revisions\/26724"}],"wp:attachment":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/media?parent=10659"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}