You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ofbiz.apache.org by Koon Sang <ko...@igine.com> on 2010/04/06 13:06:34 UTC

Calling groovy from scheduled job (OFVIZ 9.04)

Hello,

I have created a scheduled job to run at certain time.  The job calls my
service which I define as the followoing:

    <service name="AutoNotificationCertificateExpiry" engine="groovy"
location="component://order/webapp/ordermgr/order/RunAutoNotification.groovy"
invoke="">
        <description>Auto-notification Certificate Expiry</description>
    </service>  


RunAutoNotification.groovy is as follows (omitting the import):

try
{
	AutoNotification notification = new AutoNotification(delegator,
dispatcher);
	notification.notifyUsersOfExpiringCertificate();
	
	return "success"
}
catch (Exception e)
{
	Debug.logError(e, "error", "RunAutoNotification.groovy");
	return "error"
}


I noticed that during OFBIZ startup, the job is called.  However, I got the
following error:

groovy.lang.MissingPropertyException: No such property: delegator for class:
RunAutoNotification
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getGroovyObjectProperty(ScriptBytecodeAdapter.java:537)
RunAutoNotification.run(RunAutoNotification.groovy:7)
org.ofbiz.base.util.GroovyUtil.runScriptAtLocation(GroovyUtil.java:117)
org.ofbiz.service.engine.GroovyEngine.serviceInvoker(GroovyEngine.java:64)
org.ofbiz.service.engine.GroovyEngine.runSync(GroovyEngine.java:52)
org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:390)
org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:219)
org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:159)
org.ofbiz.service.job.GenericServiceJob.exec(GenericServiceJob.java:69)
org.ofbiz.service.job.JobInvoker.run(JobInvoker.java:241)
java.lang.Thread.run(Unknown Source)


Looking at the error log, I guess "delegator" cannot be found.  I just
wonder how I can get a reference of delegator and dispatcher to pass to
groovy for scheduled job.  The code runs fine if I called it from a web
page.

Your kind advice is appreciated.
Thank you.

-- 
View this message in context: http://n4.nabble.com/Calling-groovy-from-scheduled-job-OFVIZ-9-04-tp1752673p1752673.html
Sent from the OFBiz - User mailing list archive at Nabble.com.

Re: Calling groovy from scheduled job (OFVIZ 9.04)

Posted by Koon Sang <ko...@igine.com>.
Thanks, Joe.  It is working fine now.
-- 
View this message in context: http://n4.nabble.com/Calling-groovy-from-scheduled-job-OFVIZ-9-04-tp1752673p1753750.html
Sent from the OFBiz - User mailing list archive at Nabble.com.

Re: Calling groovy from scheduled job (OFVIZ 9.04)

Posted by Joe Eckard <jo...@redrocketcorp.com>.
You can get the delegator from the dispatch context, which is  
populated in the binding for groovy services as "dctx".

delegator = dctx.getDelegator(); // add to RunAutoNotification.groovy


On Apr 6, 2010, at 7:06 AM, Koon Sang wrote:

>
> Hello,
>
> I have created a scheduled job to run at certain time.  The job  
> calls my
> service which I define as the followoing:
>
>    <service name="AutoNotificationCertificateExpiry" engine="groovy"
> location="component://order/webapp/ordermgr/order/ 
> RunAutoNotification.groovy"
> invoke="">
>        <description>Auto-notification Certificate Expiry</description>
>    </service>
>
>
> RunAutoNotification.groovy is as follows (omitting the import):
>
> try
> {
> 	AutoNotification notification = new AutoNotification(delegator,
> dispatcher);
> 	notification.notifyUsersOfExpiringCertificate();
> 	
> 	return "success"
> }
> catch (Exception e)
> {
> 	Debug.logError(e, "error", "RunAutoNotification.groovy");
> 	return "error"
> }
>
>
> I noticed that during OFBIZ startup, the job is called.  However, I  
> got the
> following error:
>
> groovy.lang.MissingPropertyException: No such property: delegator  
> for class:
> RunAutoNotification
> org 
> .codehaus 
> .groovy 
> .runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
> org 
> .codehaus 
> .groovy 
> .runtime 
> .ScriptBytecodeAdapter 
> .getGroovyObjectProperty(ScriptBytecodeAdapter.java:537)
> RunAutoNotification.run(RunAutoNotification.groovy:7)
> org.ofbiz.base.util.GroovyUtil.runScriptAtLocation(GroovyUtil.java: 
> 117)
> org 
> .ofbiz.service.engine.GroovyEngine.serviceInvoker(GroovyEngine.java: 
> 64)
> org.ofbiz.service.engine.GroovyEngine.runSync(GroovyEngine.java:52)
> org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java: 
> 390)
> org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java: 
> 219)
> org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java: 
> 159)
> org.ofbiz.service.job.GenericServiceJob.exec(GenericServiceJob.java: 
> 69)
> org.ofbiz.service.job.JobInvoker.run(JobInvoker.java:241)
> java.lang.Thread.run(Unknown Source)
>
>
> Looking at the error log, I guess "delegator" cannot be found.  I just
> wonder how I can get a reference of delegator and dispatcher to pass  
> to
> groovy for scheduled job.  The code runs fine if I called it from a  
> web
> page.
>
> Your kind advice is appreciated.
> Thank you.
>
> -- 
> View this message in context: http://n4.nabble.com/Calling-groovy-from-scheduled-job-OFVIZ-9-04-tp1752673p1752673.html
> Sent from the OFBiz - User mailing list archive at Nabble.com.