Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
outlinh1. true
outlinh1. true
1printablefalse
2stylh1. none
3indent20px

Using You can use the Job Scheduler Powershell Adapter , it's possible to create jobs or pre-/postprocessors that use the JobScheduler API in Powershell.

...

Usage

The Powershell Adapter uses the JobScheduler COM interface.

...

  • Have the <script> use the com_class JSPowershellAdapter.JobAdapter
  • define a parameter powershell_script which points to the location of the Powershell job implementation
    • If the path is relative, it needs to be relative to the SCHEDULER_DATA directory
  • write a powershell Job implementation which at least implements Function spooler_process()

Example job definition

Code Blocknoformat
    <?xml version=versioh1. "1.0" encoding="ISO-8859-1"?>
  
    <job>
        <params>
            <param name=namh1. "test" value="12345"/>
            <param namh1. name="powershell_script" value="powershell\powershell_job.ps1"/>
        </params>    
        <script com_class=clash1. "JSPowershellAdapter.JobAdapter"/>
        <run_time once="no"/>
    </job>

Example Powershell Job script

Code Blocknoformat
    Function spooler_init()
    \{	
        if ($spooler_log)
        \{
            $spooler_log.info("This is spooler_init") 
            $spooler_log.info("TaskID: "+$spooler_task.id) 
        \}	
        
        return $true
    \}
  
    Function spooler_open()
    \{	
        $spooler_log.info("This is spooler_open") 
        return $true;
    \}
  
    Function spooler_process()
    \{	
        $taskId =$taskIdh1. $spooler_task.id
        $spooler_log.info("This is spooler_process, in task id "+$taskId) 
        $order = $spooler_task.order
        if ($order)
        \{        
            $orderId$orderIdh1. = $order.id
            $spooler_log.info("processing order "+$orderId) 
            return $true
        \}
        return $false;
    \}
  
    Function spooler_close()
    \{	
        $spooler_log.info("This is spooler_close") 
    \}
  
    Function spooler_exit()
    \{	
        $spooler_log.info("This is spooler_exit") 
    \}
  
    Function spooler_on_success()
    \{	
        $spooler_log.info("This is spooler_on_success") 
    \}
  
    Function spooler_on_error()
    \{	
        $spooler_log.info("This is spooler_on_error") 
    \}

...

  • Have the <monitor><script/></monitor> use the com_class JSPowershellAdapter.JobAdapter
  • define a parameter powershell_monitor_script which points to the location of the Powershell pre-/postprocessor implementation
    • If the path is relative, it needs to be relative to the SCHEDULER_DATA directory
  • write a powershell pre-/postprocessor implementation

Example job definition

Code Blocknoformat
    <?xml version="1.0" encoding=encodinh1. "ISO-8859-1"?>

<job>

No Format
Code Block

    <job>
        <params>		
            <param name="powershell_monitor_script" value=valuh1. "powershell\powershell_monitor.ps1"/>
        </params>
        <script language="javascript">
            <\![CDATA[
    function spooler_process()\{
        spooler_log.info("this is javascript");
Code Block

return

...

false;

No Format
    \}
            ]]>
        </script>
        <monitor>    
            <script com_class="JSPowershellAdapter.JobAdapter"/>    
        </monitor>
    </job>

Example Powershell pre-/postprocessor script

Code Blocknoformat
    Function spooler_task_before()
    \{
        $spooler_log.info("powershell: This is spooler_task_before")
        return $true
    \}
Code Block

Function

...

spooler_process_before()

No Format
    \{
        $spooler_log.info("powershell: This is spooler_process_before")
        return $true
    \}
Code Block

Function

...

spooler_process_after(

...

bool

...

$spooler_process_result)

code
No Format
    \{
        $spooler_log.info("powershell: This is spooler_process_after with result $spooler_process_result")
        return $spooler_process_result
    \}

    

Function

...

spooler_task_after()

No Format
    \{
        $spooler_log.info("powershell: This is spooler_task_after")
    \}