caosadvancedtools.serverside.generic_analysis module#
Variante I: Python module implementiert eine ‘main’ function, die einen Record als Argument entgegennimmt und diesen um z.B. ‘results’ ergänzt und updated.
Variante II: Ein skript erhält eine ID als Argument (z.B. auf der command line) und updated das Objekt selbstständig.
Idealfall: Idempotenz; I.e. es ist egal, ob das Skript schon aufgerufen wurde. Ein weiterer Aufruf führt ggf. zu einem Update (aber nur bei Änderungen von z.B. Parametern)
Das aufgerufene Skript kann beliebige Eigenschaften benutzen und erstellen. ABER wenn die Standardeigenschaften (InputDataSet, etc) verwendet werden, kann der Record leicht erzeugt werden.
"Analyze" "Perform Anlysis"
Knopf an Record Form im WebUI
im WebUI
| |
| |
v v
Winzskript, dass einen
DataAnalysis-Stub erzeugt
|
|
v
execute_script Routine --> AnalysisSkript
erhält den Stub und ggf. Nutzt Funktionen um Updates durchzuführen falls
den Pythonmodulenamen notwendig, Email
^
|
|
Cronjob findet outdated
DataAnalysis
- Analyseskript macht update:
flexibel welche Änderungen vorgenommen werden (z.B. mehrere Records)
spezielle Funktionen sollten verwendet werden
Logging und informieren muss im Skript passieren
Skript kann mit subprocess aufgerufen werden (alternative unvollständige DataAnalysis einfügen)
- # Features
Emailversand bei Insert oder Update
Kurze Info: “Create XY Analysis” kann vmtl automatisch erzeugt werden
Debug Info: müsste optional/bei Fehler zur Verfügung stehen.
Skript/Software version sollte gespeichert werden
Outlook: the part of the called scripts that interact with LinkAhead might in future be replaced by the Crawler. The working directory would be copied to the file server and then crawled.
- caosadvancedtools.serverside.generic_analysis.call_script(script_name: str, record_id: int)#
- caosadvancedtools.serverside.generic_analysis.check_referenced_script(record: Record)#
return the name of a referenced script
If the supplied record does not have an appropriate Property warings are logged.
- caosadvancedtools.serverside.generic_analysis.main()#
This is for testing only.
- caosadvancedtools.serverside.generic_analysis.run(dataAnalysisRecord: Record)#
run a data analysis script.
There are two options: 1. A python script installed as a pip package. 2. A generic script that can be executed on the command line.
Using a python package: It should be located in package plugin and implement at least a main function that takes a DataAnalysisRecord as a single argument. The script may perform changes to the Record and insert and update Entities.
Using a generic script: The only argument that is supplied to the script is the ID of the dataAnalysisRecord. Apart from the different Argument everything that is said for the python package holds here.