Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
Dear All,
I have set the Configure Plugin in the Manage Plugins.
Is it necessary to use the Workflow Variable?
How to use Deadline Plugin in detail?
Thanks
23 Comments
Tiensoon
No, Deadline Plugin is not dependent on workflow variable. The Deadline Plugin that you have purchased from Joget Marketplace, is used in conjunction with deadline setting of a workflow activity. You may refer to Deadlines and Escalations for a reference on how activity deadline can be designed in Workflow Designer.
We can use the Deadline Plugin to configure public holidays, weekends and non working hours, so that the deadline calculation will exclude these non-working hours.
You may refer to the documentation (HTML file) attached with the plugin zip that you have downloaded from Joget Marketplace, for reference on each of the 4 configuration properties.
Saleh Ibrahim
hello tiensoon,
I have tried to follow your steps in Deadlines and Escalations, but it doesn't work.
My configuration of deadlines plugin are as follows:
holiday: 1-12-2010,25-12-2010
weekends: 1.7
working hours (from): 0830
working hour (to): 1730
as an example, I created a workflow on Friday at 17.00 and expired in 1 hour later.
My assumption, workflow should be expired on Monday at 09.00, right?
but, the results that emerge are the workflow is lost on Saturday (not on current activity and not in the next activity)
I've tried to change the working hours (from) to be: 08:30 and working hours (to) be: 17:30, but the results are workflow is moving to the next activity on Friday at 18.00 (apparently ignoring the deadline plugin).
please help me.
Tiensoon
The values for "weekends" property should be comma separated, not period. Please try: 1,7
Saleh Ibrahim
Success!!!
Thx a lot :)
Victoria Eugenia Patarroyo
Hi,
I purchased the Deadline Plugin from Joget Marketplace. This plugin has been upload in Manage Plugings and I did its configuration:
Holidays: 12-05-2011, 06-06-2011, 27-06-2011, 04-07-2011, 20-07-2011, 15-08-2011, 17-10-2011, 07-11-2011, 14-11-2011, 08-12-2011
Weekends: 1,7
Working hour from: 0700
Working hour to: 1700
I started a new process that have one day limit, but I saw that the activity has a due date may 12th (holiday in mu test configuration).
I think that need configurate some activity in the workflow... but I don't know...
Some can I help me?
Thank you!!!
Hugo
Hey there,
Perhaps you may want to take a look at this article for a while Deadlines and Escalations
But feel free to post here again if you can't figure your own way out!
Victoria Eugenia Patarroyo
Hi Hugo,
Thanks for your answer. But I need configurate Deadline Plugin only for holidays and non-working days. I review the path when I found the plugin and I see that then name of the file has the word "SNAPSHOT".
I think that must be the problem. What do you think?
Victoria Eugenia Patarroyo
Hi Hugo,
Thanks for your answer. But I need configurate Deadline Plugin only for holidays and non-working days. I review the path when I found the plugin and I see that then name of the file has the word "SNAPSHOT".
I think that must be the problem. What do you think?
Hugo
Hey there,
Just a quick one. Did you enable the deadline checker? You can set it at System Setup -> Timer Settings -> Process Deadline Checker Interval. You can set it to maybe to value 60.
You will be seeing something like
in your log when it runs.
Victoria Eugenia Patarroyo
Hi,
I configurate the Process Deadline Checker Interval. In the log I found this instruction:
2011-05-12 11:27:12,568: Deadline checking time initialized to 60000 ms. Deadlin
e times: null. Checking 100 instances per transaction, ignoring 10 failures for
profile sample
It is correct?
Victoria Eugenia Patarroyo
The line that you tell me I can´t found in the log :(
Victoria Eugenia Patarroyo
Sorry, I'm blind... I send you the line with the instructions.
Hugo
Yes that's it!
Now your deadline cron is running at interval of 60 seconds. Now, try and start a new process and see if the deadline take in account of the off-days.
Hope it helps.
Victoria Eugenia Patarroyo
Hi Hugo,
I start a new process and obtain this information in the log:
May 12, 2011 12:10:23 PM org.joget.plugin.deadline.DeadlinePlugin execute
WARNING: Error executing plugin
java.lang.NullPointerException
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1215)
at java.text.DateFormat.parse(DateFormat.java:335)
at org.joget.plugin.deadline.DeadlinePlugin.execute(DeadlinePlugin.java:
58)
at org.joget.workflow.shark.WorkflowJavaScriptEvaluator.evaluateExpressi
on(WorkflowJavaScriptEvaluator.java:127)
at org.enhydra.shark.WfActivityImpl.reevaluateDeadlines(WfActivityImpl.j
ava:2351)
at org.enhydra.shark.WfActivityImpl.activate(WfActivityImpl.java:233)
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)
Do you know what is the problem?
Victoria Eugenia Patarroyo
Hi,
I have the same problem. The deadline Plugin doesn't respet non-working days. I uninstall and install the plugin, restat the server... and every activity has a limit in hours.
Hugo
Hi there,
Can you share with us your process package as well as your deadline plugin configurations here so that we can try to replicate your problem?
I have just checked on it and designed my own process to test the plugin out. It worked as expected.
Victoria Eugenia Patarroyo
Hi Hugo,
I sent to your email the package. I hope taht you can see the problem.
Thanks a lot!!!
Hugo
Hi,
I have uploaded the package to the forum so that everyone else can help to look into your matter as well!
Hugo
Hi there,
I have uploaded a very simple straight forward package that uses deadline plugin. The activity is set to expiry in 10 seconds and jumps to activity 3 and terminates activity 1. Have it a go and see if you are getting any sort of error in the joget server console or not.
http://dev.joget.org/community/download/attachments/2195986/package-test_deadline-20110516154158.zip
Hugo
Victoria Eugenia Patarroyo
Hi,
I have uploaded a new package version that uses deadline plugin. I added a new activity and the unit duration is hours (process header). The activity 2 has 50 hours limit. The deadline plugin configuration is:
In the workflow I need that the due date of the Activity 2 respect non-working days, from and to working hour, and also holidays (deadline plugin configuration).
package-test_deadline-20110518112128.zip
I don't know what can be the error...
Damien Ng
You should setup the deadline for an activity like this:
Not on the "Limit" field.
Hope this helps.
Hugo
Hi,
Bear in mind that the due date and date limit that you see in monitor processes -> view activity is of the result of setting SLA limit to 50 hours.
This is NOT the due date that the deadline plugin is using and will not kick in at the due date that we are seeing above. It will kick in much later in respect to the settings set in the deadline plugin.
Hugo
Deadlines give you greater control on the flow of activities in the respect of timing. You may have few deadlines set on a single activity.
For example, Activity A has 2 deadlines.
First deadline - 2 hours - send notification email to the performer.
Second deadline - 4 hours - terminates current activity and move on to the next desired activity.
To monitor performance, we may want to make use of SLA.
We can only assign a value to each activity in which in our case here, we may set it to 2 hours. The SLA is used only for benchmarking on the punctuality/performance of an activity and it is NOT used for process flow control.
Feel free to get back to us if you are unsure about my explanation!
Good luck!