Skip to content

Releases: sos-berlin/js7

v2.0.0-alpha.20210513

13 May 13:46
Compare
Choose a tag to compare
v2.0.0-alpha.20210513 Pre-release
Pre-release
  • FIX: Ein Fehler beim Wiederanlauf ohne Cluster-Lizenz behoben
  • Windows Logon: Datei $JS7_RETURN_VALUES ist für den anderen Nutzer beschreibbar
  • Die Funktion env hat einen optionalen zweiten Parameter für den Default-Wert. Der Parameter wird lazy ausgewertet, ein Fehler hier kommt also nur zum Tragen, wenn es die Umgebungsvariable nicht gibt.
  • JControllerState.pathToFileWatch und .fileWatches

Beispiel, das alle FileWatches ermittelt, die auf einen gegebenen Workflow verweisen.

List<JFileWatch> workflowToOrderWatchPaths(JControllerState controllerState, WorkflowPath workflowPath) {
    return controllerState.fileWatches()
        .stream().filter(o -> o.workflowPath().equals(workflowPath)).collect(toList());
}

v2.0.0-alpha.20210511

11 May 15:08
Compare
Choose a tag to compare
v2.0.0-alpha.20210511 Pre-release
Pre-release

Windows-Logon

ScriptExecutable hat den neuen, optionalen Parameter login, mit dem ein Windows Credential Key angegeben werden kann, und ob das Nutzer-Profil geladen werden soll (erforderlich, wenn der Prozess die Umgebungsvariablen des Nutzer erhalten soll)

{
  "TYPE": "ScriptExecutable",
  "script": "@echo off\n...",
  "login": {
    "credentialKey": "CREDENTIAL-KEY",
    "withUserProfile": true
  }
}

JS7 setzt (wie schon JobScheduler 1) die Umgebungsvariablen USERNAME und DOMAINNAME (Windows versäumt das aus irgendeinem Grund).

v2.0.0-alpha.20210504

04 May 11:40
Compare
Choose a tag to compare
v2.0.0-alpha.20210504 Pre-release
Pre-release
  • BlockingInternalJob.namedValue liefert jetzt ein Either<Problem, Optional<Value>>.
    Das Ergebnis ist erstmal immer Right und kann in einer zukünftigen Version auch mal Left sein.

JobResource.settings

Der neue Parameter settings ist wie env aufgebaut und kann in JVM-Jobs verwendet werden.
Außerdem hat env Zugriff auf die in settings errechneten Werte.

Beispiel in JSON:

{
  "path": "MY-JOB-RESOURCE",
  "TYPE": "JobResource",
  "settings": {
   "stringSetting": "\"STRING\"",
   "numberSetting": "100"
  },
  "env": {
    "MYENV": "\"VALUE\"",
    "NUMBER": "$numberSetting",
    "MYPATH": "\"/bin:\" ++ env(\"PATH\")"
  }
}

Nutzung in JVM-Jobs

public final class MyInternalJob implements BlockingInternalJob
{
    public OrderProcess toOrderProcess(Step step) {
        return () -> {
          Map<JobResourcePath,Map<String,Value>> jobResourceToNameToValue =
            step.jobResourceToNameToValue();
          Either<Problem,Value> checkedValue =
            step.byJobResourceAndName(JobResourcePath.of("MY-JOB-RESOURCE"), "stringSetting");
        };
    }
}

v2.0.0-alpha.20210503

03 May 11:30
Compare
Choose a tag to compare
v2.0.0-alpha.20210503 Pre-release
Pre-release
  • $js7JobName liefert den bloßen Jobnamen (ohne WorkflowPath).
  • Die Variablen und Funktionen, die für JobResource zur Verfügung stehen (also $js7OrderId, now() und so weiter) stehen auch für den Parameter env des Jobs zur Verfügung. Die Umgebungsvariablen der JobResource haben weiterhin Vorrang (denn es sind Resourcen).
  • BlockingInternalJob.Step.evalExpression() wertet einen Ausdruck aus, der Zugriff auf die Variablen und Funktionen wie bei einer JobResource hat.

v2.0.0-alpha.20210430

30 Apr 12:12
Compare
Choose a tag to compare
v2.0.0-alpha.20210430 Pre-release
Pre-release
  • FIX: JobResource ist jetzt Cluster-fähig
  • JExpression.quoteString macht aus einem String einen String für die Expression-Sprache
  • Syntax für Zeichenketten in der Expression-Sprache beschrieben: expression.md

v2.0.0-alpha.20210428

28 Apr 11:59
Compare
Choose a tag to compare
v2.0.0-alpha.20210428 Pre-release
Pre-release
  • FIX: Ausdruck mit einer String-Konstante, die mit \ versehene Zeichen enthält, wird jetzt korrekt serialisiert.
  • Auftrag im Zustand Failed ist mit dem Resume-Kommando fortsetzbar.
  • Neue Variable $js7Label für JobResource liefert das Label der Anweisung oder den leeren String.

v2.0.0-alpha.20210426.2

26 Apr 13:56
Compare
Choose a tag to compare
Pre-release
  • Das Journal hat sich geändert. Bitte löscht alle Journaldateien.
  • OrderState.Fresh hat jetzt keine Parameter mehr (vorher stand hier die geplante Startzeit).
    In Java ändert sich deshalb die Schreibweise, um die Class zu erhalten: Order.Fresh$.class.
  • Order.scheduledFor enthält die optionale geplante Startzeit.
  • Neue Funktion scheduledOrEmpty für JobResource liefert die geplante Startzeit oder den leeren String.
    Siehe JobResource (unten).

v2.0.0-alpha.20210423

23 Apr 07:10
Compare
Choose a tag to compare
v2.0.0-alpha.20210423 Pre-release
Pre-release
  • Das Journal hat sich geändert. Bitte löscht alle Journaldateien.

Große Umbenennung: SimpleItemId heißen jetzt SimpleItemPath

Denn SimpleItemPath ist keine ID, weil SimpleItem geändert werden können. Um die Änderungen bei der Verteilung auf die Agenten auseinanderzuhalten, ordnet JS7 jedem SimpleItem eine interne Revision zu, die zusammen mit dem Pfad erst eindeutig ist. AgentId heißt also (wie früher) AgentPath.

Das betrifft Klassen und Felder im Java-Proxy und in JSON:

  • AgentPath
  • LockPath
  • OrderSourcePath
  • pathToX statt idToX
  • AgentRef.path statt .id
  • ...

BlockingInternalJob

  • Neue Methode Step.namedValue(): Optional[Value] liefert Variablen an den deklarierten Job-Parametern vorbei.
    Jeder Name, der auch im Workflow referenziert werden kann (in der If-Anweisung), kann auch hier abgerufen werden.
  • JobContext.jobKey.jobName liefert den Jobnamen.

JobResource

Mit dem InventoryItemn JobResource (ein SignableSimpleItem) können Sätze von Umgebungsvariablen bestimmt werden.
Einem Job können mehrere JobResourcen zugeordnet werden.

Siehe JobResource (unten).

WorkflowJob.failOnErrWritten

Mit WorkflowJob.failOnErrWritten = true scheitert ein Auftrag, wenn der Job etwas in den Err-Kanal geschrieben hat.
Als Fehlermeldung wird die zuletzt nach Err geschriebene Zeile verwendet.

Weiteres

  • Die Workflows werden nicht mehr mit jedem Auftrag erneut zum Agenten geschickt, sondern nur noch einmal.
  • Doku für FileWatch.
  • Schnittstelle zur Lizenzprüfung.

v2.0.0-alpha.20210412

12 Apr 13:07
Compare
Choose a tag to compare
v2.0.0-alpha.20210412 Pre-release
Pre-release
  • Das Journal hat sich geändert. Bitte löscht alle Journaldateien.

FileWatch

  • FIX: Kein StackOverflowError mehr, wenn FileWatch nach langer Zeit ersetzt wird
  • AgentId eines FileWatch ist änderbar
    • Für JS7 gelten dann die bisherigen Dateien als verschwunden (ExternalOrderVanished-Event)
  • FileWatch ist löschbar
  • JS7 liest nach einer Minute ohne Vorkommnis das Verzeichnis erneut ein und startet die Verzeichnisüberwachung erneut

BlockingInternalJob

  • JS7 ruft die neue Methode stop auf, wenn der Agent herunterfährt (oder zukünftig, wenn der Workflow vernichtet wird)
  • Korrekturen bei der Behandlung von out- und err-Texten
  • Ein Auftragsschritt ist mit CancelOrder abbrechbar.
    • Die Methode toOrderProcess ersetzt processOrder
    • Die Klasse Step ersetzt OrderContext

v2.0.0-alpha.20210324

24 Mar 13:55
Compare
Choose a tag to compare
v2.0.0-alpha.20210324 Pre-release
Pre-release

FileWatch

Verbesserungen zur letzten Version:

  • JFileWatch.checked ersetzt JFileWatch.of
    • liefert ein Either<Problem, JFileWatch>
    • Neue Parameter für pattern, orderIdExpression und delay
  • Agent übernimmt Änderungen eines FileWatch
  • Wenn das Pattern die Dateiauswahl verengt und noch Dateien von der vorherigen (weiteren) Dateiauswahl unterwegs sind, dann erzeugt JS7 OrderProcessVanished-Events, um den Zustand sauber zu halten (denn diese Dateien sind nicht mehr sichtbar). Am besten wäre es, wenn bei einer Verengung keine Aufträge zu diesen Dateien laufen, um Jobs und Anwender nicht zu verwirren.