Wednesday 10 March 2010

Modifikace UCM: komponenty (html resources), 2. část

Řešení v podobě, v jaké jsme jej minule zanechali, má bohužel nevýhodu, že při uložení změn v metadatech (klik na tlačítko Submit Update) dojde k přesměrování na Homepage (je sice možné kliknout na tlačítko Back v browseru a na zobrazené stránkce už budou nová metadata).

Pokud chceme změnit chování, je nejlépe prozkoumat zdrojový kód stránky. Na něm můžeme zjistit, že tlačítko volá funkci postCheckIn napsanou v javaskriptu. Javascript je generovaný opět pomocí zdrojů (hlavně nejrůznějších includes).

V tomto případě nakonec dojdeme k volání služby UPDATE_DOCINFO_BYFORM, přičemž za přesměrovování je zodpovědná samotná definice služby:

<td>UPDATE_DOCINFO_BYFORM</td>
<td>DocService
2
REDIRECT_TEMPLATE
null
documents<br>
!csUnableToUpdateInfo(dDocName)</td>
<td>3:doSubService:UPDATE_DOCINFO_SUB:12:null
3:prepareRedirect:IdcService=DOC_INFO&dID=<$dID$>&dDocName=<$url(dDocName)$><$if IsWorkflowInfo$>&IsWorkflowInfo=<$IsWorkflowInfo$> <$endif$>:0:null</td>


V tomto případě se nabízí možnost jednoduše si vytvořit vlastní verzi služby, v níž by proběhlo přesměrování zpět na stránku REVIEW_WORKFLOW_DOC:

<td>UPDATE_DOCINFO_BYFORM_FROMWORKFLOW</td>
<td>DocService
2
WORKFLOW_REVIEW_FRAMES
null
documents<br>
!csUnableToUpdateInfo(dDocName)</td>
<td>3:doSubService:UPDATE_DOCINFO_SUB:12:null</td>


Nakonec je pak třeba zajistit, aby při generování stránky byla užita vždy správná služba. Tuto definici najdeme opět ve std_page.htm, include std_doc_page_definitions (původní text <$idcService = "UPDATE_DOCINFO_BYFORM"$> nahradíme):

<$if IsWorkflow$>
<$idcService = "UPDATE_DOCINFO_BYFORM_FROMWORKFLOW"$>
<$else$>
<$idcService = "UPDATE_DOCINFO_BYFORM"$>
<$endif$>


Konfigurace řešení
Výše uvedené řešení, tj. zejména využití standardních formulářů, má ještě jednu výhodu: je poměrně jednoduché využít standardního mechanismu profiles, tj. specifikovat, která metadatová pole se budou kdy zobrazovat, zda budou povinná, zda budou mít defaultní hodnoty apod. Jedinou nevýhodou zůstane, že zatímco kroky workflow se definují ve Workflow Administratoru, profily se definují v Configuration Manageru a obě prostředí je třeba prolinkovat (např. přes jména kroků ve workflow, tj. užití logiky kolem <$dWfStepName$> v podmínce Rules užitých v profilu).
Při práci s profily pak ještě zjistíte, že některá metadata není možné v rámci workflows měnit (např. Security Group) a některá jiná je naopak nezbytné na stránce mít (Content ID, v readonly podobě).

(pokračování příště)

No comments:

Post a Comment