rhb
I'm new here

Scheduler via OPC starten

Hallo,

bereits bei FS_v_3.1 haben wir unser tägliches Deployment via OPC gestartet und dazu gab es eine Java-Klasse, die dazugehörige XML-Datei und eine properties-Datei in welcher Server, Socketport etc. drin stand.

Nun möchte ich für FS_v_4.2 das selbe machen und wüsste gerne durch was ich das Package firstspirit.access.deployment.SchedulerEntry ersetzen kann? Oder kann man dieses weiterhin nutzen obwohl ich dieses in der FS-API nicht gefunden habe?

Hab meine Java-Class  angehängt, damit es leichter verständlich ist was gemacht werden soll.

sG

Birgit

0 Kudos
8 Replies
gockel
Crownpeak employee

0 Kudos

Habs nun soweit mal umgebaut, dass die Packages etc. passen.

Jedoch wenn ichs jetzt ausführe bekomm ich eine Fehlermeldung beim Verbindungsaufbau, die mir nicht ganz klar ist:

Error beim Verbindugnsaufbau zum CMS Server. Wrong client version: 4.0.147

Wieso falsche Client-Version? Die Version 4.0.147 habe ich nur lokal bei mir installiert und nicht auf dem Server wo FirstSpirit 4.2 rennt.

0 Kudos
gockel
Crownpeak employee

Wie wird die Klasse "Deployment42" dem Server bekannt gemacht? Über ein Modul?

Wenn ja, wie sieht die module.xml dazu aus?

0 Kudos

Wieso falsche Client-Version? Die Version 4.0.147 habe ich nur lokal bei mir installiert und nicht auf dem Server wo FirstSpirit 4.2 rennt.

Es geht um die Libraries, die der lokale "Client" verwendet.

Die lokalen Libraries müssen auch 4.2er Libraries sein.

0 Kudos

Hab nun die Lib ausgetauscht und die Fehlermeldung kommt nun nicht mehr jedoch schreibt er jetzt

de.espirit.firstspirit.server.module.LicenseModuleException: module "access_api" is not licensed!

Wenn ich in die Lizenz am Server schau, dann steht dort " license.ACCESS_API=0 " - muss ich nun also eine Lizenz dafür anfordern?

0 Kudos

Wenn ich in die Lizenz am Server schau, dann steht dort " license.ACCESS_API=0 " - muss ich nun also eine Lizenz dafür anfordern?

Richtig. Ein Zugriff auf den FirstSpirit-Server per API "von außen" erfordert einen passenden Lizenzkey.

Bitte wenden Sie sich an das Helpdesk für eine Erweiterung Ihrer Lizenz.

0 Kudos

Auf die Access-API kann ich nun endlich zugreifen und die Verbindungsherstellung zum CMS-Server funktioniert mit meiner Klasse nun auch endlich.

In der Klasse muss der Zeitpunkt des letzten Updates und jener des letzten erfolgreichen Updates ausgelesen werden.

In Fs v3.1 wurde dies so gelöst:

// letztes Update
lastUpdateTime = (Date)deploymentEntry.getProperty("LastUpdateTime");

// letztes erfolgreiches Update
lastSuccessUpdateTime = (Date)deploymentEntry.getProperty("LastSuccessfullUpdateTime");

Wie ich das in FS v4.2 implementieren muss ist mir grundsätzlich bereits klar ( da wenn ich dem getProperty() manuell zwei Zeitpunkt mitgebe die Ausführung klappt ), jedoch hat mir mein Kollege welcher das für FS v3.1 geschrieben hatte gesagt, dass jene zwei Properties ( LastUpdateTime und LastSuccessfullUpdateTime ) Variablen sind welche von FirstSpirit befüllt werden. 

Jetzt stellt sich mir die Frage wie diese zwei Variablen in FS v4.2 heißen bzw. wie man ansonsten auf den Zeitpunkt der letzten (erfolgreichen) Ausführung des Deployments zugreifen kann?!

sG

Birgit

0 Kudos
hoebbel
Crownpeak employee

Hallo Birgit,

wie in dem entsprechenden Helpdesk Ticket gerade schon geschrieben, bekommt man die entsprechenden Werte mit dem folgenden Skript:

import de.espirit.firstspirit.access.AdminService;

import java.util.Date;

lastExecutionTime = new Date(0);

lastSuccessTime = new Date(0);

task = context.getTask();

stat = task.getScheduleEntry().getStatistic();

lastExecutionTime = stat.getLastExecutionEndTime();

context.logInfo("Letzte Ausführung: " + lastExecutionTime);

AdminService adminService = connection.getService(AdminService.class);

scheduleEntries = adminService.getScheduleStorage().getHistory(new Date(new Date().getTime()-4*24*60*60*1000),new Date(),100,context.getProject());

for(scheduleControl : scheduleEntries) {

    if(scheduleControl.getScheduleEntry().getId() == context.getTask().getScheduleEntry().getId()) {

       if(scheduleControl.getState().getState().toString().equals("SUCCESS")) {

           lastSuccessTime = scheduleControl.getStartTime();

           break;

       }

    }

}

context.logInfo("Letzte erfolgreiche Ausführung: " + lastSuccessTime);

Das Skript schreibt das Datum der letzten Ausführung (lastExecutionTime) und das der letzten erfolgreichen Ausführung (lastSuccessTime) in das Logfile des Auftrags, wobei nur die letzten 100 ausgeführten Aufträge des Projektes aus den letzten 4 Tagen berücksichtigt werden. Dies kann man durch geeignete Werte bei getHistory(...) entsprechend erweitern.

Viele Grüsse aus Dortmund,

  Holger

0 Kudos