Veröffentlicht am :

Test zur Erstellung und Ausführung eines SAS Viya Webservices

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Das Skript beginnt mit der dynamischen Definition des Codes für einen Webservice, der `sashelp.class` liest und die `%webout`-Funktionen verwendet, um ein JSON-Ergebnis zu produzieren. Dieser Code wird dann als Webservice namens 'testsvc' über das Makro `%mv_createwebservice` bereitgestellt. Ein Jobflow wird mit `%mv_jobflow` initiiert, um diesen Dienst auszuführen, mit Verwaltung der Parallelität und Log-Ausgabe. Nach der Ausführung wird die URI des Dienstergebnisses aus den Metadaten des Jobflows extrahiert. Das Makro `%mv_getjobresult` wird verwendet, um die tatsächlichen Daten des Dienstes über diese URI abzurufen. Schließlich validiert das Skript, dass die abgerufenen Daten dem erwarteten Inhalt von `sashelp.class` entsprechen, indem es eine Assertion über die Anzahl der Beobachtungen des resultierenden Datasets über das Makro `%mp_assertdsobs` verwendet.
Datenanalyse

Type : MIXTE


Die Hauptdatenquelle ist das interne SAS-Dataset `sashelp.class`. Das Skript erstellt auch mehrere temporäre Arbeitsdatasets (`work.inputjobs`, `work.results`, `myweblib.test`, `work.out`, `work.test_results`) und manipuliert temporäre Filerefs (`testref`, `myjoblog`, `myweb`) zur Zwischenspeicherung des Dienstcodes, der Jobflow-Logs und der Webservice-Ergebnisse.

1 Codeblock
DATA STEP Data
Erklärung :
Dieser Block verwendet ein `DATA _NULL_`, um SAS-Code in eine temporäre Datei (`testref`) zu schreiben. Der geschriebene Code definiert einen einfachen `DATA STEP`, der `sashelp.class` in ein Dataset namens `test` lädt und dann die `%webout`-Makros verwendet, um dieses Dataset als Webausgabe (wahrscheinlich JSON) zu formatieren, was typisch für REST-Dienste ist.
Kopiert!
1filename testref temp;
2DATA _null_;
3 file testref;
4 put 'data test; set sashelp.class;run;';
5 put '%webout(OPEN)';
6 put '%webout(OBJ,test)';
7 put '%webout(CLOSE)';
8RUN;
2 Codeblock
MACRO mv_createwebservice
Erklärung :
Ruft das Makro `%mv_createwebservice` auf, um einen Webservice namens `testsvc` zu erstellen und bereitzustellen. Der Bereitstellungspfad wird durch `&mcTestAppLoc/services/temp` angegeben, und der Service-Code wird aus dem zuvor definierten temporären Fileref `testref` gelesen.
Kopiert!
1%mv_createwebservice(
2 path=&mcTestAppLoc/services/temp,
3 code=testref,
4 name=testsvc
5)
3 Codeblock
DATA STEP / MACRO mv_jobflow Data
Erklärung :
Dieser Block bereitet die Ausführung des Webservices vor. Ein Dataset `work.inputjobs` wird erstellt, um das auszuführende Programm (`testsvc`) anzugeben. Anschließend wird das Makro `%mv_jobflow` aufgerufen, um die Ausführung des Dienstes zu starten, wobei die Parallelität mit `maxconcurrency=4` verwaltet wird. Die Jobflow-Ergebnisse werden in `work.results` gespeichert, und das Ausführungslog wird im Fileref `myjoblog` aufgezeichnet.
Kopiert!
1DATA work.inputjobs;
2 _program="&mcTestAppLoc/services/temp/testsvc";
3RUN;
4%mv_jobflow(inds=work.inputjobs
5 ,maxconcurrency=4
6 ,outds=work.results
7 ,outref=myjoblog
8)
4 Codeblock
DATA STEP
Erklärung :
Liest den Inhalt der vom Jobflow generierten Logdatei `myjoblog` und schreibt ihn direkt in das SAS-Log, um die Ausführungsnachrichten des Dienstes sichtbar zu machen.
Kopiert!
1DATA _null_;
2 INFILE myjoblog;
3 INPUT;
4 put _infile_;
5RUN;
5 Codeblock
DATA STEP
Erklärung :
Dieser `DATA _NULL_` durchläuft das Dataset `work.results` (das die Jobflow-Metadaten enthält) und extrahiert den Wert der `uri`-Variable, um ihn in einer globalen Makrovariable namens `uri` zu speichern, die für den Abruf der Dienstergebnisse unerlässlich ist. Alle Variablen werden ebenfalls im Log angezeigt.
Kopiert!
1DATA _null_;
2 SET work.results;
3 call symputx('uri',uri);
4 put (_all_)(=);
5RUN;
6 Codeblock
MACRO mv_getjobresult Data
Erklärung :
Ruft das Makro `%mv_getjobresult` auf, um die Ergebnisse des Webservices unter Verwendung der zuvor erhaltenen URI abzurufen. Der Parameter `result=WEBOUT_JSON` weist darauf hin, dass die erwartete Ausgabe im JSON-Format vorliegt, das im Fileref `myweb` und einem Dataset `test` innerhalb der Bibliothek `myweblib` gespeichert wird.
Kopiert!
1%mv_getjobresult(uri=&uri
2 ,RESULT=WEBOUT_JSON
3 ,outref=myweb
4 ,outlib=myweblib
5)
7 Codeblock
DATA STEP
Erklärung :
Liest den Rohinhalt der Datei `myweb` (das JSON-Ergebnis des Webservices) und zeigt ihn zur direkten Überprüfung im SAS-Log an.
Kopiert!
1DATA _null_;
2 INFILE myweb;
3 INPUT;
4 putlog _infile_;
5RUN;
8 Codeblock
DATA STEP Data
Erklärung :
Erstellt ein Arbeitsdataset namens `work.out`, indem die strukturierten Daten aus dem Dataset `myweblib.test` gelesen werden, das die von `sashelp.class` stammenden Daten enthält, wie sie vom Webservice zurückgegeben und vom Makro `mv_getjobresult` interpretiert wurden. Zeigt auch alle Variablen des neuen Datasets im Log an.
Kopiert!
1DATA work.out;
2 SET myweblib.test;
3 put (_all_)(=);
4RUN;
9 Codeblock
MACRO mp_assertdsobs Data
Erklärung :
Ruft das Testmakro `%mp_assertdsobs` auf, um zu überprüfen, ob das Dataset `work.out` genau 19 Beobachtungen enthält. Dies validiert, dass der Webservice alle Zeilen von `sashelp.class` korrekt zurückgegeben hat. Das Ergebnis dieser Assertion wird im Dataset `work.test_results` gespeichert.
Kopiert!
1%mp_assertdsobs(work.out,
2 desc=Test1 - 19 obs from sashelp.class in service RESULT,
3 test=EQUALS 19,
4 outds=work.test_results
5)
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.