Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
Hi all,
I have a strenge problem while running a simple process :
it a classic request/approve process :
My problem is at the end of the approve activity, when the line manager complete his task, the form should close and I should go back to the refreshed inbox page but it doesn't.. (the notifications are sent but the page doesn't "refresh").
Any idea ?
thanks,
Antoine
8 Comments
Hugo
Hi there,
Is there any error in your tomcat log? It would be helpful for us in order to help you to troubleshoot your problem.
Tiensoon
The Task Inbox doesn't refresh immediately; the refresh interval is governed by a setting in System Setup - "Inbox Task Count Polling Interval"
Damien Ng
Inbox should get refreshed after an assignment/form is completed and closed.
Please refer to http://dev.joget.org/svn/joget/trunk/wflow-wfweb/src/main/webapp/WEB-INF/jsp/workflow/assignmentView.jsp
antoine le maire
hi,
there seems to be a login and password required on this page (which I'm not shure I have)
The inbox usually get refreshed after I complete any other assignment/form is complete but not here.. (it seems that the page you gave me could help me)
There don't seems to be any error in the log, I just have the usual email notifications informations :
Here is the log I have after completing the approval assignment :
- Assignment 802_701_IT_expenses_approve accepted
INFO 08 Jun 2011 10:17:01 org.joget.form.util.DynamicLocalSessionFactoryBean -
Building new Hibernate SessionFactory
INFO 08 Jun 2011 10:17:02 org.joget.workflow.controller.WorkflowJsonController
- VARIABLE: status = accepted
INFO 08 Jun 2011 10:17:02 org.joget.workflow.shark.WorkflowToolActivityHandler
- Executing tool [pluginName=org.joget.plugin.email.EmailPlugin, processId=IT#1
4#expenses, version= 14, activityId=approved_notification]
ERROR 08 Jun 2011 10:17:02 org.joget.workflow.util.WorkflowUtil - java.lang.Nul
lPointerException
java.lang.NullPointerException
at org.joget.workflow.model.service.WorkflowManagerImpl.getUserByProcess
IdAndActivityDefId(WorkflowManagerImpl.java:4854)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflecti
on(AopUtils.java:310)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJo
inpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.in
voke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:171)
at org.springframework.transaction.interceptor.TransactionInterceptor.in
voke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:171)
at org.joget.workflow.util.AuditTrailInterceptor.invoke(AuditTrailInterc
eptor.java:17)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:171)
at org.joget.workflow.util.AuditTrailInterceptor.invoke(AuditTrailInterc
eptor.java:17)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invok
e(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynami
cAopProxy.java:204)
at $Proxy9.getUserByProcessIdAndActivityDefId(Unknown Source)
at org.joget.workflow.util.WorkflowUtil.processVariable(WorkflowUtil.jav
a:445)
at org.joget.workflow.util.WorkflowUtil.processVariable(WorkflowUtil.jav
a:278)
at org.joget.plugin.email.EmailPlugin.execute(EmailPlugin.java:81)
at org.joget.workflow.shark.WorkflowToolActivityHandler.executeActivity(
WorkflowToolActivityHandler.java:88)
at org.enhydra.shark.WfActivityImpl.runTool(WfActivityImpl.java:1487)
at org.enhydra.shark.WfActivityImpl.startActivity(WfActivityImpl.java:14
19)
at org.enhydra.shark.WfActivityImpl.activate(WfActivityImpl.java:261)
at org.enhydra.shark.WfProcessImpl.startActivity(WfProcessImpl.java:918)
at org.enhydra.shark.WfProcessImpl.queueNext(WfProcessImpl.java:1134)
at org.enhydra.shark.WfProcessImpl.run(WfProcessImpl.java:750)
at org.enhydra.shark.WfProcessImpl.activity_complete(WfProcessImpl.java:
969)
at org.enhydra.shark.WfActivityImpl.finish(WfActivityImpl.java:441)
at org.enhydra.shark.WfActivityImpl.complete(WfActivityImpl.java:366)
at org.enhydra.shark.WfActivityWrapper.complete(WfActivityWrapper.java:2
30)
at org.joget.workflow.model.service.WorkflowManagerImpl.assignmentComple
te(WorkflowManagerImpl.java:4574)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflecti
on(AopUtils.java:310)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJo
inpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.in
voke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:171)
at org.springframework.transaction.interceptor.TransactionInterceptor.in
voke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:171)
at org.joget.workflow.util.AuditTrailInterceptor.invoke(AuditTrailInterc
eptor.java:21)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:171)
at org.joget.workflow.util.AuditTrailInterceptor.invoke(AuditTrailInterc
eptor.java:21)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invok
e(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynami
cAopProxy.java:204)
at $Proxy9.assignmentComplete(Unknown Source)
at org.joget.workflow.model.WorkflowFacade.assignmentComplete(WorkflowFa
cade.java:465)
at org.joget.workflow.controller.WorkflowJsonController.assignmentComple
te(WorkflowJsonController.java:1237)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.
doInvokeMethod(HandlerMethodInvoker.java:413)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.
invokeHandlerMethod(HandlerMethodInvoker.java:134)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandle
rAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:310)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandle
rAdapter.handle(AnnotationMethodHandlerAdapter.java:297)
at org.joget.commons.spring.web.ParameterizedAnnotationMethodHandlerAdap
ter.handle(ParameterizedAnnotationMethodHandlerAdapter.java:30)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(Dispatch
erServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService(Dispatche
rServlet.java:809)
at org.springframework.web.servlet.FrameworkServlet.processRequest(Frame
workServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServ
let.java:511)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain
.doFilter(FilterChainProxy.java:359)
at org.springframework.security.intercept.web.FilterSecurityInterceptor.
invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.intercept.web.FilterSecurityInterceptor.
doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain
.doFilter(FilterChainProxy.java:371)
at org.springframework.security.ui.SessionFixationProtectionFilter.doFil
terHttp(SessionFixationProtectionFilter.java:67)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringS
ecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain
.doFilter(FilterChainProxy.java:371)
at org.joget.workflow.security.WorkflowNtlmProcessingFilter.doFilterHttp
(WorkflowNtlmProcessingFilter.java:52)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringS
ecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain
.doFilter(FilterChainProxy.java:371)
at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHt
tp(ExceptionTranslationFilter.java:101)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringS
ecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain
.doFilter(FilterChainProxy.java:371)
at org.springframework.security.providers.anonymous.AnonymousProcessingF
ilter.doFilterHttp(AnonymousProcessingFilter.java:105)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringS
ecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain
.doFilter(FilterChainProxy.java:371)
at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp
(AbstractProcessingFilter.java:271)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringS
ecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain
.doFilter(FilterChainProxy.java:371)
at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp
(AbstractProcessingFilter.java:271)
at org.joget.workflow.security.WorkflowHttpAuthProcessingFilter.doFilter
Http(WorkflowHttpAuthProcessingFilter.java:39)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringS
ecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain
.doFilter(FilterChainProxy.java:371)
at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(Logo
utFilter.java:89)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringS
ecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain
.doFilter(FilterChainProxy.java:371)
at org.springframework.security.context.HttpSessionContextIntegrationFil
ter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringS
ecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain
.doFilter(FilterChainProxy.java:371)
at org.springframework.security.util.FilterChainProxy.doFilter(FilterCha
inProxy.java:174)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(D
elegatingFilterProxy.java:236)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(Delegat
ingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterIntern
al(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ss(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:44
7)
at java.lang.Thread.run(Thread.java:619)
INFO 08 Jun 2011 10:17:03 org.joget.plugin.email.EmailPlugin$1 - EmailPlugin:
Sending email from=joget@orange-ftgroup.com, to=antoine.lemarie@orange-ftgroup.c
om, cc=, subject=your expenses request has been approved
INFO 08 Jun 2011 10:17:03 org.joget.plugin.email.EmailPlugin$1 - EmailPlugin:
Sending email completed for subject=your expenses request has been approved
thanks,
Antoine
Akers C
Did you build Joget from source? If yes, then you should be able to access to assignmentView.jsp inside your own Joget directory. Please take note that the path is the same as mentioned by Damien, wflow-wfweb\WEB-INF\jsp\workflow\.
Sam Choo
Hi Antoine,
Are you using hash variables in the email plugin? Could you share a capture of your email plugin configuration?
From my experience, if a plugin crashes after the activity, the form doesn't close, like what you are experiencing. Remove the mappings for both email plugins (tools) and try running your process again. Then, use the 'Completed Processes' under 'Monitor Processes' link to verify first that both tools were 'executed' (of course, without a result since we had remove the Email Plugin mappings).
If all is working well for the setting above, it points to your Email Plugin configuration... which we'll be more than happy to help you with after you've verified this ;-)
Thanks.
antoine le maire
Hi Sam,
It looks like I had problems with the hash variables I used in my email notifications...
I removed every hash variable of my email configurations and the page refresh again.
That's it for my refresh problem ! I now have a hash variables problem... :)
I'm trying to put the expenses amount that the requestor filled in his activity on the email notification subject.
I tried with #form.amount# and #form.expenses_table.amount# (expenses_table is the table I use in the process and amount the field id of the amount in the expenses request form)
Both return an empty string in my email subject...
How can I reach datas from previous forms of the process ?
Should I use a workflow variable ?
thanks,
Antoine
Sam Choo
Hi Antoine,
There shouldn't be any issues using 'form' hash variables in the Email Plugin Subject as well as Content fields. If you have specified the Form Data Table name in the Email Plugin config, then #form.amount# should work for you. I'm sure you're aware by now that everything's case sensitive, so do check that again.
I'd try other form fields. At the same time, you could also browse the database (using something like HeidiSQL, and making sure you're at the right port, i.e. 3307), go the database, and in your case, look for the table 'formdata_expenses_table'. You'll find a couple of rows already populated, but I hope not too many in your case, to look for your latest form input, just to make sure that the column is actually populated.
I hope this helps. If not, give more details of your implementation and we'll look further in detail.
Sam