Dynamic Approval

How can we model dynamic approval in Oracle BPM 11g, such that a task is approved by n number of participants, where n is determined at run time.
Any help would be highly appreciated.
Thanks,

I made a quick test and here's what I got.
Before the HumanTask, generate a comma separated list of the required approvers (in your examples it would generate "A,B" and "A,B,C,D") and then pass that list as an input to the human task.
Then on the Participant configuration choose
- Type: Serial
- Build a list of participants using: Names and expressions
- Specify attributes using: Value-based
And in the participants list use a single line with: User, By Expression, the payload variable containing the user list (something like /task:task/task:payload/task:usersList).
Expand the Advanced section below the participants list and select the "Specify skip rule" checkbox and put /task:task/task:systemAttributes/task:outcome = "REJECT" in the textbox that appears. This makes the approval terminate as soon as a user sets the outcome to REJECT, otherwise it would still go through all the remaining approvers.
With this you should get the desired functionality. You'll still need some java to generate the user list (or a database stored procedure, or a web service, or...), but it's, I hope, minimal enough.
There's (I think) an alternative, in which you don't need to generate the user list beforehand. In the participant configuration, if you chose Specify attributes using: Rule-based, instead of value-based, you can use a business rule to generate the list of users. But I don't have much experience with business rules, so I can't help you there. But the rest should be the same
Tell me if there's anything that's not clear and I'll try to clarify it.
Regards,
Diogo Henriques

Similar Messages

  • Multilevel dynamic approval process using precondition loop block

    HI,
    I am trying to create a multivel dynamic approval process using a precondition loop block. The structure of my process is,
    Process->1)Sequential Block containing requestor action->processor of requestor action is initiator
                2)Precondition Loop Block containing
                        i)Loop Decision action containing a business logic callable object
                        ii)Loop Body Block containing Approver action-processor of approver action is filled from context parameter
    The loop decision action implements the logic for loop decision. Can anybody help me by suggesting the proper target of each of these actions, and the processor for loop decision action?
    Whenever I am initiating the process, the requestor action is getting executed,  On completion of this action I am getting a message "No activity is currently selected", that is, it is not entering the precondition loop block.
    Please guide me with the proper process flow of this and how to adjust the roles and parameters
    Thanks,
    Swaralipi

    Posted another thread on the same issue

  • Dynamic Approval Group with Voting Method  First Responder Wins

    Hi all,
    i create new Approver Group with type: Dynamic, and Voting Method: First Responder Wins. and i write the query to get user_id.
    The query return the correct users, but in the approval list in the wf, it requires approval from all users in my dynamic approver group !!
    i need only one first user to approve (First Responder Wins), then must go to next approver group.
    please help me to solve this problem
    thanks all ..
    hedaya

    With Dynamic approval First Responder wins does not work, We have to use Roles in HR Manager.
    Refer Configuring Parallel Approvers Notification (Doc ID 471125.1)

  • Dynamic approval with loop

    Hello All,
    I am developing a dynamic approval process and here is my requirement.
    We are maintaining the agents in the custom table.I am using multiline element to send the user decision tasks to all users in the table. if user approves then workflow continues..if user rejects then i need to send the user decision task to all agents in the table or just to the rejected user for reapproval..
    for this..
    what i have done so far is..
    1. i have called a system method to pull the agents from custom table.
    2. i have used the multiline element to the user decision step..and work items are going out for approvals to all agents in the table under this task which is parallel.
    3.if approved..continue workflow
    My question is  if user 1 rejects the item can i do another user decision step which is sending the approval to all or just to the rejected user in the rejection path?
    again if user2 rejects i need to follow the same..as it is dynamic am not sure how to achieve this flow..
    and it continues until all approved..am not sure how to pursue this..please help..
    Thanks in advance..

    Dear Suresh,
    This means if rejected-- need to send it to all or just to the rejected user depending upon initiator decision..i believe we can add another option in second user decison as to send only to rejected user along with resubmit..i will try this option..
    Yes you are right.. Provide 3 buttons to initiator like 1)resubmit to all 2) resubmit to rejector 3) exit
    Have a multiline container element with name say approver. If initiator clicks the resubmit to all button in user decision then use the multiline container approver (which has all approvers populated by you). If he selects resubmit to rejector the pass the agent (who rejected the workitem in previous step) via binding for that step.
    Remaining logic remains the same as mentioned by Sanju.
    Regards,
    Bharath

  • Invoce. N-step dynamic approval process

    Hello,
    I have a question.
    According documentation we have BADI ONLY for SC workflow
    and PO workflow.(BBP_WFL_APPROV_BADI)
    I need  N-step dynamic approval process  for Invoice.
    The question is : do i need to develop my own workflow or is there other functionality or BADI which i can use for INVOICE?
    Thank you.
    Tania

    Hi Hari,
    The total value of the shopping cart changes because Manager 1 deletes an item from the shopping cart. So the new value of the shopping cart is 10.000,- euro. In this example all managers must approve up to and including the first one who has an limit higher than the shopping cart value.
    Regards,
    Martin

  • Dynamic Approver Group

    Hi all,
    Is there a way to let the dynamic approver group to return more than one record?
    for one record we return the person_id in the format 'PERSON_ID:'||PERSON_ID
    Could we use 'PERSON_ID:'||PERSON_ID||',PERSON_ID:'||PERSON_ID for example to retrieve 2 person id's??
    The query of the approver group is calling a function that check the process name and return all the people associated with a position or a job, I need to build dynamic approver groups to send notifications to a group of people so that anyone in that group can approve it and hence it moves on to the next approver group's people
    any idea?!
    Edited by: HST on Sep 7, 2010 7:37 AM

    Thanks Vinayka for the reply.
    I have tried doing your advice, the query return more than one record (3 in my example) and the voting method is first responder wins.
    What happened when submitting the request is that the notification sent to the first person (the one returned in the first record) only and i have to wait for his approval or rejection
    if he approves or reject the cycle stopped.
    i need to send the notification to all employee that the query return and the approval from one of them is enough!
    any idea?
    Edited by: HST on Sep 14, 2010 12:00 AM

  • Dynamic Approver Group Will Not Return Multiple Approvers

    We have created a dynamic approval group to return person_ids (stored in a lookup) for some of HR operations people. This will be called by an FYI rule.
    The problem is that AME seems to fail if mulitple person_ids are returned by the dynamic query.
    Is it even possible for a dynamic approval group to return multiple person_ids? If so what could I be missing?
    P.S. I realize I can use a static approver group to meet the same requirement but the reason we choose a lookup was it made it easier for us to maintain. We can revert to a static group if there is no other solution.

    We overcame the problem by splitting out each person_id into a different row in the lookup table.
    Multiple approvers are now being returned.

  • Dynamic Approver List  + BPEL 10.1.3.3

    Hi,
    May I know how to write the Xpath(List of Approvers are passed as BPEL variable) for Defining the Dynamic Approvers Assignee list in human task assignment editor?
    Any sample example?
    Thanks

    Hi,
    After passing the comma separated approver list,I could see in BPEL instance. But assignment thinks it is single group at runtime. E.g
    if comma separated groups are A,B. Assignment service thinks it is single group and complains saying A,B role not exist.
    What I noticed that in static comma separated list, i could see individual elements added in source code
    <participant name="Assignee1">
    <resource isGroup="true" type="STATIC">A</resource>
    <resource isGroup="true" type="STATIC">B</resource>
    </participant>
    But in dynamic approver list do I need to apply any xQuery or XSLT to iterate over list? Please advice
    Thanks

  • Sharepoint 2010 two stage dynamic approval

    I have an infopath form that needs to be first routed to a selected reviewer and then that reviewer selects approvers from a picklist. This looks like the Staged OOTB approval process, but how do I dynamically change the approvers in the 2nd stage. The WF
    needs to wait for the reviewer to select reviewer (in parallel). I'm looking for a no code solution if possible.

    Hi,
    In the infopath form add a field and from SharePoint Designer creates workflow and use this field for directing to approver
    the values for this field can be retrieved from another list that contains unique values for the users and their data
    and from workflow you can direct the next approval based on selection in the form
    in the infopath form you can control to show hide the field based on certain values and you can change that from the designer workflow.
    Kind Regards, John Naguib Technical Consultant/Architect MCITP, MCPD, MCTS, MCT, TOGAF 9 Foundation

  • Workflow n-step dynamic approval error when saving SC

    Hi all,
    I have a process schema with 2 levels of approvals. The first one is a dynamic one (created based on a tutorial that I found here in SCN) and the second one is a simple approval step, I have a third step that's the automatic approval if none of the previous steps are required.
    When I go the SC creation page, I enter all the information and before saving it, I click on Display Agents, I could see that all the agents were obtained correctly.
    For example 4 approvers obtained,
    1-User1 (obtained from the first process level, dynamic one)
    2-User2 (obtained from the first process level, dynamic one)
    3-User3 (obtained from the first process level, dynamic one)
    4-User4 (obtained from the second process level).
    The problem comes after I save the order..I click on the Refresh button and go again to the "Display Agents" part and then I see that the first approver is not there, instead I see that it says "No agent was obtained with strategy Z...", so I have something like this:
    1-"No agent was obtained with strategy Z..."
    2-User2 (obtained from the first process level, dynamic one)
    3-User3 (obtained from the first process level, dynamic one)
    4-User4 (obtained from the second process level).
    If I check the WF, it ends in error as it says it could not find the approver.
    The same thing happens if the first process level (dynamic) returns 2 agents....the first one is removed after I save the SC.
    And If that first process level returns anly one agent, it's also removed when I save the SC.
    Could you please suggest where could I start looking into it?
    I debugged a lot and found out that when I click on SAVE and the on REFRESH and go to see again the approvers, the method
    /SAPSRM/IF_EX_WF_RESP_RESOLVER~GET_APPROVERS_BY_AREA_GUID is not being executed for that first user, just for the rest.
    Why could this be happening?
    Thanks in advance!
    Matias

    Hi Matias,
    if could happen due to errors in your code.
    Could yprovide the logic for MAP_ITEM_TO_AREA method?
    Is it possible, that the first approver = requester in the shopping cart?
    Regards
    Konstantin

  • Dynamic approve limit value form Z table

    Hi friends,
                       My workflow is triggering with specified condition  when SC item values is > 1000 , it is triggering with below logic.
    Event -9EV_SC_RVR(Expression: 9B_SC_REVIEWER_001) is placed at the place of First level process level Eval ID. Because
    Formula 0V_SC_TOTALVALUE > 1,000(1000 is static value)  is specified in Expression : 9B_SC_REVIEWER_001, I am obtiaining First level Approver.
    But now, my requirement is changes such a way that , 1000 $ will be fetched in Ztable dynamically. That means, amount value  will be changed in Ztable by user.
    My problem is how to create a expression to obtain 1000$ value from table so that i can compare in formula expression with 0V_SC_TOTALVALUE.
    Please help me.
    Balaji.T.

    Hi,
      Did you use any parameter in the FM expression? it seems like the DUMP is unable to convert 00000 00 as number.
    If you have assigned the parameter in the FM expression then remove them..
    Just put the below code in the FM
    DATA lo_wf_brf_event              TYPE REF TO /sapsrm/cl_wf_brf_event.
      DATA lo_context_provider      TYPE REF TO /sapsrm/if_wf_context_provider.
      DATA l_document_guid          TYPE /sapsrm/wf_document_guid.
      DATA l_document_type          TYPE /sapsrm/wf_document_type.
    data : l_GROSS_PRICE type /sapsrm/wf_amount_value..
    preset return values
      ev_type          = /sapsrm/if_wf_rule_c=>type_bool.
      ev_length        = 1.
      CLEAR ev_currency.
      ev_output_length = 1.
      ev_decimals      = 0.
      ev_value         = /sapsrm/if_wf_rule_c=>brf_result_bool_noprocessing. " no processing
      ev_data_missing  = /sapsrm/if_wf_rule_c=>brf_data_missing.
    Connection FM from BRF to Rule Handling, Call the rule and
    get back the value
    get event object
      IF NOT io_event IS BOUND.
    BRF event Object not bound. No further execution possible.
        MESSAGE e089(/sapsrm/brf).
        TRY.
            CALL METHOD /sapsrm/cl_wf_brf_ccms=>send_message( ).
          CATCH /sapsrm/cx_wf_abort.
            ev_data_missing = /sapsrm/if_wf_rule_c=>brf_data_missing.
            EXIT.
        ENDTRY.
        ev_data_missing = /sapsrm/if_wf_rule_c=>brf_data_missing.
        EXIT.
      ENDIF.
    get document data by context provider
      lo_wf_brf_event ?= io_event.
      lo_context_provider = lo_wf_brf_event->get_context_provider( ).
    get Content Container from BRF event
      IF NOT lo_context_provider IS BOUND.
    BRF Context Container Object not bound. No further execution possible.
        MESSAGE e090(/sapsrm/brf).
        TRY.
            CALL METHOD /sapsrm/cl_wf_brf_ccms=>send_message( ).
          CATCH /sapsrm/cx_wf_abort.
            ev_data_missing = /sapsrm/if_wf_rule_c=>brf_data_missing.
            EXIT.
        ENDTRY.
        ev_data_missing = /sapsrm/if_wf_rule_c=>brf_data_missing.
        EXIT.
      ENDIF.
    select SINGLE netwr from ZSRMVALUE INTO l_GROSS_PRICE where plevel = 'LEVEL1'.
    if sy-subrc eq 0.
      CLEAR ev_data_missing.
      ev_type        = /sapsrm/if_wf_rule_c=>type_curr.
      ev_value       = l_GROSS_PRICE .
      ev_currency    = mv_target_currency.
    endif.
    make sure the output length and fld / lngth are '16' and type is 'F'.
    Saravaana

  • Dynamic approval workflow based on checkboxes

    I have a sharepoint 2010 approval workflow based on an info path form list
    The form has about 20 checkboxes for different areas of for which a supervisor could request access for. A supervisor could check 1 checkbox, or all 20.
    The checkbox on the actual form being filled out will have the title of access being requested such as but not the name of the approver. we dont want to show that on the form as to who the approver is.
    Each checkbox corresponds to a different person, so if 5 checkboxes are selected, I need the workflow to automatically assign the tasks to 5 specific people based upon which checkbox is marked. So if check box A, B, F, G, Q are all checked it should send
    an email to the people that are associated with those checkboxes only.
    How can I dynamically assign the tasks to people based on which checkbox is selected?
    I am using sharepoint 2013 but 2010 workflow in designer
    Thanks

    Hi,
    You will promote those checkboxes so you can access from workflow.
    in the workflow you will create logic of conditions
    for example
    if checbox a selected then assign variable checkbox1=true and so on for each checkbox a corresponding variable and other 5 variables carrying the approvers names
    then based if those values are true you will create a task for those approvers
    Kind Regards,
    John Naguib
    Senior Consultant
    John Naguib Blog
    John Naguib Twitter
    Please remember to mark this as answered if it helped you

  • HRSSA  Dynamic Approver comptability with the notification Mailer

    Dear All ,
    we are developing "HRSSA " while testing it's working so fine with the user if he defined on the workflow with a static value , but if his value is retrieved dynamically with select statement it isn't working
    it ignores the approver & update the requester with approved status
    Example
    first approver : defined static (he recieved the mail & approved )
    second approver : defined  as dynamic (doesnot get the notification & update the requester record request as approved )

    Hi,
    the diagnostic i ran was accoring to the note
    Oracle Workflow ATG Support: R12 Java Mailer Setup Diagnostic Test [ID 748421.1
    It has so many output files
    which one should i post
    Did you get any error/warning messages? If yes, post this part only here.Regards,Hussein                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Parameter mapping in Dynamic approval process

    Hi experts,
    We have a webdynpro application where the user inputs certain data.
    Then from this application we are triggering a GP process and also passing parameters to the GP process.
    In GP my Approval callable object is webdynpro(GP interface) Co.
    In the execute method, I am reading the input parameters
    CurrentLevel=(executionContext.getInputStructure().getAttributeAsInt("I_CurrentLevel"))+ 1;
    totalLevel=(executionContext.getInputStructure().getAttributeAsInt("I_TotalLevel"));
    VendorNo=executionContext.getInputStructure().getAttributeAsString("I_VendorNo");
    Now in complete method I am writing these values to the output parameters.
    output.setAttributeValue("O_VendorNo",contextElement.getVendorNo());   
    output.setAttributeValue("O_TotalLevel",contextElement.getTotalLevel());output.setAttributeValue("O_CurrentLevel",contextElement.getCurrentLevel());
    In the Gp I have a process under which I have a postcondition loop ,it has a loop decision action and  Business logic Co (with two parameters current level and total level).
    And next I have a sequential block with the approver Co.
    I have certain doubt regarding the parameter mappings.
    For the first time the input to the Approver Co is passed from my application (triggering and also passing parameters).
    So we are able to see the input parameters on the GP screen.
    When the first approver approves it, it checks the loop condition, but my problem is Always the input to the approver screen is same.
    After first approval the output of it should become the input for the second approval.
    At which level should I group the parameters in GP because i tried mapping them at process level and also at the postcondition block level .
    Thanks,
    Swetha

    Posted another thread on the same issue

  • Dynamic approval hierachy process

    Hi,
    I've a scenarion where I need to develop a BPM process that goes through various approvals in the hierarchy. When a user creates a task, it goes to his/her manager queue. Once the manager approves, the task should go to manager's manager queue and so on..... till the task reaches to the person at Director level.
    User ---> Manager a ----> Manager of Manager a ----> Manager of Manager of Manager a ----> ............... ----> Director
    We are not sure how many levels of hierarchy exists between user and the director. How can I achieve this kind of scenario. Is there any sample application available.
    Thanks,
    Sree

    There is a "Top Participant" field in the Human Task's Assignment tab that lets you specify that approvals should continue to escalate until it reaches a certain title.
    You get there by opening the human task -> click the Assignments tab -> double click the person icon under "Stage 1" -> at the bottom of the dialog you'll see the top participant field. Leave the drop down set to "By Title".
    This assumes that in the upper portion of this same dialog that you've already
    - set the "Type" dropdown to "Serial" and
    - set the "Build a list of participants using" field to "Management Chain" and
    - set the "Specify attributes using" radio button to "Value-based" and
    - you clicked the + icon to the right of "Starting Participant" -> select "Add User" -> changed the "Data Type" to "By Expression" -> clicked the "..." button that is on the right side of the "Value" column -> set this field to the EL expression:
    getManager(<the starting user id>,'jazn.com')Dan

Maybe you are looking for