{"id":9701,"date":"2025-05-30T10:34:04","date_gmt":"2025-05-30T08:34:04","guid":{"rendered":"https:\/\/pomoc.comarch.pl\/cee\/?post_type=ht_kb&#038;p=9701"},"modified":"2025-06-04T08:42:44","modified_gmt":"2025-06-04T06:42:44","slug":"podrecznik-referencyjny-wskazniki","status":"publish","type":"ht_kb","link":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/","title":{"rendered":"Podr\u0119cznik referencyjny: Wska\u017aniki"},"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\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/#Wprowadzenie\" >Wprowadzenie<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/#Grupa_docelowa\" >Grupa docelowa<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/#Opracowanie_wskaznikow\" >Opracowanie wska\u017anik\u00f3w<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/#Tworzenie_obiektu_deweloperskeigo_XML_typu_Hook_contract\" >Tworzenie obiektu deweloperskeigo XML typu Hook contract<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/#Tworzenie_wskaznika\" >Tworzenie wska\u017anika<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/#Interfejs_dla_wskaznika_liczbowego\" >Interfejs dla wska\u017anika liczbowego<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/#Interfejs_wskaznika_statusu\" >Interfejs wska\u017anika statusu<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/#Implementowanie_hook_contract\" >Implementowanie hook contract<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/#Rejestrowanie_wskaznika\" >Rejestrowanie wska\u017anika<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/#Testowanie_wskaznika\" >Testowanie wska\u017anika<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/#Przyklad\" >Przyk\u0142ad<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/podrecznik-referencyjny-wskazniki\/#Korzystanie_z_CisSystemManager\" >Korzystanie z CisSystemManager<\/a><\/li><\/ul><\/nav><\/div>\n<h3 id=\"wprowadzenie\" ><span class=\"ez-toc-section\" id=\"Wprowadzenie\"><\/span>Wprowadzenie<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Wska\u017aniki mog\u0105 by\u0107 u\u017cywane do monitorowania kluczowych danych technicznych i biznesowych systemu. Wska\u017aniki biznesowe s\u0105 dostarczane jako wska\u017aniki dynamiczne przy u\u017cyciu Workflow. Jednak nie wszystkie wymagania mog\u0105 by\u0107 mapowane za pomoc\u0105 wska\u017anik\u00f3w dynamicznych. Wymagania mo\u017cna spe\u0142ni\u0107 za pomoc\u0105 indywidualnie zaprogramowanych wska\u017anik\u00f3w. W artykule opisano podstawowe procedury implementacji wska\u017anika i\u00a0 instrukcje dotycz\u0105ce korzystania z odpowiedniego interfejsu API, kt\u00f3ry jest udost\u0119pniany w tym celu.<\/p>\n<p>Dodatkowo, zalecanym jest zapoznanie si\u0119 z artyku\u0142em <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/definicje-rozwoj-oprogramowania\/\">Definicje Rozw\u00f3j oprogramowania<\/a><\/em>.<\/p>\n<h3 id=\"grupa-docelowa\" ><span class=\"ez-toc-section\" id=\"Grupa_docelowa\"><\/span>Grupa docelowa<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>programista aplikacji<\/li>\n<\/ul>\n<h3 id=\"opracowanie-wskaznikow\" ><span class=\"ez-toc-section\" id=\"Opracowanie_wskaznikow\"><\/span>Opracowanie wska\u017anik\u00f3w<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Wska\u017aniki s\u0105 tworzone w oparciu o technologi\u0119 interfejsu hook:<\/p>\n<ul>\n<li>implementacja hook contract jako obiektu deweloperskiego<\/li>\n<li>implementacja hooka hook contract w postaci kodu Java<\/li>\n<li>rejestracja jednego lub wi\u0119cej wska\u017anik\u00f3w zaimplementowanych w implementacji hooka.<\/li>\n<\/ul>\n<h4 id=\"tworzenie-obiektu-deweloperskeigo-xml-typu-hook-contract\" ><span class=\"ez-toc-section\" id=\"Tworzenie_obiektu_deweloperskeigo_XML_typu_Hook_contract\"><\/span>Tworzenie obiektu deweloperskeigo XML typu <em>Hook contract<\/em><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Podstawowym warunkiem utworzenia w pe\u0142ni zaimplementowanego wska\u017anika jest przygotowanie obiektu deweloperskiego typu <em>Hook Contract<\/em>\u00a0z podtypem <em>HOOK_IMPLEMENTATION<\/em>.<\/p>\n<p>Element XML <em>&lt;contract&gt;<\/em> tego obiektu deweloperskiego musi odnosi\u0107 si\u0119 do nast\u0119puj\u0105cej definicji hooka:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">com.cisag.pgm.appserver.Server<br \/>\n<\/code><\/p>\n<p data-start=\"320\" data-end=\"415\">Nast\u0119pnie nale\u017cy zarejestrowa\u0107 odpowiedni interfejs oraz jego implementacj\u0119 dla danego hooka.<\/p>\n<p data-start=\"417\" data-end=\"579\">Je\u015bli wska\u017anik ma by\u0107 dost\u0119pny dla ka\u017cdej bazy danych OLTP, to w elemencie XML <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;hook&gt;<\/code><code data-start=\"520\" data-end=\"528\"><\/code> nale\u017cy umie\u015bci\u0107 element <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;interface&gt;<\/code>\u00a0z warto\u015bci\u0105:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">com.cisag.pgm.services.indicator.hook.OLTPIndicatorHook<br \/>\n<\/code><\/p>\n<p>Je\u015bli wska\u017anik jest dost\u0119pny tylko dla bazy repozytorium, nale\u017cy u\u017cy\u0107 nast\u0119puj\u0105cego interfejsu dla hooka:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">com.cisag.pgm.services.indicator.hook.RepositoryIndicatorHook<br \/>\n<\/code><\/p>\n<p>W jednej implementacji hook contract mo\u017cna zaimplementowa\u0107 zar\u00f3wno <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">OLTPIndicatorHook<\/code>, jak i <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">RepositoryIndicatorHook<\/code>\u00a0\u2013 w zale\u017cno\u015bci od potrzeb systemowych.<\/p>\n<p>Szczeg\u00f3\u0142owy opis struktury element\u00f3w XML dla tego typu obiekt\u00f3w deweloperskich znajduje si\u0119 w artykule <em><a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/obiekty-deweloperskie\/\">Obiekty deweloperskie<\/a><\/em>.<\/p>\n<h4 id=\"tworzenie-wskaznika\" ><span class=\"ez-toc-section\" id=\"Tworzenie_wskaznika\"><\/span>Tworzenie wska\u017anika<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p data-start=\"0\" data-end=\"203\">Mo\u017cna udost\u0119pnia\u0107 r\u00f3\u017cne typy wska\u017anik\u00f3w. W przypadku dw\u00f3ch z nich wymagana jest klasa pomocnicza, kt\u00f3ra dostarcza warto\u015bci wska\u017anik\u00f3w. Klasy pomocnicze s\u0105 wymagane dla nast\u0119puj\u0105cych typ\u00f3w wska\u017anik\u00f3w:<\/p>\n<ul data-start=\"205\" data-end=\"295\">\n<li data-start=\"205\" data-end=\"249\">\n<p data-start=\"207\" data-end=\"249\">Wska\u017aniki liczbowy<\/p>\n<\/li>\n<li data-start=\"250\" data-end=\"295\">\n<p data-start=\"252\" data-end=\"295\">Wska\u017aniki statusu<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"297\" data-end=\"455\">Podczas pobierania warto\u015bci wska\u017anika dla wska\u017anika typu OLTP, zgodnie z przyj\u0119t\u0105 praktyk\u0105, musi by\u0107 otwarta transakcja dla odpowiedniej bazy danych OLTP.<\/p>\n<p data-start=\"457\" data-end=\"584\" data-is-last-node=\"\" data-is-only-node=\"\">W dalszej cz\u0119\u015bci opisane s\u0105 interfejsy przeznaczone dla klas pomocniczych s\u0142u\u017c\u0105cych do dostarczania danych dla tych wska\u017anik\u00f3w.<\/p>\n<h5 data-start=\"457\" data-end=\"584\" id=\"interfejs-dla-wskaznika-liczbowego\" ><span class=\"ez-toc-section\" id=\"Interfejs_dla_wskaznika_liczbowego\"><\/span>Interfejs dla wska\u017anika liczbowego<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>W przypadku wska\u017anika liczbowego nale\u017cy zapewni\u0107 logik\u0119, kt\u00f3ra oblicza warto\u015b\u0107 wska\u017anika. Aby obliczy\u0107 warto\u015b\u0107, nale\u017cy zaimplementowa\u0107 nast\u0119puj\u0105cy interfejs:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">interface com.cisag.pgm.services.indicator.ext.NumberIndicator\npublic CisDecimal getValue();\n}<\/pre>\n<p>Metoda <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">getValue()<\/code> zwraca warto\u015b\u0107 liczbow\u0105 wska\u017anika. U\u017cytkownik okre\u015bla jednostk\u0119 wska\u017anika podczas rejestracji.<\/p>\n<h5 id=\"interfejs-wskaznika-statusu\" ><span class=\"ez-toc-section\" id=\"Interfejs_wskaznika_statusu\"><\/span>Interfejs wska\u017anika statusu<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Dla wska\u017anika statusu nale\u017cy dostarczy\u0107 logik\u0119, kt\u00f3ra oblicza jego warto\u015b\u0107 statusu. Aby obliczy\u0107 t\u0119 warto\u015b\u0107, nale\u017cy zaimplementowa\u0107 nast\u0119puj\u0105cy interfejs:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">interface com.cisag.pgm.services.indicator.ext.StateIndicator {\npublic StateIndicatorState getValue();\n}\n<\/pre>\n<p>Metoda <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">getValue()<\/code> zwraca status wska\u017anika jako kontener typu <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">StateIndicatorState<\/code>. Kontener <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">StateIndicatorState<\/code> sk\u0142ada si\u0119 z dw\u00f3ch metod getter:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">public String getState(){\nreturn state;\n}<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">public String getDescription(){\nreturn description;\n}<\/pre>\n<p>Metoda <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">getState()<\/code> zwraca reprezentacj\u0119 statusu jako ci\u0105g znak\u00f3w, metoda<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">getDescription()<\/code> zwraca opis statusu jako ci\u0105g znak\u00f3w.<\/p>\n<h4 id=\"implementowanie-hook-contract\" ><span class=\"ez-toc-section\" id=\"Implementowanie_hook_contract\"><\/span>Implementowanie hook contract<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Je\u015bli wska\u017anik ma by\u0107 dost\u0119pny dla ka\u017cdej bazy danych OLTP, nale\u017cy zaimplementowa\u0107 nast\u0119puj\u0105cy interfejs:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">com.cisag.pgm.services.indicator.hook.OLTPIndicatorHook<br \/>\n<\/code><\/p>\n<p>Je\u015bli wska\u017anik ma by\u0107 dostarczony dla bazy repozytorium, nale\u017cy zaimplementowa\u0107 nast\u0119puj\u0105cy interfejs:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">com.cisag.pgm.services.indicator.hook.RepositoryIndicatorHook<br \/>\n<\/code><\/p>\n<p>Ka\u017cdy z interfejs\u00f3w ma nast\u0119puj\u0105c\u0105 metod\u0119:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">public void initialise(IndicatorRegistry registry).<br \/>\n<\/code><\/p>\n<p>Poszczeg\u00f3lne wska\u017aniki mog\u0105 by\u0107 rejestrowane w tej metodzie.<\/p>\n<h4 id=\"rejestrowanie-wskaznika\" ><span class=\"ez-toc-section\" id=\"Rejestrowanie_wskaznika\"><\/span>Rejestrowanie wska\u017anika<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Utworzony wska\u017anik musi zosta\u0107 zarejestrowany w implementacji hook contract. Rejestracja odbywa si\u0119 w metodzie <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">initialise(IndicatorRegistry registry)<\/code>. Wska\u017aniki s\u0105 rejestrowane w klasie <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">com.cisag.pgm.services.indicator.hook.IndicatorRegistry<\/code>.<br \/>\nKlasa <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">IndicatorRegistry<\/code> posiada nast\u0119puj\u0105ce metody rejestracji wska\u017anik\u00f3w:<\/p>\n<ul>\n<li>dla wska\u017anika agregacyjnego:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">public void registerAggregatorIndicator(\nString name,\nString description,\nDatatype datatype,\nString unit);<\/pre>\n<ul>\n<li><span style=\"color: initial;\">dla wska\u017anika liczbowego:<\/span><\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">public void registerNumberIndicator(\nString name,\nString description,\nNumberIndicator indicator,\nString unit);<\/pre>\n<ul>\n<li>dla wska\u017anika licznikwoego:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">public void registerCounterIndicator(\nString name,\nString description);<\/pre>\n<ul>\n<li>dla wska\u017anika statusu:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">public void registerStateIndicator(\nString name,\nString description,\nStateIndicator indicator);<\/pre>\n<table style=\"border-collapse: collapse; width: 100%; height: 418px;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Parametr<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Opis<\/td>\n<\/tr>\n<tr style=\"height: 116px;\">\n<td style=\"width: 50%; height: 116px; border-style: outset;\">name<\/td>\n<td style=\"width: 50%; height: 116px; border-style: outset;\">Parametr <em>name<\/em> musi zawiera\u0107 w pe\u0142ni kwalifikowan\u0105 nazw\u0119 wska\u017anika, sk\u0142adaj\u0105c\u0105 si\u0119 z przestrzeni nazw oraz skr\u00f3conej nazwy wska\u017anika. Nale\u017cy przestrzega\u0107 konwencji nazewnictwa opisanych w artykule <a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/wprowadzenie-wskazniki\/\"><em>Wprowadzenie: Wska\u017aniki<\/em><\/a>.<\/td>\n<\/tr>\n<tr style=\"height: 140px;\">\n<td style=\"width: 50%; height: 140px; border-style: outset;\">description<\/td>\n<td style=\"width: 50%; height: 140px; border-style: outset;\">Parametr <em>description<\/em> powinien opisywa\u0107 znaczenie wska\u017anika. Opis nie obs\u0142uguje wersji wieloj\u0119zycznych \u2013 mo\u017cna go poda\u0107 tylko w jednym j\u0119zyku. Powinien mie\u0107 maksymalnie 100 znak\u00f3w i \u2013 w przypadku rozwi\u0105za\u0144 mi\u0119dzynarodowych \u2013 by\u0107 zapisany w j\u0119zyku angielskim.<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"width: 50%; height: 46px; border-style: outset;\">datatype<\/td>\n<td style=\"width: 50%; height: 46px; border-style: outset;\">Parametr <em>datatype<\/em> okre\u015bla typ danych wska\u017anika agregacji.<\/td>\n<\/tr>\n<tr style=\"height: 70px;\">\n<td style=\"width: 50%; height: 70px; border-style: outset;\">indicator<\/td>\n<td style=\"width: 50%; height: 70px; border-style: outset;\">Za pomoc\u0105 parametru <em>indicator<\/em> przekazywany jest obiekt, kt\u00f3ry oblicza warto\u015b\u0107 wska\u017anika liczbowego lub wska\u017anika statusu.<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">unit<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">Parametr <em>unit<\/em> oznacza jednostk\u0119 wska\u017anika. Jednostka r\u00f3wnie\u017c nie obs\u0142uguje wielu j\u0119zyk\u00f3w \u2013 mo\u017ce by\u0107 podana tylko w jednym j\u0119zyku.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4 id=\"testowanie-wskaznika\" ><span class=\"ez-toc-section\" id=\"Testowanie_wskaznika\"><\/span>Testowanie wska\u017anika<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Wska\u017aniki mo\u017cna otworzy\u0107 i przetestowa\u0107 w aplikacji <em>Wy\u015bwietl wska\u017aniki<\/em>.<\/p>\n<p>Nale\u017cy upewni\u0107 si\u0119, \u017ce plik XML z implementacj\u0105 hook contract znajduje si\u0119 w klasie \u015bcie\u017cki (Java classpath).<\/p>\n<p>Je\u015bli w pe\u0142ni kwalifikowana nazwa wska\u017anika nie odpowiada przyj\u0119tej konwencji nazewnictwa, zostanie zg\u0142oszony wyj\u0105tek typu: <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">IllegalArgumentException<\/code>.<\/p>\n<h4 id=\"przyklad\" ><span class=\"ez-toc-section\" id=\"Przyklad\"><\/span>Przyk\u0142ad<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Tworzony jest obiekt deweloperski XML <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">com.cisag.app.services.indicator.log.OLTPIndicatorExt<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;?xml version=\"1.0\" encoding=\"UTF-16\"?&gt;\n&lt;HookContract xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"HookXMLSchema.xsd\"&gt;\n&lt;!-- Nie zmieniaj tej linii i linii powy\u017cej! --&gt;\n&lt;HOOK_IMPLEMENTATION&gt;\n&lt;contract&gt;com.cisag.pgm.appserver.Server&lt;\/contract&gt;\n&lt;hook&gt;\n&lt;interfce&gt;com.cisag.pgm.services.indicator.hook.OLTPIndicatorHook\n&lt;\/interface&gt;\n&lt;implementation&gt;\ncom.cisag.app.services.indicator.log.OLTPIndicatorHookExtImpl&lt;\/implementation&gt;\n&lt;\/hook&gt;\n&lt;\n&lt;\/HOOK_IMPLEMENTATION&gt;\n&lt;\/HookContract&gt;<\/pre>\n<p>Wska\u017anik jest zaimplementowany w nast\u0119puj\u0105cy spos\u00f3b<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">private final class MyNumberIndicator implements NumberIndica-tor {\n\n@Override\npublic CisDecimal getValue() {\nreturn CisDecimal.valueOf(100);\n}\n\n}<\/pre>\n<p>Rejestracja odbywa si\u0119 w klasie <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">com.cisag.app.services.indicator.log.OLTPIndicatorHookExtImpl<\/code>, kt\u00f3ra zosta\u0142a zadeklarowana w obiekcie deweloperskim XML:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">public class OLTPIndicatorHookExtImpl implements OLTPIndicatorHook {\n\n@Override\npublic void initialise(IndicatorRegistry registry) {\nregis-ty.registerNumberIndicator(\"com.cisag.pgm.MyIndicator\",\nnew MyNumberIndicator(), \"unit\");\n}\n}<\/pre>\n<h3 id=\"korzystanie-z-cissystemmanager\" ><span class=\"ez-toc-section\" id=\"Korzystanie_z_CisSystemManager\"><\/span>Korzystanie z CisSystemManager<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Wska\u017aniki agregacji i wska\u017aniki licznika mog\u0105 by\u0107 wyzwalane programowo w com.cisag.pgm.appserver.CisSystemManager. W tym celu dost\u0119pne s\u0105 nast\u0119puj\u0105ce metody:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">void fireCounterIndicator(\nbyte[] databaseGuid,\nString name);<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">void fireAggregatorIndicator(\nbyte[] databaseGuid,\nString name,\nCisDecimal amount);<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">void fireAggregatorIndicator(\nbyte[] databaseGuid,\nString name,\nlong amount);<\/pre>\n<p data-start=\"468\" data-end=\"488\"><strong>Opis\u00a0parametr\u00f3w:<\/strong><\/p>\n<ul data-start=\"490\" data-end=\"723\">\n<li data-start=\"490\" data-end=\"568\">\n<p data-start=\"492\" data-end=\"568\"><span style=\"font-size: revert; color: initial;\"><strong>databaseGuid<\/strong> &#8211; odpowiada identyfikatorowi GUID bazy danych. Identyfikator GUID bazy danych OLTP aktywnej w sesji mo\u017cna okre\u015bli\u0107 za pomoc\u0105 <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">CisEnvironment.getInstance().getDatabaseGuid()<\/code><\/span><\/p>\n<p><span style=\"font-size: revert; color: initial;\"><strong>name<\/strong> &#8211; jest nazw\u0105 wska\u017anika agregacji lub licznika. <\/span><\/li>\n<\/ul>\n<p data-start=\"492\" data-end=\"568\"><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">U\u017cywane wska\u017aniki musz\u0105 by\u0107 zarejestrowane w implementacji hook contract. <\/div><\/section><\/p>\n<ul>\n<li data-start=\"492\" data-end=\"568\"><span style=\"font-size: revert; color: initial;\"><strong>amount<\/strong> &#8211; to warto\u015b\u0107, kt\u00f3ra jest agregowana.\u00a0<\/span><\/li>\n<\/ul>\n","protected":false},"author":28,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"class_list":["post-9701","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-podreczniki-referencji"],"_links":{"self":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb\/9701","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb"}],"about":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/comments?post=9701"}],"version-history":[{"count":6,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb\/9701\/revisions"}],"predecessor-version":[{"id":32405,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb\/9701\/revisions\/32405"}],"wp:attachment":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/media?parent=9701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}