Releases: sos-berlin/js7
v2.0.0-alpha.20210513
- 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
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
BlockingInternalJob.namedValue
liefert jetzt einEither<Problem, Optional<Value>>
.
Das Ergebnis ist erstmal immerRight
und kann in einer zukünftigen Version auch malLeft
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
- $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 Parameterenv
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
- 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
- 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ürJobResource
liefert das Label der Anweisung oder den leeren String.
v2.0.0-alpha.20210426.2
- 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 dieClass
zu erhalten:Order.Fresh$.class
. Order.scheduledFor
enthält die optionale geplante Startzeit.- Neue Funktion
scheduledOrEmpty
fürJobResource
liefert die geplante Startzeit oder den leeren String.
Siehe JobResource (unten).
v2.0.0-alpha.20210423
- 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
- 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
ersetztprocessOrder
- Die Klasse
Step
ersetztOrderContext
- Die Methode
v2.0.0-alpha.20210324
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.