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

  • No labels

23 Comments

  1. 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.

    1. 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.

      1. The values for "weekends" property should be comma separated, not period. Please try: 1,7

        1. Success!!!

          Thx a lot :)

  2. 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!!!

    1. 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!

      1. 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?

  3. 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?

    1. 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

      INFO  13 May 2011 00:19:41 org.joget.workflow.shark.DeadlineChecker  - Deadline checking time initialized to 30000 ms. Deadline times: null. Checking 100 instances per transaction, ignoring 10 failures for profile default

      in your log when it runs.

      1. 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?

        1. The line that you tell me I can´t found in the log :(

          1. Sorry, I'm blind... I send you the line with the instructions.

        2. 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.

          1. 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?

            1. 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.

              1. 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.

                1. Hi Hugo,

                  I sent to your email the package.  I hope taht you can see the problem.

                  Thanks a lot!!!

                  1. Hi,

                    I have uploaded the package to the forum so that everyone else can help to look into your matter as well!

                    1. 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

  4. 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...

    1. You should setup the deadline for an activity like this:

      Not on the "Limit" field.
      Hope this helps.

    2. 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.

      1. 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!