Archiv pro štítek: Waveset

Vytvoření formuláře v Oracle Waveset

Oracle Waveset nám nabízí mnoho standardních formulářů, ale občas je třeba vytvořit jeden specifický, který se mezi nimi nevyskytuje. S takovýmto problémem jsme se setkali i u nás a to v situaci, kdy bylo potřeba vytvořit formulář pro změnu hesla na nově připojeném systému. Je to centrální autentizační systém. Tento nový formulář slouží běžným uživatelům ke změně svého hesla, správcům potom ke změně hesla normálním uživatelům, kteří spadají do jejich oblasti působnosti (tato oblast je určována podle přiřazené role).

Pokračování textu

Připojení finančního informačního systému do IdM

Na podzim tohoto roku jsme připojovali finanční informační systém (dále zde označován pod zkratkou FIS) pro vysokou školu od dodavatele BBM. Na této univerzitě již běží Identity Manager Sun/Oracle Waveset, kde je již několik systémů připojených. V tomto článku vás seznámím s průběhem připojení a také s problémy, které při tom nastaly.

Zadání

Identity Manager má za úkol na FISu spravovat uživatele. Přidává nebo odebírá role a také mění jeho atributy. Role ale nevytváří, needituje ani neodstraňuje.
Pokračování textu

Případová studie: Průběžná migrace z Oracle IdM Waveset na CzechIdM

V září letošního roku jsme se pustili do unikátní akce – postupného přechodu z Identity Managementu od bývalé společnosti Sun k našemu vlastnímu produktu, Identity Managementu CzechIdM. Produkt bývalé společnosti Sun (dnešní oficiální název je Oracle Waveset) už není novým vlastníkem, firmou Oracle, dále vyvíjen ani podporován. Jeden z našich zákazníků se proto rozhodl pro migraci k plně podporovanému CzechIdM.

Prostředí zákazníka je však poměrně rozsáhlé a SunIdM v něm obsluhuje celou řadu systémů; ocitli jsme se tak před velkou výzvou: jak převést komplikované stávající řešení pod nový produkt bez odstávky a s minimální změnou pro uživatele? Odpovědí je právě projekt postupné migrace: oba Identity Managementy „zřetězíme“ a jednotlivé systémy postupně přepojíme za plného chodu. Ve svém článku vás seznámím s architekturou řešení a upozorním na některá úskalí, se kterými se během implementace střetáváme.

Pokračování textu

Úprava schvalovacího workflow v Oracle Identity Managementu


Tento článek popisuje jakým způsobem je možné upravit standardní schvalovací workflow v systému Sun Identity Manager (Oracle Waveset) tak, aby došlo ke schválení i v případě, kdy jeden ze schvalovatelů tuto akci zamítne. Dále zde bude rozebrána funkčnost, kdy jsou schvalovatelé definováni tím, že mají přiřazenou k tomu určenou roli.

Pokračování textu

Import a export rolí ze Oracle Identity Managementu do CSV


Cílem tohoto článku je ukázat, jakým způsobem je možné exportovat a importovat role ze Sun Identity Manageru (Oracle Waveset).

Jeden z našich klientů, kterému pomáháme v oblasti identity managementu potřeboval, aby z Identity Managera (dále jen IdM) bylo možné vyexportovat role do textového souboru. Exportované soubory s rolemi budou editovat správci jednotlivých systémů a následně bude prováděn hromadný import do IdM.

Pokračování textu

Vytvoření vlastního resource adaptéru pro Sun Identity Manager


Tento článek popisuje, jakým způsobem je možné naprogramovat vlastní „Standard Resource Adapter“ pro produkt Sun Identity Manager, respektive Oracle Waveset 8.1. Při psaní jsem vycházel ze zkušeností, které jsem společně s kolegy nasbíral při programování „univerzálního SSH adaptéru pro unixové systémy (pro Linux, AIX, HP-UX, Solaris a Sambu)“ .

Pokračování textu

Sun-Oracle IdM: Zobrazení approval work items všech uživatelů

V administračním rozhraní Sun Identity Manageru (dále jen IdM) na záložce Work Items -> Approvals je možnost vylistovat a následně pracovat se schvalovacími work itemy všech schvalovatelů, tzn. těch, co mají přiřazenou administrační roli „Approver Administrator“.

V jednom projektu jsme ale museli řešit problém, jak na tomto formuláři přidat možnost pracovat se všemi schvalovacími položkami, tedy i s položkami, které patří obyčejným uživatelům.
Konkrétně jde o formulář „Work Item List“, který prezentuje data z pohledu „WorkItem List View“.
Jak se dá dočíst v dokumentaci (http://docs.sun.com/app/docs/doc/820-5821/bvbjl?l=en&a=view&q=WorkItemList), tento pohled obsahuje atribut „workItems“.

Proto se nabízí řešení, naplnít tento atribut vlastním seznamem položek. Ty jde získat například použitím metody „com.waveset.ui.FormUtil.getObjectNames“ s parametrem „WorkItem“ v kombinaci s metodou „com.waveset.ui.FormUtil.getObject“. Potom je ještě potřeba vytvořit GenericObject atd. Výsledkem je, že se sice položky v seznamu objeví a pokud se podíváme na jejich detail, tak jdou i schválit. Nicméně, pokud v seznamu označíme více položek a ty chceme například schválit, nic se nestane.

Po dekompilaci (pomocí JAD) a prozkoumání příslušného view handleru (com.waveset.view.WorkItemListViewer v balíčku „idm.jar“) zjistíme, že ve výše zmiňovaném případě, je ve view handleru znovu vytvořen seznam work itemu, který se prochází položka po položce a kontroluje se, jestli je obsažena v seznamu těch námi vybraných. Proto, i když v tomto seznamu vybraných položek bude nějaká nová (od obyčejného uživatele), tak se vůbec nebude zpracovávat.

Celý problém se nakonec podařilo vyřešit vytvořením vlastního view handleru „MyWorkItemListViewer“ na základě dekompilovaného „WorkItemListVieweru“. Jediné, co bylo potřeba změnit, byla metoda „processQueryResult“. V jejím těle si přečteme hodnotu našeho parametru, který nám říká, jestli se mají zobrazit všechny položky nebo ne.

boolean getAll = view.getBoolean("getAllWorkItems");

A o pár řádku níže, kde se kontroluje, jestli „owner“ je v „controlledUsers“, tuhle hodnotu použijeme. My jsme třeba celou podmínku, která tento blok obaluje, změnili z:

if(accountId == null)

na

if(accountId == null && !getAll)

Tím pádem, pokud bude „getAll“ nastaveno na „true“, tak se vůbec nebude provádět kontrola, jestli vlastník work itemu je v seznamu „controlledUsers“.

Handler musí být umístěn v balíčku „com.waveset.view“. Aby se použil náš view handler, zmeníme v „approval/approval.jsp“ příkaz

form.setViewId("WorkItemList");

na

form.setViewId("MyWorkItemList");

Poslední věc, kterou je ještě potřeba udělat, je zajistit, aby v combo-boxu na formuláři „Work Item List“ byla možnost „All users“. Po jejím vybrání se nastaví atribut pohledu „user“ na hodnotu „null“ a také náš atribut „getAllWorkItems“. Nulová hodnota atributu „user“ zajistí, že se bude provádět kód view handleru, kde se používá náš atribut.

Pole „user“ jsme upravili následovně:

         <Field name='getAllWorkItems'>
              <Expansion>
                  <eq>
                      <ref>userCombo</ref>
                      <s>___ALL_APPROVAL_ITEMS___</s>
                  </eq>
              </Expansion>
          </Field>
          <Field name='user'>
              <Expansion>
                  <cond>
                      <eq>
                          <ref>userCombo</ref>
                          <s>___ALL_APPROVAL_ITEMS___</s>
                      </eq>
                      <null/>
                      <ref>userCombo</ref>
                  </cond>
              </Expansion>
          </Field>
          <Field name='userCombo'>
            <Display class='Select'>
              <Property name='command' value='Recalculate'/>
              <Property name='nullLabel' value='UI_APPR_JAVA_ALL_APPROVERS'/>
              <Property name='valueMap'>
                  <block>
                      <defvar name="values">
                          <list>
                              <s>___ALL_APPROVAL_ITEMS___</s>
                              <s>UI_APPR_JAVA_ALL_USERS</s>
                          </list>
                      </defvar>
                      <invoke name="sort" class="java.util.Collections">
                          <ref>users</ref>
                      </invoke>
                      <dolist name="user">
                          <ref>users</ref>
                          
                          <append name="values">
                              <ref>user</ref>
                              <ref>user</ref>
                          </append>
                      </dolist>
                      <ref>values</ref>
                  </block>
              </Property>
           <!--   
              <Property name='allowedValues' value='$(users)'/> 
              <Property name='sorted' value='true'/>
           -->
            </Display>
          </Field>