Prerequisites on Linux
The Perl support of JobScheduler engine should be switched to the latest Perl release (currently 5.18.2) (http://www.sos-berlin.com/jira/browse/JS-1096).
The JobScheduler needs a library ./lib/libsosperlscript.<perl-version>.so which is included in the setup.
Since JobScheduler release 1.6.4043 the library ./lib/libsosperlscript.5.18.2.so is included which is compiled with Perl 5.18.2.
This library works with Perl versions 5.12.x, 5.14.x, 5.16.x too.
32Bit JobScheduler
- You have to install a 32Bit Perl or a 64Bit Perl with a additional 32Bit Perl interpreter
- Create 2 symlinks in the ./lib directory of the JobScheduler installation
- The first symlink with the name libperl.so have to point to the 32Bit Perl interpreter libperl.so of the Perl installation
- The second symlink with the name libsosperlscript.so have to point to the ./lib/libsosperlscript.<perl-version>.so.
In the ./lib directory of the JobScheduler installation you find the following libsosperlscript.<perl-version>.so.
- libsosperlscript.5.18.2.so
- libsosperlscript.5.14.0.so (deprecated)
- libsosperlscript.5.12.0.so (deprecated)
- libsosperlscript.5.10.0.so (deprecated)
- libsosperlscript.5.8.8.so (deprecated)
For example you have a Perl installation with version 5.12.3 and the 32Bit libraries are located in /usr/lib/perl5.
Then go to the ./lib directory of the JobScheduler installation and create the following symlinks:
> ln -s /usr/lib/perl5/5.12.3/i586-linux-thread-multi/CORE/libperl.so libperl.so > ln -s libsosperlscript.5.12.0.so libsosperlscript.so
Since JobScheduler Release 1.6.4043 you have to point the second symlink to libsosperlscript.5.18.2.so.
> ln -s libsosperlscript.5.18.2.so libsosperlscript.so
Otherwise you get an error like
[ERROR] COM-80020009 DISP_E_EXCEPTION [begin] [] [COM-800401F8 CO_E_DLLNOTFOUND [CoGetClassObject] [perlScript], in Remote_module_instance_server::begin], method=call [info] dlopen("libsosperlscript.so"): /install/path/of/jobscheduler/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /install/path/of/jobscheduler/lib/libsosperlscript.so)
64Bit JobScheduler
- You have to install a 64Bit Perl
- Create 2 symlinks in the ./lib directory of the JobScheduler installation
- The first symlink with the name libperl.so have to point to the 64Bit Perl interpreter libperl.so of the Perl installation
- The second symlink with the name libsosperlscript.so have to point to the ./lib/libsosperlscript.<perl-version>.so.
In the ./lib directory of the JobScheduler installation you find the following libsosperlscript.<perl-version>.so.
- libsosperlscript.5.18.2.so
- libsosperlscript.5.8.8.so (deprecated)
For example you have a Perl installation with version 5.12.3 and the 64Bit libraries are located in /usr/lib/perl5.
Then go to the ./lib directory of the JobScheduler installation and create the following symlinks:
> ln -s /usr/lib/perl5/5.12.3/x86_64-linux-thread-multi/CORE/libperl.so libperl.so > ln -s libsosperlscript.5.18.2.so libsosperlscript.so
Prerequisites on Windows
You have to install an ActivePerl with the same number of bits like the JobScheduler.
Job Example
Now you can test the JobScheduler-Perl-API with e.g. the following job.
<job> <script language="perlScript"> <![CDATA[ sub spooler_init \{ my $rc = 1; $spooler_log->info("spooler_init"); return $rc; \} sub spooler_process \{ my $rc = 1; $spooler_log->info("spooler_process"); $spooler_log->info($spooler_job->name . " is running"); return signal_return($rc); \} sub spooler_exit \{ $spooler_log->info("spooler_exit"); \} ################################################### # This method provides that the method # spooler_process is called only for one time. # # Standalone Jobs: # JobScheduler continues calling the spooler_process # method until it returns 0. # # Order Jobs in a Job Chain: # The Order acquires the next node in the Job Chain # if spooler_process returns 1 # and the error node if spooler_process returns 0 # # see http://www.sos-berlin.com/doc/en/scheduler.doc/api/Job_impl-perl.xml#method__spooler_process ################################################### sub signal_return \{ my ($rc) = @_; if(defined($spooler_task->order)) \{ #is an Order Job return $rc; \} return 0; \} ]]> </script> <run_time/> </job>
For more information about the JobScheduler API look at http://www.sos-berlin.com/doc/en/scheduler.doc/api/api-perl.xml