Strumenti Utente

Strumenti Sito


documentazione_3di_riservata:docway4:script_utili_3

Questa è una vecchia versione del documento!


sanitizerMessageId (script lua per modificare l'attributo messageId)

Lo script è stato realizzato per intervenire sull'attributo messageId del documento modificandolo per fare in modo che MSA riprocessi i messaggi già inseriti in archivio ma privi di allegati (in questo modo infatti la verifica di univocità viene schivata e il messaggio di posta viene riprocessato).

sanitizerMessageId.lua
local dbg = require 'xw.dbg' ({active=false, key='acl'})
local xw = require('extraway')
xw.addPackage("$.xwTools") ;
 
--[[-
--]]
function sanitizeMessageId(query)
	-- deactivate triggers
	xw.triggersOff() ;
 
	local outputXML = xw.prepareRecord("<report></report>") ;
	local outputMainNode = outputXML:selectFirstNode("/report") ;
	local recordIsModified = false ;
 
	--local targetRecordSet = xw.executeQuery('([/doc/@nrecord/]=00116607)') ;
	local targetRecordSet = xw.executeQuery(query) ;
        xw.log.msg("Working on query: "..query.." records)")
	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("/doc", nil) ;
 
				local searchMessageIdandReplace = targetRecord:selectFirstNode("/doc", nil) ;
				if ( searchMessageIdandReplace:isValid() ) then
                        local messageIdValue = searchMessageIdandReplace:getAttribute("messageId");
					--if ( messageIdValue == "messageId, ERR")  then
						searchMessageIdandReplace:setAttribute("messageId", messageIdValue .. "_ERR") ;
						recordIsModified = true ;
					--end
				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
 
sanitizerMessageId = {
	sanitizeMessageId = sanitizeMessageId,
	sanitizeMessageId_signature = {
    	 inParms = {"query"},
	     outParms = {"result"}
	}
} ;

Per il suo utilizzo lo script va copiato nella directory /opt/3di.it/extraway/xwee/script e va eseguito tramite il seguente xmlcommand:

<?xml version="1.0" encoding="ISO-8859-1"?>
<cmd stored="$.sanitizeMessageId.sanitizeMessageId">
  <query>([/doc/storia/creazione/@data/]="20170725")</query>
</cmd>
/data/attic/documentazione_3di_riservata/docway4/script_utili_3.1505228554.txt.gz · Ultima modifica: 2017/09/12 17:02 da ncandelora