Page History
...
Operation | Object | Documentation |
---|---|---|
add / cancel | Order | |
suspend / resume | ||
let run | ||
transfer | ||
suspend / resume | Workflow | |
stop / unstop | Job, Instructions | JS7 - Workflows - Status Operations on Jobs |
skip / unskip | ||
post / get / delete | Notice | |
encrypt / decrypt | None | Encrypt / decrypt strings and files |
The script is offered for download and can be applied for frequently used operations on workflows, jobs and orders:
...
Code Block | ||
---|---|---|
| ||
Usage: operate-workflow.sh [Command] [Options] [Switches] Commands: add-order --workflow [--date-to] [--order-name] [--block-position] [--start-position] [--end-position] [--variable] [--force] cancel-order [--workflow] [--folder] [--recursive] [--order-id] [--state] [--date-from] [--date-to] [--time-zone] [--force] suspend-order [--workflow] [--folder] [--recursive] [--order-id] [--state] [--date-from] [--date-to] [--time-zone] [--force] resume-order [--workflow] [--folder] [--recursive] [--order-id] [--state] [--label] [--variable] letrun-order [--workflow] [--folder] [--recursive] [--order-id] [--state] transfer-order --workflow] [--folder] [--recursive] suspend-workflow --workflow [--folder] [--recursive] resume-workflow --workflow [--folder] [--recursive] stop-job --workflow --label unstop-job --workflow --label skip-job --workflow --label unskip-job --workflow --label post-notice --notice-board [--notice-id] [--notice-lifetime] get-notice [--notice-board] [--notice-id] [--folder] [--recursive] [--date-to] delete-notice [--notice-board] [--notice-id] [--folder] [--recursive] [--date-to] Options: encrypt --url=<url> --in [--infile --outfile] --cert [--java-home] [--java-lib] decrypt | required: JOC Cockpit URL --in [--infile --controller-id=<id> outfile] --key [--key-password] [--java-home] [--java-lib] Options: --url=<url> | required: JOC Cockpit URL --controller-id=<id> | required: Controller ID --user=<account> | required: JOC Cockpit user account --password=<password> | optional: JOC Cockpit password --ca-cert=<path> | optional: path to CA Certificate used for JOC Cockpit login --client-cert=<path> | optional: path to Client Certificate used for login --client-key=<path> | optional: path to Client Key used for login --timeout=<seconds> | optional: timeout for request, default: 15 --order-name=<string> | optional: name for order, default: <current user> --block-position=<label> | optional: label for block instruction that holds start position --start-position=<label> | optional: label from which the order will be started --end-position=<label[,label]> | optional: list of labels before which the order will terminate --variable=<key=value[,key=value]> | optional: list of variables holding key/value pairs --date-from=<date> | optional: order past scheduled date --date-to=<date> | optional: order scheduled date or notice date, default: now --time-zone=<tz> | optional: time zone for dates, default: <current-time-zone> see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones --state=<state[,state]> | optional: list of states limiting orders to be processed such as SCHEDULED, INPROGRESS, RUNNING, SUSPENDED, WAITING, FAILED --folder=<path[,path]> | optional: list of folders holding workflows, orders, notice boards --workflow=<name[,name]> | optional: list of workflow names --order-id=<id[,id]> | optional: list of order identifiers --label=<label[,label]> | optional: list of labels for jobs --notice-board=<name[,name]> | optional: list of notice boards --notice-id=<id> | optional: notice identifier, default: <current date> --notice-lifetime=<period> | optional: lifetime for notice --audit-message=<string>key=<path> | optional: audit log message --audit-time-spent=<number> | optional: path to private key file in PEM format --key-password=<password> | optional: auditpassword logfor timeprivate spentkey in minutesfile --audit-link=<url>cert=<path> | optional: audit log link path to certificate file in PEM format --log-dirin=<directory><string> | optional: path to directory holding the script's log files Switches: -h | --help| optional: input string for encryption/decryption --infile=<path> | optional: input file | displays usagefor encryption/decryption -v | --verbose -outfile=<path> | displays verboseoptional: output, repeatfile to increase verbosityfor encryption/decryption -p | -java-passwordhome=<directory> | optional: Java Home directory for encryption/decryption, | asks for passworddefault: $JAVA_HOME -r | -java-recursivelib=<directory> | optional: Java library directory for | specifies folders to be looked up recursively encryption/decryption, default: ./lib --audit-message=<string> -f | --force | optional: audit log message --audit-time-spent=<number> | specifiesoptional: forcedaudit startlog ortime terminationspent ofin jobsminutes --show-logsaudit-link=<url> | optional: audit log link --log-dir=<directory> | shows log output if --log-dir is used optional: path to directory holding the script's log files Switches: -h | -make-dirshelp | createsdisplays directoriesusage if they do not-v exist |
Commands
add-order
- Adds an order to a workflow. Allows to specify the start position and end positions in the workflow in case that specific jobs only should be executed.
- Orders can be forced to start and to ignore JS7 - Admission Times for Jobs using the
--force
switch.
cancel-order
- Terminates an order which optionally includes to forcibly terminate running jobs using the
--force
switch.
- Terminates an order which optionally includes to forcibly terminate running jobs using the
suspend-order
,resume-order
- Suspends an order which optionally includes to forcibly terminate running jobs using the
--force
switch. - Resumes a previously suspended order, optionally from a different position in the workflow using the
--label
option.
- Suspends an order which optionally includes to forcibly terminate running jobs using the
letrun-order
- Orders in the pending, scheduled or waiting state for a JS7 - Cycle Instruction or JS7 - Retry Instruction can be forced to run immediately.
transfer-order
- Orders attached a previous version of a workflow for which a newer version exists are transferred to the latest version of the workflow.
suspend-workflow
,resume-workflow
- Suspends the worfklow and freezes orders in the given workflow.
- Resumes a previously suspended workflow. Frozen orders will awake and will continue.
stop-job
,unstop-job
- Stopping a job will prevent the job from running. A stopped job will suspend orders arriving at the job label.
- Unstopping a previously stopped job will allow orders to execute the job. Suspended orders must be resumed to execute the job.
skip-job
,unskip-job
- Skipping a job will prevent the job from running. Orders will skip the job and will continue with the next instruction.
- Unskipping a previously skipped job will allow orders to execute the job.
post-notice
,get-notice
,delete-notice
- Notices can be posted to resolve dependencies similar to use of the JS7 - PostNotices Instruction in workflows.
- Notices can be retrieved to check which workflow dependencies are resolved.
- Notices can be deleted to make workflows wait for dependencies as used with the JS7 - ExpectNotices Instruction and JS7 - ConsumeNotices Instruction.
Options
...
- Specifies the URL by which JOC Cockpit is accessible using
<http|https>://<host>:<port>
. - Example: http://centostest-primary.sos:4446
- Example: https://centostest-primary.sos:4443
...
- Specifies the user account for login to JOC Cockpit. If JS7 - Identity Services are available for Client authentication certificates that are specified with the
--client-cert
and--client-key
options then their common name (CN) attribute has to match the user account. - If a user account is specified then a password can be specified using the
--password
option or interactive keyboard input can be prompted using the-p
switch.
...
- Specifies the password used for the account specified with the
--user
option for login to JOC Cockpit. - Consider use of the
-p
switch offering a secure option for interactive keyboard input.
...
- Specifies the identification of the Controller that holds related orders.
...
- Specifies the path to a file in PEM format that holds the Root CA Certificate and optionally Intermediate CA Certificates to verify HTTPS connections to JOC Cockpit.
...
- Specifies the path to a file in PEM format that holds the Client Certificate if HTTPS mutual authentication is used..
...
- Specifies the path to a file in PEM format that holds the Client Private Key if HTTPS mutual authentication is used..
...
- Specifies the maximum duration for requests to the JS7 REST Web Service. Default:
60
seconds.
...
- Specifies a qualifier that is added to newly created orders. Used with
add-order
command.
...
- Specifies the label of a block instruction such as JS7 - Resource Locks, should the
--start-position
option be used for a position inside the block instruction. Used withadd-order
command.
...
- Specifies the label of an instruction in the workflow from which the order is started, for example from a job. Used with
add-order
andresume-order
commands. - The label of a top-level instruction can be specified. For start positions from nested instructions the
--block-position
option has to be specified too.
...
- Specifies the label of an instruction before which the order will terminate. More than one label can be specified separated by comma. Used with
add-order
command. - If the
--block-position
option is used then the end position is inside the block. Otherwise the order will terminate when reaching the block's end.
...
- One or more variables can be specified that hold key/value pairs separated by comma. Used with
add-order
andresume-order
commands. - Example:
--variable="myVar1=myValue1,myVar2=myValue2"
...
- Specifies the date and time in ISO format of the daily plan date, for example
2023-10-23
. Used withcancel-order
andsuspend-order
commands. - Dates can be calculated from the
date
command, for example:--date-to="$(TZ=Europe/London date +'%Y-%m-%d')"
specifies the daily plan date before the current day in the Europe/London time zone.--date-to="$(TZ=Europe/London date --date="1 day ago" +'%Y-%m-%d')"
specifies the daily plan date before yesterday.
...
| --verbose | displays verbose output, repeat to increase verbosity
-p | --password | asks for password
-k | --key-password | asks for key password
-r | --recursive | specifies folders to be looked up recursively
-f | --force | specifies forced start or termination of jobs
--show-logs | shows log output if --log-dir is used
--make-dirs | creates directories if they do not exist |
Commands
add-order
- Adds an order to a workflow. Allows to specify the start position and end positions in the workflow in case that specific jobs only should be executed.
- Orders can be forced to start and to ignore JS7 - Admission Times for Jobs using the
--force
switch.
cancel-order
- Terminates an order which optionally includes to forcibly terminate running jobs using the
--force
switch.
- Terminates an order which optionally includes to forcibly terminate running jobs using the
suspend-order
,resume-order
- Suspends an order which optionally includes to forcibly terminate running jobs using the
--force
switch. - Resumes a previously suspended order, optionally from a different position in the workflow using the
--label
option.
- Suspends an order which optionally includes to forcibly terminate running jobs using the
letrun-order
- Orders in the pending, scheduled or waiting state for a JS7 - Cycle Instruction or JS7 - Retry Instruction can be forced to run immediately.
transfer-order
- Orders attached a previous version of a workflow for which a newer version exists are transferred to the latest version of the workflow.
suspend-workflow
,resume-workflow
- Suspends the worfklow and freezes orders in the given workflow.
- Resumes a previously suspended workflow. Frozen orders will awake and will continue.
stop-job
,unstop-job
- Stopping a job will prevent the job from running. A stopped job will suspend orders arriving at the job label.
- Unstopping a previously stopped job will allow orders to execute the job. Suspended orders must be resumed to execute the job.
skip-job
,unskip-job
- Skipping a job will prevent the job from running. Orders will skip the job and will continue with the next instruction.
- Unskipping a previously skipped job will allow orders to execute the job.
post-notice
,get-notice
,delete-notice
- Notices can be posted to resolve dependencies similar to use of the JS7 - PostNotices Instruction in workflows.
- Notices can be retrieved to check which workflow dependencies are resolved.
- Notices can be deleted to make workflows wait for dependencies as used with the JS7 - ExpectNotices Instruction and JS7 - ConsumeNotices Instruction.
encrypt
- Allows to encrypt a value using the
--in
option. If used to encrypt a file then--infile
and--outfile
options must be specified. - The
--cert
option specifies the path to a file holding the Certificate used for encryption. - Encryption is performed by Java libraries that are looked up in the
./lib
sub-directory of the JS7 Unix Shell CLI. For details see JS7 - Encryption and Decryption.
- Allows to encrypt a value using the
decrypt
- Allows to decrypt a value using the
--in
option. If used to decrypt a file then--infile
and--outfile
options must be specified. - The
--key
option specifies the path to the Private Key used for decryption. If the Private Key is protected by a password, then the--key-password
option or switch must be specified. - Decryption is performed by Java libraries that are looked up in the
./lib
sub-directory of the JS7 Unix Shell CLI.
- Allows to decrypt a value using the
Options
--url
- Specifies the URL by which JOC Cockpit is accessible using
<http|https>://<host>:<port>
. - Example: http://centostest-primary.sos:4446
- Example: https://centostest-primary.sos:4443
- Specifies the URL by which JOC Cockpit is accessible using
--user
- Specifies the user account for login to JOC Cockpit. If JS7 - Identity Services are available for Client authentication certificates that are specified with the
--client-cert
and--client-key
options then their common name (CN) attribute has to match the user account. - If a user account is specified then a password can be specified using the
--password
option or interactive keyboard input can be prompted using the-p
switch.
- Specifies the user account for login to JOC Cockpit. If JS7 - Identity Services are available for Client authentication certificates that are specified with the
--password
- Specifies the password used for the account specified with the
--user
option for login to JOC Cockpit. - Password input from the command line is considered insecure.
- Consider use of the
-p
switch offering a secure option for interactive keyboard input. - Consider use of the
encrypt
command to encrypt a password:./deploy-workflow.sh encrypt --in=root --cert=encrypt.crt
.- The encryption result will include the prefix
enc:
followed by the encrypted symmetric key, initialization vector and encrypted secret separated by space. - If an encrypted password is specified, then it will be decrypted using the Private Key file:
./deploy-workflow.sh <command> --password="enc:BF8J8KP7TPlxy..." --key=encrypt.key
.
- The encryption result will include the prefix
- Consider use of the
- Specifies the password used for the account specified with the
--controller-id
- Specifies the identification of the Controller that holds related orders.
--ca-cert
- Specifies the path to a file in PEM format that holds the Root CA Certificate and optionally Intermediate CA Certificates to verify HTTPS connections to JOC Cockpit.
--client-cert
- Specifies the path to a file in PEM format that holds the Client Certificate if HTTPS mutual authentication is used..
--client-key
- Specifies the path to a file in PEM format that holds the Client Private Key if HTTPS mutual authentication is used..
--timeout
- Specifies the maximum duration for requests to the JS7 REST Web Service. Default:
60
seconds.
- Specifies the maximum duration for requests to the JS7 REST Web Service. Default:
--order-name
- Specifies a qualifier that is added to newly created orders. Used with
add-order
command.
- Specifies a qualifier that is added to newly created orders. Used with
--block-position
- Specifies the label of a block instruction such as JS7 - Resource Locks, should the
--start-position
option be used for a position inside the block instruction. Used withadd-order
command.
- Specifies the label of a block instruction such as JS7 - Resource Locks, should the
--start-position
- Specifies the label of an instruction in the workflow from which the order is started, for example from a job. Used with
add-order
andresume-order
commands. - The label of a top-level instruction can be specified. For start positions from nested instructions the
--block-position
option has to be specified too.
- Specifies the label of an instruction in the workflow from which the order is started, for example from a job. Used with
--end-position
- Specifies the label of an instruction before which the order will terminate. More than one label can be specified separated by comma. Used with
add-order
command. - If the
--block-position
option is used then the end position is inside the block. Otherwise the order will terminate when reaching the block's end.
- Specifies the label of an instruction before which the order will terminate. More than one label can be specified separated by comma. Used with
--variable
- One or more variables can be specified that hold key/value pairs separated by comma. Used with
add-order
andresume-order
commands. - Example:
--variable="myVar1=myValue1,myVar2=myValue2"
- One or more variables can be specified that hold key/value pairs separated by comma. Used with
--date-from
- Specifies the date and time in ISO format of the daily plan date, for example
2023-10-23
. Used withcancel-order
andsuspend-order
commands. - Dates can be calculated from the
date
command, for example:--date-to="$(TZ=Europe/London date +'%Y-%m-%d')"
specifies the daily plan date before the current day in the Europe/London time zone.--date-to="$(TZ=Europe/London date --date="1 day ago" +'%Y-%m-%d')"
specifies the daily plan date before yesterday.
- Specifies the date and time in ISO format of the daily plan date, for example
--date-to
- Specifies the date and time in ISO format of the daily plan date, for example
2023-10-23
. Used withadd-order
,cancel-order
,suspend-order
,get-notice
anddelete-notice
commands. - Dates can be calculated from the Unix OS
date
command, for example:--date-to="$(TZ=Europe/London date +'%Y-%m-%d')"
specifies the daily plan date before the current day in the Europe/London time zone.--date-to="$(TZ=Europe/London date --date="1 day ago" +'%Y-%m-%d')"
specifies the daily plan date before yesterday.
- Specifies the date and time in ISO format of the daily plan date, for example
--time-zone
- Specifies the time zone to be used for the
--date-from
and--date-to
options. By default the system time zone is used. - The time zone is specified from an identifier as explained by https://en.wikipedia.org/wiki/List_of_tz_database_time_zones, for example
--time-zone=Europe/London
.
- Specifies the time zone to be used for the
--state
- Specifies one or more states - separated by comma - for which orders should be processed. Used with
cancel-order
,suspend-order
,resume-order
andletrun-order
commands. - Valid states include
PENDING, SCHEDULED, INPROGRESS, RUNNING, SUSPENDED, WAITING, PROMPTING, FAILED, BLOCKED
. - For example
--state=SCHEDULED,SUSPENDED,FAILED
will process orders holding any of the states specified.
- Specifies one or more states - separated by comma - for which orders should be processed. Used with
--folder
- Specifies one or more inventory folders from absolute paths - separated by comma - holding workflows that should be processed.
- For example
--folder=/ProductDemo/CyclicExecution,/ProductDemo/ScheduledExecution
will process workflows in the given folders. - If the
--recursive
switch is used then sub-folders will be looked up recursively.
--workflow
- Specifies one or more workflows - separated by comma - that should be processed. Used with most of the commands.
- For example
--workflow=Cyclic-Check,Daily-EOD
will consider theCyclic-Check
andDaily-EOD
workflows.
--order-id
- Specifies one or more order identifiers - separated by comma - for which orders should be processed. Used with
cancel-order
,suspend-order
,resume-order
andletrun-order
commands. - For example
--order-id=#2024-08-25#T54565139012-sos,#2024-08-25#T56189833113-sos
will process the indicated orders.
- Specifies one or more order identifiers - separated by comma - for which orders should be processed. Used with
--label
- Specifies one or more labels - separated by comma - for jobs that should be processed. Used with
stop-job
,unstop-job
,skip-job
andunskip-job
commands. - For example
--label=job1,job2
will consider jobs assigned the indicated labels.
- Specifies one or more labels - separated by comma - for jobs that should be processed. Used with
--notice-board
- Specifies one or more JS7 - Notice Boards - separated by comma - that should be processed. Used with the
post-notice
,get-notice
anddelete-notice
commands.
- Specifies one or more JS7 - Notice Boards - separated by comma - that should be processed. Used with the
--notice-id
- Specifies the identifier of a notice, frequently the daily plan date is used, for example
2024-08-21
. Used with thepost-notice
,get-notice
anddelete-notice
commands.
- Specifies the identifier of a notice, frequently the daily plan date is used, for example
--notice-lifetime
- Specifies the max. period for which the notice will be available. Periods such as
1h
,30m
can be specified. Used with thepost-notice
command.
- Specifies the max. period for which the notice will be available. Periods such as
--key
- When used with the
decrypt
command, specifies the path to a file that holds the Private Key used for decrypting in PEM format.
- When used with the
--cert
- When used with the
encrypt
command, specifies the path to a file that holds the CA signed or self-signed X.509 Certificate. Alternatively the path to a file holding the Public Key can be specified. The Certificate is expected in PEM format. - For encryption the Certificate must match the Private Key used for later decryption specified with the
--key
option.
- When used with the
--key-password
- When used with the
decrypt
command, specifies the password for access to the key file using the--key
option. - Password input from the command line is considered insecure.
- Consider use of the
-k
switch or more elaborate mechanisms, for example by temporarily populating the system keystore form a security key such as a YubiKey® or similar. - Consider use of encrypted passwords as explained with the
--password
option.
- Consider use of the
- When used with the
--in
- When used with the
encrypt
anddecrypt
commands, specifies the input value that should be encrypted or decrypted., - One of the options
--in
or--infile
can be specified.
- When used with the
--infile
- When used with the
encrypt
anddecrypt
commands, specifies the path to the input file that should be encrypted/decrypted. - One of the options
--in
or--infile
can be specified. This option requires use of the--outfile
option.
- When used with the
--outfile
- When used with the
encrypt
command, specifies the path to the output file that will be created holding the encrypted content of the input file. - When used with the
decrypt
command, specifies the path to the output file that will be created holding the decrypted content of the input file. - The option is required if the
--infile
option is specified
- When used with the
--java-home
- When used with the
encrypt
anddecrypt
commands or with encrypted passwords, specifies the Java home directory. By default theJAVA_HOME
environment variable is used to determine the location of Java. - The Java home directory is the top-level directory of a Java installation. The directory includes the
bin
sub-directory andjava
executable.
- When used with the
--java-lib
- When used with the
encrypt
anddecrypt
commands or with encrypted passwords, a number of Java libraries are required to perform encryption/decryption. - The Java libraries are expected in the
lib
sub-directory of the JS7 Unix Shell CLI. Default:./lib
.
- When used with the
--audit-message
- Specifies a message that is made available to the Audit Log.
- Specification of Audit Log messages can be enforced on a per user basis and for a JS7 environment.
--audit-time-spent
- Specifies the time spent to perform an operation which is added to the Audit Log.
- The option can be specified if the -
-audit-message
option is used.
--audit-link
- Specifies a link (URL) which is added to the Audit Log.
- The option can be specified if the -
-audit-message
option is used.
--log-dir
- If a log directory is specified then the script will log information about processing steps to a log file in this directory.
- File names are created according to the pattern:
operate-workflow.<yyyy>-<MM>-<dd>T<hh>-<mm>-<ss>.log
- For example:
operate-workflow.2022-03-19T20-50-45.log
Switches
-h | --help
- Displays usage.
-v | --verbose
- Displays verbose log output that includes requests and responses with the JS7 REST Web Service.
- When used twice as with
-v -v
then curl verbose output will be displayed.
-p | --password
- Asks the user for interactive keyboard input of the password used for the account specified with the
--user
option.. - The switch is used for secure interactive input as an alternative to use of the option
--password=<password>
.
- Asks the user for interactive keyboard input of the password used for the account specified with the
-k | --key-password
- Asks the user for interactive keyboard input of the password used for access to a keystore or key file specified with the
--keystore
or--key
options. - The switch is used for secure interactive input as an alternative to use of the
--key-password=<password>
option.
- Asks the user for interactive keyboard input of the password used for access to a keystore or key file specified with the
-r | --recursive
- Specifies that folders will be looked up recursively if the
--folder
option is used.
- Specifies that folders will be looked up recursively if the
-f | --force
- Specifies forcible processing. When used with the
add-order
command then JS7 - Admission Times for Jobs will be ignored and the job will be executed. When used withcancel-order
andsuspend-order
commands then a currently running job will be terminated. See JS7 - FAQ - How does JobScheduler terminate Jobs.
- Specifies forcible processing. When used with the
--show-logs
- Displays the log output created by the script if the
--log-dir
option is used.
- Displays the log output created by the script if the
--make-dirs
- If directories are missing that are indicated with the
--log-dir
option then they will be created.
- If directories are missing that are indicated with the
Exit Codes
0:
operation successful1
: argument errors3
: no objects found4
: JS7 REST Web Service is not reachable or reports errors
Examples
The following examples illustrate typical use cases.
Adding Orders
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# common options for connection to JS7 REST API
request_options=(--url=http://localhost:4446 --user=root --password=root --controller-id=controller)
# add ad hoc order
./operate-workflow.sh add-order "${request_options[@]}" \
--workflow=ap3jobs
# add ad hoc order for specific job
./operate-workflow.sh add-order "${request_options[@]}" \
--workflow=ap3jobs --start-position=job2 --end-position=job3
# add pending order
./operate-workflow.sh add-order "${request_options[@]}" \
--workflow=ap3jobs --date-to=never
# add scheduled order and force admission |
...
--date-to="$(TZ=Europe/London date +'%Y-%m-%d')"
specifies the daily plan date before the current day in the Europe/London time zone.--date-to="$(TZ=Europe/London date --date="1 day ago" +'%Y-%m-%d')"
specifies the daily plan date before yesterday.
...
- Specifies the time zone to be used for the
--date-from
and--date-to
options. By default the system time zone is used. - The time zone is specified from an identifier as explained by https://en.wikipedia.org/wiki/List_of_tz_database_time_zones, for example
--time-zone=Europe/London
.
...
- Specifies one or more inventory folders from absolute paths - separated by comma - holding workflows that should be processed.
- For example
--folder=/ProductDemo/CyclicExecution,/ProductDemo/ScheduledExecution
will process workflows in the given folders. - If the
--recursive
switch is used then sub-folders will be looked up recursively.
...
- Specifies one or more workflows - separated by comma - that should be processed. Used with most of the commands.
- For example
--workflow=Cyclic-Check,Daily-EOD
will consider theCyclic-Check
andDaily-EOD
workflows.
...
- Specifies one or more order identifiers - separated by comma - for which orders should be processed. Used with
cancel-order
,suspend-order
,resume-order
andletrun-order
commands. - For example
--order-id=#2024-08-25#T54565139012-sos,#2024-08-25#T56189833113-sos
will process the indicated orders.
...
- Specifies one or more labels - separated by comma - for jobs that should be processed. Used with
stop-job
,unstop-job
,skip-job
andunskip-job
commands. - For example
--label=job1,job2
will consider jobs assigned the indicated labels.
...
- Specifies one or more JS7 - Notice Boards - separated by comma - that should be processed. Used with the
post-notice
,get-notice
anddelete-notice
commands.
...
- Specifies the identifier of a notice, frequently the daily plan date is used, for example
2024-08-21
. Used with thepost-notice
,get-notice
anddelete-notice
commands.
...
- Specifies the max. period for which the notice will be available. Periods such as
1h
,30m
can be specified. Used with thepost-notice
command.
...
- Specifies a message that is made available to the Audit Log.
- Specification of Audit Log messages can be enforced on a per user basis and for a JS7 environment.
...
- Specifies the time spent to perform an operation which is added to the Audit Log.
- The option can be specified if the -
-audit-message
option is used.
...
- Specifies a link (URL) which is added to the Audit Log.
- The option can be specified if the -
-audit-message
option is used.
...
- If a log directory is specified then the script will log information about processing steps to a log file in this directory.
- File names are created according to the pattern:
operate-workflow.<yyyy>-<MM>-<dd>T<hh>-<mm>-<ss>.log
- For example:
operate-workflow.2022-03-19T20-50-45.log
Switches
-h | --help
- Displays usage.
-v | --verbose
- Displays verbose log output that includes requests and responses with the JS7 REST Web Service.
- When used twice as with
-v -v
then curl verbose output will be displayed.
-p | --password
- Asks the user for interactive keyboard input of the password used for the account specified with the
--user
option.. - The switch is used for secure interactive input as an alternative to use of the option
--password=<password>
.
- Asks the user for interactive keyboard input of the password used for the account specified with the
-r | --recursive
- Specifies that folders will be looked up recursively if the
--folder
option is used.
- Specifies that folders will be looked up recursively if the
-f | --force
- Specifies forcible processing. When used with the
add-order
command then JS7 - Admission Times for Jobs will be ignored and the job will be executed. When used withcancel-order
andsuspend-order
commands then a currently running job will be terminated. See JS7 - FAQ - How does JobScheduler terminate Jobs.
- Specifies forcible processing. When used with the
--show-logs
- Displays the log output created by the script if the
--log-dir
option is used.
- Displays the log output created by the script if the
--make-dirs
- If directories are missing that are indicated with the
--log-dir
option then they will be created.
- If directories are missing that are indicated with the
Exit Codes
0:
operation successful1
: argument errors3
: no objects found4
: JS7 REST Web Service is not reachable or reports errors
Examples
The following examples illustrate typical use cases.
Adding Orders
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# common options for connection to JS7 REST API request_options=(--url=http://localhost:4446 --user=root --password=root --controller-id=controller) # add ad hoc order ./operate-workflow.sh add-order "${request_options[@]}" \ --workflow=ap3jobs # add ad hoc order for specific job ./operate-workflow.sh add-order ${request_options[@]} \ --workflow=ap3jobs --start-position=job2 --end-position=job3 # add pending order=ap3jobs --order-name=sample-1 --date-to=now+15 --force |
Cancelling Orders
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# common options for connection to JS7 REST API request_options=(--url=http://localhost:4446 --user=root --password=root --controller-id=controller) # cancel orders by state ./operate-workflow.sh addcancel-order "${request_options[@]}" \ --workflow=ap3jobs --date-to=never=-2h --state=SCHEDULED,PROMPTING,SUSPENDED,INPROGRESS,RUNNING # add scheduled order and force admissioncancel orders by state, yesterday's start date, folder recursively ./operate-workflow.sh addcancel-order "${request_options[@]}" \ --workflowfolder=ap3jobs/ap --order-name=sample-1recursive --date-to=now+15 --force |
...
"$(TZ=Europe/London date + '%Y-%m-%d')" --state=SCHEDULED,PROMPTING,SUSPENDED,INPROGRESS,RUNNING |
Suspending and Resuming Orders
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# common options for connection to JS7 REST API request_options=(--url=http://localhost:4446 --user=root --password=root --controller-id=controller) # cancelsuspend orders byin stateworkflow ./operate-workflow.sh cancelsuspend-order "${request_options[@]}" \ --workflow=ap3jobs # suspend orders in workflow --workflow=ap3jobs --date-to=-2h --state=SCHEDULED,PROMPTING,SUSPENDED,INPROGRESS,RUNNING # cancel orders by state, yesterday's start date, folder recursivelyand terminate running job ./operate-workflow.sh suspend-order "${request_options[@]}" \ --workflow=ap3jobs --force # resume suspended orders in workflow ./operate-workflow.sh cancelresume-order "${request_options[@]}" \ --folder=/ap --recursive --date-to="$(TZ=Europe/London date + '%Y-%m-%d')" --state=SCHEDULED,PROMPTING,SUSPENDED,INPROGRESS,RUNNING |
...
workflow=ap3jobs --state=SUSPENDED |
Letting run Orders
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# common options for connection to JS7 REST API request_options=(--url=http://localhost:4446 --user=root --password=root --controller-id=controller) # suspend # let run waiting orders in workflow ./operate-workflow.sh suspendletrun-order "${request_options[@]}" \ --workflow=ap3jobs # suspend orders in workflow and terminate running job ./operate-workflow.sh suspend-order ${request_options[@]} \ --workflow=ap3jobs --force # resume suspended orders in workflow --state=WAITING |
Transferring Orders
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# common options for connection to JS7 REST API request_options=(--url=http://localhost:4446 --user=root --password=root --controller-id=controller) # transfer orders to latest workflow version ./operate-workflow.sh resumetransfer-order "${request_options[@]}" \ --workflow=ap3jobs --state=SUSPENDED |
...
Suspending and Resuming Workflows
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# common options for connection to JS7 REST API request_options=(--url=http://localhost:4446 --user=root --password=root --controller-id=controller-id=controller)) # suspend workflow ./operate-workflow.sh suspend-workflow "${request_options[@]}" \ --workflow=ap3jobs # let run waiting orders in resume workflow ./operate-workflow.sh letrunresume-orderworkflow "${request_options[@]}" \ --workflow=ap3jobs --state=WAITING |
...
Stopping and Unstopping Jobs
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# common options for connection to JS7 REST API request_options=(--url=http://localhost:4446 --user=root --password=root --controller-id=controller)=root --password=root --controller-id=controller) # stop jobs from labels ./operate-workflow.sh stop-job "${request_options[@]}" \ --workflow=ap3jobs --label=job1,job2 # transferunstop ordersjobs to latest workflow versionfrom labels ./operate-workflow.sh transferunstop-orderjob "${request_options[@]}" \ --workflow=ap3jobs |
...
--label=job1,job2 |
Skipping and Unskipping Jobs
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# common options for connection to JS7 REST API request_options=(--url=http://localhost:4446 --user=root --password=root --controller-id=controller) # suspend workflowskip jobs from labels ./operate-workflow.sh suspendskip-workflowjob "${request_options[@]}" \ --workflow=ap3jobs --label=job1,job2 # unskip jobs resumefrom workflowlabels ./operate-workflow.sh resumeunskip-workflowjob "${request_options[@]}" \ --workflow=ap3jobs |
...
--label=job1,job2 |
Posting, Reading and Deleting Notices
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# common options for connection to JS7 REST API request_options=(--url=http://localhost:4446 --user=root --password=root --controller-id=controller) # stop jobs from labels # post notice for current daily plan date ./operate-workflow.sh post-notice "${request_options[@]}" \ --notice-board=ap3jobs # post notice for specific daily plan date and lifetime ./operate-workflow.sh stoppost-jobnotice "${request_options[@]}" \ --workflownotice-board=ap3jobs --label=job1,job2notice-id=2024-08-26 --notice-lifetime=6h # unstopreading jobsnotices from notice labelsboard ./operate-workflow.sh unstopget-jobnotice "${request_options[@]}" \ --workflow=ap3jobs --label=job1,job2 |
Skipping and Unskipping Jobs
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# common options for connection to JS7 REST API request_options=(--url=http://localhost:4446 --user=root --password=root --controller-id=controller) # skip jobs from labels --notice-board=ap3jobs # reading specific notice from notice board ./operate-workflow.sh get-notice "${request_options[@]}" \ --notice-board=ap3jobs --notice-id=2024-08-26 # reading notices by folder ./operate-workflow.sh skipget-jobnotice "${request_options[@]}" \ --workflowfolder=ap3jobs/ap --label=job1,job2recursive # unskipdelete jobsnotices from labels notice board for current daily plan date ./operate-workflow.sh unskipdelete-jobnotice "${request_options[@]}" \ --workflow=ap3jobs --label=job1,job2 |
Posting, Reading and Deleting Notices
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# common options for connection to JS7 REST API request_options=(--url=http://localhost:4446 --user=root --password=root --controller-id=controller) # post notice for current daily plan datenotice-board=ap3jobs # delete specific notices from notice board using notice identifiers ./operate-workflow.sh delete-notice "${request_options[@]}" \ --notice-board=ap3jobs --notice-id=2024-08-25,2024-08-26 # delete notices by folder ./operate-workflow.sh postdelete-notice "${request_options[@]}" \ --notice-board=ap3jobs # post notice for specific daily plan date and lifetime ./operate-workflow.sh post-notice ${request_options[@]} \ --notice-board=ap3jobs --notice-id=2024-08-26 --notice-lifetime=6h # reading notices from notice board ./operate-workflow.sh get-notice ${request_options[@]} \ --notice-board=ap3jobs # reading specific notice from notice board ./operate-workflow.sh get-notice ${request_options[@]} \ --notice-board=ap3jobs --notice-id=2024-08-26 # reading notices by folder ./operate-workflow.sh get-notice ${request_options[@]} \ --folder=/ap --recursive # delete notices from notice board for current daily plan date ./operate-workflow.sh delete-notice ${request_options[@]} \ --notice-board=ap3jobs # delete specific notices from notice board using notice identifiers ./operate-workflow.sh delete-notice ${request_options[@]} \ --notice-board=ap3jobs --notice-id=2024-08-25,2024-08-26 # delete notices by folder --folder=/ap --recursive |
Encrypting and Decrypting
- Secrets can be encrypted and decrypted as explaind with JS7 - Encryption and Decryption.
- Encryption/decryption require related Java libraries that are available from the
./lib
sub-directory. - For creation of a Private Key and Certificate see JS7 - How to create X.509 Encryption Keys.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# create Private Key openssl ecparam -name secp384r1 -genkey -noout -out encrypt.key # create Certificate Signing Request openssl req -new -sha512 -nodes -key encrypt.key -out encrypt.csr -subj "/C=DE/ST=Berlin/L=Berlin/O=SOS/OU=IT/CN=Encrypt" # create Certificate openssl x509 -req -sha512 -days 1825 -signkey encrypt.key -in encrypt.csr -out encrypt.crt -extfile <(printf "keyUsage=critical,keyEncipherment,keyAgreement\n") # encrypt a secret such as a password using the Certificate, the encryption result will be returned and will look like: enc:BEXbHYa... ./deploy-controller.sh encrypt --in="root" --cert=encrypt.crt # options for connection to the JS7 REST API can specify the encryption result as password and the Private Key for decryption request_options=(--url=http://localhost:4446 --user=root --password="enc:BEXbHYa..." --key=encrypt.key --controller-id=controller) # for example, when adding an ad hoc order the Private Key is used to decrypt the password for access to the REST API on-the-fly ./operate-workflow.sh deleteadd-noticeorder "${request_options[@]} \ --folder=/ap --recursive" --workflow=ap3jobs # decrypt an encrypted secret using the Private Key ./deploy-controller.sh decrypt --in="enc:BEXbHYa..." --key=encrypt.key |
Resources
- API
- Workflow Status Operations
- Workflow Deployment Operations
- Controller Status Operations
- Controller Deployment Operations
Overview
Content Tools