You are not logged in.
Hi,
I have written a groovy script to create schedule for a given report.
Report Id and the scheduled date are the parameters of this script.
When I executed this script from the CLI command it works fine and schedule is created as expected
exec -c scheduller.groovy 23086 'at 17.05.2024 17:30'
But I want to execute this groovy script via url and I was trying below url for this
But it does not execute my script (there is norecords in my scheduled list)
can I know if anything wrong in this url?
Thank you
Last edited by sakunthala (2024-05-20 09:17:04)
Offline
Hi sakunthala!
Wow! Cool idea!
Maybe those apostrophes ' are your problem? Try using %27 instead (this should be equivalent to ')
I'm always using JS (JQuery) functions to build my request. Especially "encodeURIComponent"
$.ajax({
type: "POST",
url: url,
data: { args: encodeURIComponent(JSON.stringify({ user: $("#rs_username").val(), pw: $("#rs_password").val()})) },
success: function (resp) { $("#rs_logout").show() },
error: function (resp) { },
})
If you just need your hard encoded URL... change type to "GET" and have a look into the "development console" of your browser in "network" you can see the used url... since i'm lazy => this is how i get my urls to paste them where i use them "hard coded"
Softwareentwickler bei Infofabrik
Offline
hi Felix,
Thank you for your answer. But still I am having the same problem in this url. When I copy and paste the url in the browser the script (id=71312) does not execute. It loads the reportserver dashboard instead
http://<ip:port>/reportserver/#fileservermgr/scriptAccess?id=71312
I referred to this documentation https://reportserver.net/en/guides/scri … ts-via-URL
Thank you
Sakunthala
Last edited by sakunthala (2024-05-20 10:24:45)
Offline
Hi,
"#fileservermgr" is wrong at this point! try http://<ip:port>/<tomcat webapps dir>/reportserver/scriptAccess?id=71312
where tomcat webapps dir is the directory where your ReportServer is installed => if i'm lazy I install it under root, the moste people (as well as our documentation) prefere "webapps/reportserver/"
Softwareentwickler bei Infofabrik
Offline
hi Felix,
Yes now it seems script is executing. Thank you for your answer.
Sakunthala
Offline
hi Felix,
Now I can execute the script using the url. But still It doesn't create a schedule for me. When I check the log I can see the below error. This error occurs when I execute the script using commands as well. Do you have any solution for this? This is my groovy script
import net.datenwerke.security.service.usermanager.UserManagerService
import net.datenwerke.rs.core.service.reportmanager.ReportService
import net.datenwerke.rs.scheduler.service.scheduler.jobs.report.ReportExecuteJob
import net.datenwerke.rs.core.service.reportmanager.ReportExecutorService
import net.datenwerke.rs.core.service.datasinkmanager.DatasinkTreeService
import net.datenwerke.rs.ftp.service.ftp.definitions.SftpDatasink
import net.datenwerke.rs.ftp.service.ftp.action.ScheduleAsSftpFileAction
import net.datenwerke.scheduler.service.scheduler.nlp.NlpTriggerService
import net.datenwerke.scheduler.service.scheduler.SchedulerService
REPORT_ID = 23086
DATE_EXPRESSION = 'at 25.05.2024 17:30'
JOB_NAME = 'Test Job'
JOB_DESCRIPTION = 'A Test Job Description'
OUTPUT_FORMAT = ReportExecutorService.OUTPUT_FORMAT_PDF
OWNER_ID = 6L // the ID of the Owner
EXECUTOR_ID = 6L // the ID of the Executor
RECIPIENT_IDS = [6L] // the IDs of the Recipients
// SFTP settings
SFTP_DATASINK = 'Demo SFTP Datasink'
FOLDER = 'Archive'
SFTP_FILENAME='My Report'
def triggerService = GLOBALS.getInstance(NlpTriggerService)
def schedulerService = GLOBALS.getInstance(SchedulerService)
def reportService = GLOBALS.getInstance(ReportService)
def userManagerService = GLOBALS.getRsService(UserManagerService)
def datasinkTreeService = GLOBALS.getInstance(DatasinkTreeService)
//def reportId = args[0].toInteger()
def report = reportService.getReportById(REPORT_ID) // get Report by ID
def owner = userManagerService.getNodeById(OWNER_ID)
def executor = userManagerService.getNodeById(EXECUTOR_ID)
def recipients = userManagerService.getUsers(RECIPIENT_IDS)
/* create the Report Job and add the corresponding owner, executor and recipients */
def job = new ReportExecuteJob(report: report, owners: [owner] ,executor: executor, recipients: recipients as List, outputFormat: OUTPUT_FORMAT)
def sftpDatasink = datasinkTreeService.getDatasinkByName(SFTP_DATASINK)
def action = new ScheduleAsSftpFileAction( name: SFTP_FILENAME,folder: FOLDER)
/* add the description, version, actions etc. */
job.title = JOB_NAME
job.description = JOB_DESCRIPTION
job.actions = [action]
/* parse the date with nlp */
def trigger = triggerService.parseExpression DATE_EXPRESSION
/* schedule the job via the schedulerService */
schedulerService.schedule job, trigger
-------------------------Error Log ------------------------------------------------------------------
21-May-2024 16:19:08.267 WARNING [scriptExec-30] net.datenwerke.rs.incubator.service.schedulernotification.SchedulerNotificationHooker.jobScheduled scheduler notification error
java.lang.NullPointerException: Cannot invoke "net.datenwerke.security.service.usermanager.UserManagerService.getUsers(java.util.Collection, boolean)" because "this.userService" is null
at net.datenwerke.rs.scheduler.service.scheduler.jobs.report.ReportExecuteJob.getRecipients(ReportExecuteJob.java:103)
at net.datenwerke.rs.incubator.service.schedulernotification.SchedulerNotificationHooker.jobScheduled(SchedulerNotificationHooker.java:191)
at net.datenwerke.scheduler.service.scheduler.SchedulerServiceImpl.lambda$1(SchedulerServiceImpl.java:260)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at net.datenwerke.scheduler.service.scheduler.SchedulerServiceImpl.schedule(SchedulerServiceImpl.java:260)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at myscripts.Script48.run(Script48.groovy:53)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:331)
at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:72)
at net.datenwerke.rs.scripting.service.scripting.engines.GroovyEngine.eval(GroovyEngine.java:78)
at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl.executeScript(ScriptingServiceImpl.java:231)
at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl.executeScript(ScriptingServiceImpl.java:282)
at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl$$EnhancerByGuice$$1145253108.GUICE$TRAMPOLINE(<generated>)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74)
at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:40)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
at com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55)
at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl$$EnhancerByGuice$$1145253108.executeScript(<generated>)
at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl.executeScript(ScriptingServiceImpl.java:335)
at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl$$EnhancerByGuice$$1145253108.GUICE$TRAMPOLINE(<generated>)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74)
at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:40)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
at com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55)
at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl$$EnhancerByGuice$$1145253108.executeScript(<generated>)
at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl.executeScript(ScriptingServiceImpl.java:307)
at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl$$EnhancerByGuice$$1145253108.GUICE$TRAMPOLINE(<generated>)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74)
at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:40)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
at com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55)
at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl$$EnhancerByGuice$$1145253108.executeScript(<generated>)
at net.datenwerke.rs.scripting.service.scripting.terminal.commands.ExecScriptCommand.doTransactionExecute(ExecScriptCommand.java:363)
at net.datenwerke.rs.scripting.service.scripting.terminal.commands.ExecScriptCommand$$EnhancerByGuice$$881504958.GUICE$TRAMPOLINE(<generated>)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74)
at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:64)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
at com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55)
at net.datenwerke.rs.scripting.service.scripting.terminal.commands.ExecScriptCommand$$EnhancerByGuice$$881504958.doTransactionExecute(<generated>)
at net.datenwerke.rs.scripting.service.scripting.terminal.commands.ExecScriptCommand$1$1.doFilter(ExecScriptCommand.java:289)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:89)
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121)
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133)
at net.datenwerke.rs.scripting.service.scripting.terminal.commands.ExecScriptCommand$1.call(ExecScriptCommand.java:284)
at net.datenwerke.rs.scripting.service.scripting.terminal.commands.ExecScriptCommand$1.call(ExecScriptCommand.java:1)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.lang.Thread.run(Thread.java:833)
Offline
hi Felix,
I resolved that issue after added scheduler permission to my user. Thank you for your support.
Sakunthala
Offline