You can use the Jobs component to submit jobs to its job pool instantly. The job can be created and submitted either using the console’s Builder or using the Java, Node.js or Python SDK.
Before you submit a job to the job pool, you need to ensure:
Navigate to the Catalyst Job Scheduling Service section of the console, then click Start Exploring.
Navigate to Jobs under JOB EXECUTOR present in the side-bar, then click Create Job.
Create Job Using Builder
Provide a name for your job in the Job Name input field.
Select the Job Pool you wish to submit this job in using the Select Job Pool drop-down.
Note: If you have not previously created any job pools, click Create New. You will be directed to the Job Pool section. Steps to create a job pool can be found here.
Based on your job pool’s Target Type, the steps to configure a job vary. For the purposes of this help documentation, we are going to create a job for the Function Job Pool.
Note: You can find the steps to configure a job for:
If you have not created a Job Function, click Create New. You will be directed to the Catalyst Serverless section of the console. You can find steps to create a Job Function from this section.
You can also enable the toggle present in the pop up to pass Query Parameters to your Job Function when the job triggers the function.
Note:Query Parameters are custom parameters that you can pass to your job function. They are passed in a User-Defined format, and you customize the parameter value and include any terms that you require to be passed in the parameter.
You can click the Show Advanced Options to provide resubmission instructions.
You can choose the number of retries you wish to attempt from the No. of Retries drop-down, and you can choose the time interval between each retry attempt using the Retry Interval drop-down.
Note: The retries will only be attempted if the initial submission of the job ended in Failure status. You can choose to attempt a maximum of 10 retries with a minimum retry interval of 1 minute and a maximum retry interval of 24Hrs.
Confirm your configurations and click Create.
Once you click Create, the job will be immediately submitted to the job pool for execution. This makes the Builder option a great tool to test your job pools performance.
Create Job Using SDK
Click the SDK tab.
Based on your target type requirement, choose the relevant SDK from the drop-down.
Function Target Type
Select The required runtime, and click the copy button to copy the code snippet.
Submit Job
copy
// FUNCTION JOB
// get job scheduling instance
ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance();
ZCJobpool jobpool = jobScheduling.jobpoolInstance(“test”); // create a job pool instance for the function job pool named test
// generate function job meta
ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder
.setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional)
.setTargetName(“target_function”) // set target function’s name (optional) (either TargetName or TargetId is mandatory)
// .setTargetId(1234567890L) // set the target function’s Id (optional) (either TargetName or TargetId is mandatory)
.setParams(new JSONObject() {
{
put(“arg1”, “job”);
put(“arg2”, “test”);
}
}) // set params to be passed to target function (optional)
.setJobName(“job_name”) // set job name
.build(); // build job meta
// submit function job
ZCJobDetails functionJob = jobpool.submitJob(jobMeta);
const jobpool = jobScheduling.jobpool({ name: ’test’ }); // create job pool instance for the function job pool named test
// create function job
const functionJob = await jobpool.submitJob({
job_name: ’test_job’, // set a name for the job
target_type: ‘Function’, // set the target type as Function for function jobs
target_name: ’target_function’, // set the target function’s name (optional) (either target_id or target_name is mandatory)
// target_id: ‘123467890’, // set the target functions’s Id (optional) (either target_id or target_name is mandatory)
params: {
arg1: ’test’,
arg2: ‘job’
}, // set params to be passed to target function (optional)
job_config: {
number_of_retries: 2, // set the number of retries
retry_interval: 15 * 60 * 1000 + ’’ // set the retry interval
} // set job config - job retries => 2 retries in 15 mins (optional)
});
jobpool = job_scheduling.jobpool(jobpool_name=“test”) # create jobpool instance for the function jobpool named test
# create function job
function_job = jobpool.submit_job({
‘job_name’: ’test_job’, # set a name for the job
’target_type’: ‘Function’, # set the target type as Function for function jobs
’target_name’: ’target_function’, # set the target function’s name (optional) (either target_id or target_name is mandatory)
# ’target_id’: ‘123467890’, # set the target functions’s Id (optional) (either target_id or target_name is mandatory)
‘params’: {
‘arg1’: ’test’,
‘arg2’: ‘job’
}, # set params to be passed to target function (optional)
‘job_config’: {
’number_of_retries’: 2, # set the number of retries
‘retry_interval’: 15 * 60 * 1000 # set the retry interval
} # set job config - job retries => 2 retries in 15 mins (optional)
})
View more
Circuit Target Type
Select The required runtime, and click the copy button to copy the code snippet.
Submit Job
copy
// CIRCUIT JOB
// get job scheduling instance
ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance();
// create a job pool instance
ZCJobpool jobpool = jobScheduling.jobpoolInstance(“test”); // create a job pool instance for the circuit job pool named test
// generate circuit job meta
ZCJobMetaDetail jobMeta = ZCJobBuilder.circuitJobBuilder() // create circuit job builder
.setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional)
.setTargetName(“target_circuit”) // set target circuits’s name (optional) (either TargetName or TargetId is mandatory)
// .setTargetId(1234567890L) // set the target circuits’s Id (optional) (either TargetName or TargetId is mandatory)
.setCircuitInput(new JSONObject() {
{
put(“key1”, “value1”);
put(“key2”, “value2”);
}
}) // set the test cases for the circuit
.setJobName(“test_job”) // set job name
.build(); // build circuit job meta
const jobpool = jobScheduling.jobpool({ name: ’test’ }); // create job pool instance for the circuit job pool named test
// create circuit job
const circuitJob = await jobpool.submitJob({
job_name: ’test_job’, // set a name for the job
target_type: ‘Circuit’, // set the target type as Circuit for circuit jobs
target_name: ’target_circuit’, // set the target circuit’s name (optional) (either target_id or target_name is mandatory)
// target_id: ‘123467890’, // set the target circuit’s Id (optional) (either target_id or target_name is mandatory)
test_cases: {
arg1: “job”,
arg2: “test”
}, // set the circuit test cases
job_config: {
number_of_retries: 2, // set the number of retries
retry_interval: 15 * 60 * 1000 + ’’ // set the retry interval
} // set job config - job retries => 2 retries in 15 mins (optional)
});
jobpool = job_scheduling.jobpool(jobpool_name=“test”) # create jobpool instance for the circuit jobpool named test
# create circuit job
circuit_job = jobpool.submit_job({
‘job_name’: ’test_job’, # set a name for the job
’target_type’: ‘Circuit’, # set the target type as Circuit for circuit jobs
’target_name’: ’target_circuit’, # set the target circuit’s name (optional) (either target_id or target_name is mandatory)
# ’target_id’: ‘123467890’, # set the target circuit’s Id (optional) (either target_id or target_name is mandatory)
’test_cases’: {
‘arg1’: ‘job’,
‘arg2’: ’test’
}, # set the circuit test cases
‘job_config’: {
’number_of_retries’: 2, # set the number of retries
‘retry_interval’: 15 * 60 * 1000 # set the retry interval
} # set job config - job retries => 2 retries in 15 mins (optional)
})
View more
Webhook Target Type
Select The required runtime, and click the copy button to copy the code snippet.
Submit Job
copy
// WEB HOOK JOB
// get job scheduling instance
ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance();
// create a job pool instance
ZCJobpool jobpool = jobScheduling.jobpoolInstance(“test”); // create a job pool instance for the webhook job pool named test
// generate webhook job meta
ZCJobMetaDetail jobMeta = ZCJobBuilder.webhookJobBuilder() // create webhook job builder
.setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional)
.setRequestMethod(“POST”) // set webhook request’s method
.setUrl(“https://catalyst.zoho.com”) // set webhook request’s url
.setParams(new JSONObject() {
{
put(“arg1”, “test”);
put(“arg2”, “job”);
}
}) // set the webhook request’s query params (optional)
.setHeaders(new JSONObject() {
{
put(“IS_TEST_REQUEST”, “true”);
}
}) // set the webhook request’s headers (optional)
.setRequestBody(“test_request”) // set the webhook request’s body (optional)
.setJobName(“test_job”) // set job name
.build(); // build webhook job meta
const jobpool = jobScheduling.jobpool({ name: ’test’ }); // create job pool instance for the webhook job pool named test
// create webhook job
const webhookJob = await jobpool.submitJob({
job_name: ’test_job’, // set a name for the job
target_type: ‘Webhook’, // set the target type as Webhook for webhook jobs
request_method: ‘POST’, // set the webhook request’s method
url: ‘https://catalyst.zoho.com’, // set the webhook request’s url
params: {
arg1: ’test’,
arg2: ‘job’
}, // set the webhook request’s query params (optional)
headers: {
IS_TEST_REQUEST: ’true’
}, // set the webhook request’s headers (optional)
request_body: ’test_request’, // set the webhook request’s body (optional)
job_config: {
number_of_retries: 2, // set the number of retries
retry_interval: 15 * 60 * 1000 + ’’ // set the retry interval
} // set job config - job retries => 2 retries in 15 mins (optional)
});
jobpool = job_scheduling.jobpool(jobpool_name=“test”) # create jobpool instance for the webhook jobpool named test
# create webhook job
webhook_job = jobpool.submit_job({
‘job_name’: ’test_job’, # set a name for the job
’target_type’: ‘Webhook’, # set the target type as Webhook for webhook jobs
‘request_method’: ‘POST’, # set the webhook request’s method
‘url’: ‘https://catalyst.zoho.com’, # set the webhook request’s url
‘params’: {
‘arg1’: ’test’,
‘arg2’: ‘job’
}, # set the webhook request’s query params (optional)
‘headers’: {
‘IS_TEST_REQUEST’: ’true’
}, # set the webhook request’s headers (optional)
‘request_body’: ’test_request’, # set the webhook request’s body (optional)
‘job_config’: {
’number_of_retries’: 2, # set the number of retries
‘retry_interval’: 15 * 60 * 1000 # set the retry interval
} # set job config - job retries => 2 retries in 15 mins (optional)
})
View more
AppSail Target Type
Select The required runtime, and click the copy button to copy the code snippet.
Submit Job
copy
// APPSAIL JOB
// get job scheduling instance
ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance();
// create a job pool instance
ZCJobpool jobpool = jobScheduling.jobpoolInstance(“test”); // create a job pool instance for the appsail job pool named test
// generate appsail job meta
ZCJobMetaDetail jobMeta = ZCJobBuilder.appSailJobBuilder() // create appsail job builder
.setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional)
.setTargetName(“test_appsail”) // set appsail name
.setRequestMethod(“POST”) // set appsail request method
.setUrl("/test") // set appsail request url
.setParams(new JSONObject() {
{
put(“arg1”, “value1”);
put(“arg2”, “value2”);
}
}) // set appsail request query params
.setHeaders(new JSONObject() {
{
put(“IS_TEST_REQUEST”, “true”);
}
}) // set the appsail request’s headers (optional)
.setRequestBody(“test_request”) // set the appsail request’s body (optional)
.setJobName(“test_job”) // set job name
.build(); // build appsail job meta
const jobpool = jobScheduling.jobpool({ name: ’test’ }); // create job pool instance for the appsail job pool named test
// create appsail job
const appsailJob = await jobpool.submitJob({
job_name: ’test_job’, // set a name for the job
target_type: ‘AppSail’, // set the target type as AppSail for appsail jobs
target_name: ’target_appsail’, // set the target appsail’s name (optional) (either target_id or target_name is mandatory)
// target_id: ‘123467890’, // set the target appsail’s Id (optional) (either target_id or target_name is mandatory)
request_method: ‘POST’, // set the appsail request’s method
url: ‘/test’, // set the appsail’s url path (optional)
params: {
arg1: ’test’,
arg2: ‘job’
}, // set the appsail request’s query params (optional)
headers: {
IS_TEST_REQUEST: ’true’
}, // set the appsail request’s headers (optional)
request_body: ’test_request’, // set the appsail request’s body (optional)
job_config: {
number_of_retries: 2, // set the number of retries
retry_interval: 15 * 60 * 1000 + ’’ // set the retry interval
} // set job config - job retries => 2 retries in 15 mins (optional)
});
jobpool = job_scheduling.jobpool(jobpool_name=“test”) # create jobpool instance for the appsail jobpool named test
# create appsail job
appsail_job = jobpool.submit_job({
‘job_name’: ’test_job’, # set a name for the job
’target_type’: ‘AppSail’, # set the target type as AppSail for appsail jobs
’target_name’: ’target_appsail’, # set the target appsail’s name (optional) (either target_id or target_name is mandatory)
# ’target_id’: ‘123467890’, # set the target appsail’s Id (optional) (either target_id or target_name is mandatory)
‘request_method’: ‘POST’, # set the appsail request’s method
‘url’: ‘/test’, # set the appsail’s url path (optional)
‘params’: {
‘arg1’: ’test’,
‘arg2’: ‘job’
}, # set the appsail request’s query params (optional)
‘headers’: {
‘IS_TEST_REQUEST’: ’true’
}, # set the appsail request’s headers (optional)
‘request_body’: ’test_request’, # set the appsail request’s body (optional)
‘job_config’: {
’number_of_retries’: 2, # set the number of retries
‘retry_interval’: 15 * 60 * 1000 # set the retry interval
} # set job config - job retries => 2 retries in 15 mins (optional)
})
View more
Paste the snippet in your code file and engineer your logic.
The job that you create for your project will always be available in the Job component section.
Once the job is submitted, you will be able to view all the general details of the submitted job in the Job Definition section. You will also be able to view the status of the job execution in the Job Execution & Status section.
The execution status of the job will also be labeled at the top next to the Job Name. You will also be provided with the Job Definition in a JSON code format that you can copy and use to submit a new job with the same specifications. You can also visit the logs of the execution generated in DevOps’s Logs component by clicking the View Logs button.