Files
d.velop/_Vorlagen/Groovy-Skripte/restoreDocuments.groovy
2025-04-04 11:35:25 +02:00

31 lines
1.7 KiB
Groovy

//Dieses Skript stellt Dokumente aus dem Papierkorb wieder her.
//Ausgeführt wird dieses Skript per d.3 server interface, zuvor muss das SQL-Statement angepasst werden. Das SQL-Statement muss die Dokumenten-IDs der wiederherzustellenden Dokumente liefern.
//Es muss ein Benutzer "scriptUser" angegeben werden, der volle Rechte für die entsprechenden Dokumente hat. (Um den Aktenplan anzutriggern)
import com.dvelop.d3.server.Document
import com.dvelop.d3.server.core.D3Interface
import com.dvelop.d3.server.exceptions.SQLException
import com.dvelop.d3.server.exceptions.D3Exception
String scriptName = getClass().getName()
// d.3 User which executes the restore and check of the folder schemes
String scriptUser = "d3_groovy"
final def maxRows = 3000
//Einzelne Dokumente/Akten anhand der ID
//def resultSet = d3.sql.executeAndGet("select doc_id from doc_recycler where doc_id = 'DocumentsToBeRestored'", maxRows)
//oder anhand Metadaten (hier dok_dat_feld_3 = Aktenzeichen) aus dem Papierkorb
def resultSet = d3.sql.executeAndGet("select doc_id, delete_date, delete_user from doc_recycler where to_char(delete_date, 'MM-DD-YYYY') = to_char(sysdate, 'MM-DD-YYYY') and delete_user = 'd3_async' and db_tables_data like '%\"dok_dat_feld_3\": \"A-000004-2022\"%'")
resultSet.each{
try {
d3.log.info ("Restoring document with ID " + it.doc_id)
d3.call.restore_from_history (0, it.doc_id, '');
d3.log.info ("Checking folder scheme for document with ID " + it.doc_id)
Document myDoc = d3.archive.getDocument(it.doc_id, scriptUser)
myDoc.checkFolderScheme(scriptUser)
} catch (D3Exception e) {
d3.log.error("Error checking folder scheme " + e.getMessage())
}
}