import com.dvelop.d3.server.core.D3Interface import java.text.SimpleDateFormat import java.util.Date; D3Interface d3 = getProperty("d3"); d3.log.info("Start Skript: Automatische Freigabe"); /** * ----------------------Start Initialisierung---------------------------------------------- */ int returnCode; String currentDB; final String BEARBEITUNG = "DOC_STAT_PROCESSING"; final String FREIGABE = "DOC_STAT_RELEASE"; final String PRUEFUNG = "DOC_STAT_VERIFICATION"; def docuIdList = []; def dtsList = []; /** * ----------------------Ende Initialisierung----------------------------------------------- */ /** * ----------------------Konfigurationsbereich allgemein------------------------------------ */ //Zeitintervall (Tage) für die automatische Freigabe int daysOff = 14; //Angabe der relevanten Dokumentart-Kürzel dtsList = ["KRDOK"]; //Angabe des ausführenden Benutzers def d3User = "dvelop"; /** * ----------------------Ende Konfigurationsbereich allgemein------------------------------- */ /** * ----------------------Konfigurationsbereich SQL------------------------------------------- */ def dtsString = String.join("','", dtsList); d3.log.info("Dokumentart(en): ${dtsString}"); //Datumsgrente ermitteln def date = new SimpleDateFormat("dd.MM.yyyy").format(new Date() - daysOff); d3.log.info("Datumsgrenze: ${date}"); //Prüfung des Datenbank-Servers String dbServer = d3.config.value("db_server"); d3.log.info("Datenbank: ${dbServer}"); if(dbServer == "ORAC" || dbServer == "DB2") { currentDB = "to_date('${date}','DD.MM.YYYY')"; } if(dbServer == "MSQL") { currentDB = "CONVERT(DATETIME, '${date}', 104)"; } String sqlStm = """select firmen_spezifisch.doku_id as dokId from phys_datei inner join firmen_spezifisch on (firmen_spezifisch.doku_id = phys_datei.doku_id) where dokuart in ( '${dtsString}' ) and logi_verzeichnis in ('Be', 'Pr') and last_update_attr <= ${currentDB}"""; d3.log.info("SQL: ${sqlStm}"); def resultset = d3.sql.executeAndGet(sqlStm); docuIdList = resultset.collect{ it.dokId }; /** * ----------------------Ende Konfigurationsbereich SQL--------------------------------------- */ for(String id : docuIdList) { // Hole aktuellen Status des Dokuments def currentDoc = d3.archive.getDocument(id, d3User ); def docStatus = currentDoc.getStatus(); d3.log.info("Aktuelle ID: ${id}"); if(docStatus.toString() == BEARBEITUNG || docStatus.toString() == PRUEFUNG) { returnCode = currentDoc.transfer("Freigabe", "", "Automatischer Statustransfer", false, 0, ""); if(returnCode != 0) { d3.log.error("Statustransfer 'Freigabe' für DokID: ${id} ist fehlgeschlafen! Fehlercode: ${returnCode}"); } else { d3.log.info("Statustransfer 'Freigabe' für DokID: ${id} war erfolgreich!"); } } } d3.log.info("Ende Skript: Automatische Freigabe");