Damit Ihre Systemaktivität vom Dienst JobActivity geladen und ausgeführt wird, müssen deren Dateien in ein eigenes Unterverzeichnis des Verzeichnisses systemactivities unterhalb des Installationsverzeichnisses von JobActivity abgelegt werden.
Des Weiteren muss die Systemaktivität in der Tabelle JRMODULECFG der JobRouter-Datenbank hinzugefügt werden.
Die Spalte module_id wird automatisch mit einer sich fortsetzenden ID gefüllt. In die Spalte service_id muss eine 1 eingetragen werden. Verwenden Sie Instanzen, muss in der Spalte instance_id die ID der Instanz eingetragen werden, in welcher die Systemaktivität verfügbar sein soll. Für jede benutzte Instanz muss ein eigener Eintrag erstellt werden. Verwenden sie keine Instanzen, muss hier eine 0 eingetragen werden. In die Spalte module_name muss der Name der Klasse der Systemaktivität eingetragen werden. Für Systemaktivitäten muss in der Spalte pools immer 1 eingetragen werden. In der Spalte active muss eingetragen werden, ob die Systemaktivität im JobRouter aktiv ist. Hier sind die Werte 1 und 0 zulässig.
Darüber hinaus muss in der Tabelle JRMODULETIMER ebenfalls ein Eintrag für die Systemaktivität vorgenommen werden. Die genaue Beschreibung dieser Tabelle kann dem Kapitel Moduleinstellungen des Administrationshandbuchs entnommen werden.
Falls die Systemaktivität weitere Assemblies als Referenzen benutzt, müssen Sie der .NET-Laufzeitumgebung deren Ort bekannt machen.
Am einfachsten ist es, hierzu den Eintrag additionalProbingPaths in der Datei JobActivity.runtimeconfig.json um den relativen Pfad zum Verzeichnis zu erweitern. z.B.:
{
"runtimeOptions": {
"tfm": "net6.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
},
"additionalProbingPaths": [
"systemactivities/MySystemactivityFolder1",
"systemactivities/MySystemactivityFolder2"
],
"configProperties": {
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false
}
}
}
Bitte beachten Sie: Falls externe Assemblies nicht auf diese Weise der Laufzeitumgebung bekannt gemacht werden, kann es im Laufe der Ausführung von Schritten zu Fehlerzuständen kommen.
Alternativ können Sie die von Ihrer Systemaktivität referenzierten Assemblies in den globalen Assembly Cache installieren, das Ereignis AppDomain.AssemblyResolve in Ihrem Code behandeln oder die Assemblies manuell per Assembly.LoadFile laden.