6 Replies Latest reply: Apr 29, 2013 7:43 AM by Pavan69 RSS

    How to implement the BPM 11g Escalation process?

    Pavan69
      Hi Experts,

      Can any one throw some light with step by step process How to implement Escalation for 3 levels...

      For Example User1 Doesnt complete the task on certain time say 1 day then this task has to be escalated to his manager Say User2 and if doesnt complete the same task then it has to the second level manager for 1 day similary for the third level manager.

      Note:
      Where as an when User 1 task is escalated to the manager(User2) then User 1 Tasks has to be sent to the User2 even if its Array value.

      Please please experts throw some idea on this with an example...


      Regards,
      Pavan
        • 1. Re: How to implement the BPM 11g Escalation process?
          Daniel Atwood
          Hi Pavan,

          There are couple ways to do this. Here's the high level description of what you'd do if you wanted to define your escalation inside the process using boundary timer events.

          1. Add three Interactive activities and place them in three roles that represent the roles for your Users 1, 2 and 3.
          2. Add a "Timer Catch Event" onto the edge of your Interactive activity for your User 1. Associate the new timer event with the Interactive activity for your User 2. This will create a new boundary event and the escalation you want for User 1.
          3. Name the new boundary event "Escalate Issue" -> in the "Implementation" tab, define the new boundary timer event as an Interrupting Event -> specify the interval to be "1d" (one day).
          4. In the same way, add another interrupting boundary timer event between your Interactive activites for User 2 and 3.

          I might have missed something, but it sounds like your array is just a process data object variable that would be carried as part of the payload with the work item instance as it travels through the process.

          For the human tasks for User 2 and User 3, you'd need to assign the task to the manager of the previous participant.

          Hope this helps,
          Dan
          • 2. Re: How to implement the BPM 11g Escalation process?
            Pavan69
            Hi Daniel,

            Thanks a lot..

            I've implemented in the same manner as u suggest It worked....

            But here comes new requirement on Escalation...

            How Can i Map or escalte to User 2 or User 3 Or User 4 Directly from User 1.(Note: It shouldn't be a Sequence It should Escalte directly to either of User2 or User 3 or User 4 based on requirement.. So Wat exactly the logic should i use in this case...

            Regards,
            Pavan
            • 3. Re: How to implement the BPM 11g Escalation process?
              Pradeep Sahu
              I believe you can use parametric roles using business rule.So at run time you can decide whom it should be escalated to.

              http://www.avioconsulting.com/blog/datwood/2012/08/27/creating-parametric-roles-using-business-rules
              • 4. Re: How to implement the BPM 11g Escalation process?
                Pavan69
                OK Pradeep I'll look into this.. Thanks for Suggestion its helpful and please throw some light on the below query.

                But if i need to set the time in timer event using Xpath functions on payload i.e., bpmn:getDataObject how can i implemenet the same for the escalation..

                I.e., if i want to set the Array string to be converted it into String tokenizer do we have a specific xpath function how can i implement the same????

                Regards,
                Pavan
                • 5. Re: How to implement the BPM 11g Escalation process?
                  Daniel Atwood
                  Hi Pavan,

                  Good question and it brings up another point that you need to be aware of. When setting a deadline for a work item instance in an Interactive activity, you not only need to set the deadline for the Timer event, but also the deadline for the human task that is associated with the Interactive activity.

                  The reason you set the deadline in the Timer event is to automatically move the instance to the next activity downstream in the process when the timer expires. You also should set the deadline for the human task that is associated with the Interactive activity. The reason you want to set this for the human task is to populate the "Expires" column in the Workspace's Task List so that end users will be able to see exactly when the work item instances in their queue expire.

                  These examples assume you want to wait a certain number of days and this number is passed in using the variable "sla".

                  Setting the Interactive Activity's Deadline Using a Timer Boundary Event

                  To set the boundary timer event on an Interactive activity, in the timer event - if you use the radio button "Time Date", the XPath expression to set the number of days based on a variable would be:
                  xp20:add-dayTimeDuration-to-dateTime(xp20:current-dateTime(),concat('P0Y0M'  ,bpmn:getActivityInstanceAttribute('inputDataItem')/ns:sla,'DT0H0M0.0S'))
                  If you instead select the timer event's "Time Cycle" radio button, the logic would be:
                  concat('P0Y0M',bpmn:getActivityInstanceAttribute('inputDataItem')/ns:sla,'DT0HM0.0S')
                  Setting the Human Task's Deadline

                  This timer can also be set programmatically from a process variable that has been passed into human task using an XPath expression. In the human task's "Deadline" tab select "By Expression" from the dropdown. You would use XPath expression shown below if you had a string or integer variable called "Sla" and you wanted to set the number of days based on this variable:
                  concat("P0Y0M",/task:task/task:payload/task:Sla,"DT0H0M0.0S")
                  Hope this helps,
                  Dan
                  • 6. Re: How to implement the BPM 11g Escalation process?
                    Pavan69
                    Thanks Daniel...

                    It helped me a lot... Thanks a ton.


                    Regards,
                    Pavan