documentazione_3di_riservata:docway4:script_utili
Questa è una vecchia versione del documento!
addAltreUOR e addAltreUORint (script lua per aggiungere codici in diritto Altre UOR)
Lo script consente di aggiungere massivamente codici di strutture sul diritto Altre UOR (visualizzazione e intervento) degli utenti a partire da un file xml strutturato in un formato specifico.
Il file xml ha la seguente struttura:
- altreuor.xml
<?xml version="1.0"?> <lista_utenti> <utente id="matricola_utente1" diritto="CODUOR1.CODUOR2,..." /> <utente id="matricola_utente2" diritto="CODUOR1.CODUOR2,..." /> <utente id="matricola_utente..." diritto="CODUOR1.CODUOR2,..." /> </lista_utenti>
Il file xml deve essere denominato altreuor.xml per lo script dedicato al diritto Altre UOR in visualizzazione o altreuorint.xml per lo script che interviene sul diritto Altre UOR in intervento.
Lo scipt lua che interviene sul diritto Altre UOR in visualizzazione è il seguente:
- addAltreUOR.lua
local dbg = require 'xw.dbg' ({active=false, key='acl'}) local xw = require('extraway') xw.addPackage("$.xwTools") ; --[[- --]] function addAltreUOR() local sourceFileFullPath = xw.getCurrentArcName() .. ".script/altreuor.xml" ; local sourceRecord = xw.prepareRecordFromFile(sourceFileFullPath) ; if ( not(sourceRecord:isValid()) ) then xw.log.msg ('file non valido') ; return 'false' ; end local targetNodeSet = sourceRecord:selectNodes ('/lista_utenti/utente', nil, 1) ; if ( targetNodeSet:isValid() and 0 < #targetNodeSet ) then local targetNode = targetNodeSet:getFirst() ; while ( targetNode:isValid() ) do local idUtente = targetNode:getAttribute('id') ; local idDiritto = targetNode:getAttribute('diritto') ; local risultatoAggiornamento = aggiornaRecord(idUtente , "/persona_interna/personal_rights/right[@cod='DW-DOC-RIS5']", idDiritto) targetNode = targetNodeSet:getNext() ; end end end function aggiornaRecord(idUtente , pathElementoDaAggiornare, valoreDaUtilizzare) -- deactivate triggers xw.triggersOff() ; local recordIsModified = false ; local targetRecordSet = xw.executeQuery('([UD,/xw/@UdType/]="persona_interna") AND ([/persona_interna/@matricola/]="' .. idUtente .. '")') ; if ( targetRecordSet:isValid() and 0 < #targetRecordSet ) then local targetRecord = targetRecordSet:getFirst() ; while ( targetRecord:isValid() ) do recordIsModified = false ; targetRecord_LockResult = targetRecord:lock() ; if ( targetRecord_LockResult == true ) then local targetRecordRootNode = targetRecord:selectFirstNode("/persona_interna", nil) ; local elementoDaAggiornare = targetRecord:selectFirstNode( pathElementoDaAggiornare, nil) ; if ( elementoDaAggiornare:isValid() ) then elementoDaAggiornare:setValue(valoreDaUtilizzare) ; recordIsModified = true ; end if ( recordIsModified ) then local outcome = targetRecord:save() ; if ( outcome <= 0 ) then targetRecord:unlock() ; xw.log.msg('save error') ; end else targetRecord:unlock() ; end else xw.log.msg('lock error') ; end targetRecord = targetRecordSet:getNext() ; end end -- activate triggers xw.triggersOn() ; return 'true' ; end addAltreUOR = { addAltreUOR = addAltreUOR, addAltreUOR_signature = { outParms = {"result"} } } ;
Mentre lo script che interviene sul diritto Altre UOR in intervento è il seguente:
- addAltreUORint.lua
local dbg = require 'xw.dbg' ({active=false, key='acl'}) local xw = require('extraway') xw.addPackage("$.xwTools") ; --[[- --]] function addAltreUORint() local sourceFileFullPath = xw.getCurrentArcName() .. ".script/altreuorint.xml" ; local sourceRecord = xw.prepareRecordFromFile(sourceFileFullPath) ; if ( not(sourceRecord:isValid()) ) then xw.log.msg ('file non valido') ; return 'false' ; end local targetNodeSet = sourceRecord:selectNodes ('/lista_utenti/utente', nil, 1) ; if ( targetNodeSet:isValid() and 0 < #targetNodeSet ) then local targetNode = targetNodeSet:getFirst() ; while ( targetNode:isValid() ) do local idUtente = targetNode:getAttribute('id') ; local idDiritto = targetNode:getAttribute('diritto') ; local risultatoAggiornamento = aggiornaRecord(idUtente , "/persona_interna/personal_rights/right[@cod='DW-DOC-RIS13']", idDiritto) targetNode = targetNodeSet:getNext() ; end end end function aggiornaRecord(idUtente , pathElementoDaAggiornare, valoreDaUtilizzare) -- deactivate triggers xw.triggersOff() ; local recordIsModified = false ; local targetRecordSet = xw.executeQuery('([UD,/xw/@UdType/]="persona_interna") AND ([/persona_interna/@matricola/]="' .. idUtente .. '")') ; if ( targetRecordSet:isValid() and 0 < #targetRecordSet ) then local targetRecord = targetRecordSet:getFirst() ; while ( targetRecord:isValid() ) do recordIsModified = false ; targetRecord_LockResult = targetRecord:lock() ; if ( targetRecord_LockResult == true ) then local targetRecordRootNode = targetRecord:selectFirstNode("/persona_interna", nil) ; local elementoDaAggiornare = targetRecord:selectFirstNode( pathElementoDaAggiornare, nil) ; if ( elementoDaAggiornare:isValid() ) then elementoDaAggiornare:setValue(valoreDaUtilizzare) ; recordIsModified = true ; end if ( recordIsModified ) then local outcome = targetRecord:save() ; if ( outcome <= 0 ) then targetRecord:unlock() ; xw.log.msg('save error') ; end else targetRecord:unlock() ; end else xw.log.msg('lock error') ; end targetRecord = targetRecordSet:getNext() ; end end -- activate triggers xw.triggersOn() ; return 'true' ; end addAltreUORint = { addAltreUORint = addAltreUORint, addAltreUORint_signature = { outParms = {"result"} } } ;
/data/attic/documentazione_3di_riservata/docway4/script_utili.1505222033.txt.gz · Ultima modifica: 2017/09/12 15:13 da ncandelora