BPM, Workflow, and Case

 View Only
  • 1.  Updating data on inflight instance when task is pending at next activity in the flow

    Posted Sat January 18, 2020 01:38 PM
    Hi All,

    We have a requirement where when the flow moves ahead from task A to Task B then if the owner of the task A wants to add some more information in the request then how can he do that without the owner of Task B returning the task to previous task A?

    I have few ideas to implement this but I want to confirm if there are any hidden risks and challenges in implementing this.

    1. Create a Event Sub-process and initiate a new task "A" in the existing instance and update the info and send it to the owner of Task "B" by following the usual process flow so now the owner of task "B" has 2 tasks.

    2. Create an optional task and move it's token to the Task "A" and then just follow the regular flow to generate an additional task for the owner of task Task "B"

    We don't want to ask the owner of Task B to return the task as it may not be good user experience.

    Any other ideas?

    Thanks

    ------------------------------
    Harish Gupta
    ------------------------------


  • 2.  RE: Updating data on inflight instance when task is pending at next activity in the flow

    IBM Champion
    Posted Sat January 18, 2020 11:51 PM
    Hi Harish,

    Are you looking to add complete new set of data to task A or update something in the same task A before completing the task A ?
    If same business object needs to be updated then, I think the option 1 is good enough, I have done similar implementation to update instance data from inside a task. Basically, you have an event subprocess which is responsible for taking the updated data from inside task A and update the data to the process instance level business object so that once task A is completed, task B can consume the updated data.

    Atanu Roy

    ------------------------------
    [Atanu] [Roy]
    [Barclays],[Pune] [India]
    ------------------------------



  • 3.  RE: Updating data on inflight instance when task is pending at next activity in the flow

    Posted Sun January 19, 2020 08:10 AM
    Hi Atanu,

    Thanks for responding to my query.

    My requirement is not only updating the data and make it available to Task "B" but when I regenerate the Task "A" and update data, it should follow the same workflow.

    There are some intermediary tasks between Task "A" and Task "B" i.e.  Task "A"(active token present after regenerating the task A)  -----> Task "A1"   ----> Task "A2" ---> Task "B"(active token present from previous flow).

    Here the token present at Task"A" has to go through the intermediary tasks like Task "A1" and Task "A2" before reaching to Task "B".

    So basically, Client's requirement is to be able to send multiple chunks of work(task) to the owner of Task "B" based on need(it should be optional) and all these tasks must follow the same workflow.

    Is this design correct to achieve this requirement?

    Thanks

    ------------------------------
    Harish Gupta
    ------------------------------



  • 4.  RE: Updating data on inflight instance when task is pending at next activity in the flow

    IBM Champion
    Posted Mon January 20, 2020 02:39 AM
    I think in that case, you can implement the same Task A implementation (if the optional tasks are same as Task A) in an event subprocess and trigger that based on the requirement.

    If those tasks are optional, means those tasks are not necessarily be in completed state in order to complete the process instance, then you can use the user task as not connected Ad-Hoc basis. In that case you need to select the "Must the activity be completed ?" as "No. This activity is optional" and check the "Repeatable" checkbox in the general configuration of the activity. 

    In the Preconditions configuration, can use "A variable is updated" option to easily start the activity by just updating a variable from the trigger point. Alternatively, you can use JavaScript API to start the Ad-Hoc activity (https://www.ibm.com/support/knowledgecenter/SSFPJS_8.6.0/com.ibm.wbpm.wle.editor.doc/topics/starting_ad_hoc_activity.html)


    ------------------------------
    [Atanu] [Roy]
    [Barclays],[Pune] [India]
    ------------------------------



  • 5.  RE: Updating data on inflight instance when task is pending at next activity in the flow

    Posted Mon January 20, 2020 02:32 PM
    It feels to me like we need more data about the user experience to get to the right answer.  Here are the things I would want to know -
    1. Do we want a task to remain in the inbox for the person who works task A until task B starts?
    2. If not, how do we want the Task A user to initiate the data change.
    3. When task B starts, does the ability to send a change go away?  (I really hope so).

    Let's assume the answer is 1) Yes, keep it in the inbox (I dislike this but want to pick something for the model). Then 2) is "Not needed", and 3 is yes.

    I would model it as follows -
    1. Add a split before Task B.  One leg goes to B the other to A.
    2. Add an IME Listener on Task A.  It should interrupt task A and go to an end point.
    3. Add an IME Listener on Task B.  It also should interrupt (B) and go to an end point.
    4. First action in Task B should be to trigger task A's IME.
    5. First action in Task A should be to trigger task B's IME (note - neither should be durable).
    6. You likely need to add either a confirm screen or an oops button to task A when it is invoked a 2nd time.  Oops would re-issue Task B with the original data.  "Confirm" would happen before the IME call so you don't accidentally revoke task B just because you hit "run" on the wrong task.

    If you likely need the IME on B even if this is ad-hoc, as we need to cancel the original task if the data is updated.  The question there is "What is the right user experience for finding the instance to update".  In my experience that is generally a custom screen as the OOTB approach for ad-hoc is rarely intuitive for business users.

    -Andrew Paier

    ------------------------------
    Andrew Paier
    ------------------------------



  • 6.  RE: Updating data on inflight instance when task is pending at next activity in the flow

    Posted Tue January 28, 2020 12:47 PM
    Edited by Harish Gupta Tue January 28, 2020 12:55 PM
      |   view attached
    Thanks Andrew for your kind response.

    The way I am planning to design it is :(Please refer the attachment)

    1. First I will make the parent object of my Process as Shared Business Object which will make sure that we have updated data in parallel tasks.
    2. I will create an independent optional task in the process which I am going to use to trigger and generate a token and then move this token to the Task A so that it gets activated and user can update the data.

    About your question :

    When task B starts, does the ability to send a change go away?  (I really hope so).

    My answer is "No". The "Task A" owner should be able to initiate the data change whenever he wants until the instance is complete.


    ------------------------------
    Harish Gupta
    ------------------------------



  • 7.  RE: Updating data on inflight instance when task is pending at next activity in the flow

    Posted Tue January 28, 2020 02:32 PM
    I have a few concerns about the use of shared business objects.

    The first one is mostly FUD, but I've heard from the field that people have encountered performance problems with using Shared Business Objects at scale.  I don't have first hand data on this one, but wanted you to be aware.

    The 2nd one is the lack of data contention resolution.  Your scenario is okay (but not great) if the data that can be edited in "Review User Details" and "Approve User Details" cannot be edited in "Create User Details" but if that is not the case, shared business objects is a "Last Write Wins" model, so if there are edits to the same field, someone is going to report a "bug" that their update got lost / over written.  Update conflicts are not handled but the Business Object on its own.

    3rd issue is - if the data is changed After "Review" but before "Approve" what happens?

    4th issue - double check that Shard Business Objects update the value in the UI if I'm looking at it and another user updates it.  I don't know if that currently works or not.

    5th issue - Your process looks broken to me, as I read the flow as "Create -> Review -> Approve" but Approve goes back to Create, so to get to the "End" we have to go through "Review"?  Something feels not right.

    ------------------------------
    Andrew Paier
    ------------------------------



  • 8.  RE: Updating data on inflight instance when task is pending at next activity in the flow

    Posted Tue January 21, 2020 08:54 AM
    You could also use a shared business object and implement a defaultUI, that can save changes. You just have to limit access to the defaultui or regulate the visibility of the fields that can be changed for specific users or tasks.
    best regards, Nils

    ------------------------------
    Nils Schiwek
    ------------------------------