![]() |
Production Ready Macros for SAS Application Developers
https://github.com/sasjs/core
|
Takes a dataset of running jobs and waits for ANY or ALL of them to complete. More...
Go to the source code of this file.
Will poll /jobs/{jobId}/state
at set intervals until ANY or ALL jobs are completed. Completion is determined by reference to the returned state, as per the following table:
state | Wait? | Notes |
---|---|---|
idle | yes | We assume processing will continue. Beware of idle sessions with no code submitted! |
pending | yes | Job is preparing to run |
running | yes | Job is running |
canceled | no | Job was cancelled |
completed | no | Job finished - does not mean it was successful. Check stateDetails |
failed | no | Job failed to execute, could be a problem when calling the apis |
First, compile the macros:
filename mc url "https://raw.githubusercontent.com/sasjs/core/main/all.sas"; %inc mc;
Next, create a job (in this case, as a web service):
filename ft15f001 temp; parmcards4; data ; rand=ranuni(0)*1000000; do x=1 to rand; y=rand*x; output; end; run; ;;;; %mv_createwebservice(path=/Public/temp,name=demo)
Then, execute the job,multiple times, and wait for them all to finish:
%mv_jobexecute(path=/Public/temp,name=demo,outds=work.ds1) %mv_jobexecute(path=/Public/temp,name=demo,outds=work.ds2) %mv_jobexecute(path=/Public/temp,name=demo,outds=work.ds3) %mv_jobexecute(path=/Public/temp,name=demo,outds=work.ds4) data work.jobs; set work.ds1 work.ds2 work.ds3 work.ds4; where method='GET' and rel='state'; run; %mv_jobwaitfor(ALL,inds=work.jobs,outds=work.jobstates)
Delete the job:
%mv_deletejes(path=/Public/temp,name=demo)
[in] | access_token_var= | The global macro variable to contain the access token |
[in] | grant_type= | valid values: - password - authorization_code - detect - will check if access_token exists, if not will use sas_services if a SASStudioV session else authorization_code. Default option. - sas_services - will use oauth_bearer=sas_services |
[in] | action=Either | ALL (to wait for every job) or ANY (if one job completes, processing will continue). Default=ALL. |
[in] | inds= | The input dataset containing the list of job uris, in the following format: /jobExecution/jobs/&JOBID./state and the corresponding job name. The uri should be in a uri variable, and the job path/name should be in a _program variable. |
[out] | outds= | The output dataset containing the list of states by job (default=work.mv_jobexecute) |
Definition in file mv_jobwaitfor.sas.