Parallel Conditional Block Example

I am new to Guided Procedures. I am trying to create a process that has a parallel conditional block where the block would execute when an output parameter equals some value.  All the examples seem to have just simple sequential blocks.  Can anyone point me in the right direction/reference??  I am sure this is very simple for you GP wizards. 
Thanks.

One way for you to go about it is:
- first you need create one main sequential block B1 that'll contain the parallel dynamic block B2
- then you need your parallel dynamic block B2 that'll contain sequential blocks (B3 and B4) for each branching
The first callable object of your parallel dynamic block will be a "decision value" callable object. Based on the result of the decision value, the block B3 or B$ will be choosen.
Straightforward and easy to test. I mean normally

Similar Messages

  • Problem in Parallel Dynamic Block

    Hi All
    I have a scenario in GP,
    An initiator will make request and he/she want to get approval from multiple approvers. So the request want to go multiple users at a time.
    Here I tried this with one Sequential block and a Parallel dynamic block.
    In Sequential block I created inputform callable object using webdynpro DC and in Parallel dynamic block also created approval form using webdynpro DC.
    Here i am facing a problem, while reaching the form to approval users, if any of the approver open it executed and submitted all other approver actions are also terminating or the inbox content is disapearing.
    I want to exit from the Parallel dynamic block only after finishing all of the approvers submition.
    Is any setting or modifications can be done to achieve this?
    If anybody knows about this problem please reply me.
    regards
    Sajith

    Hi Sajith
    I think you are attaching multiple users to the same action (having approval form Callable Object). This will send the action to multiple approvals, but the process will be terminated on approval from any one of the multiple approvers. Due to this the request goes off from other approver's inbox.
    I think for your scenario you can have a sequential block in which you pass the approver action to next approver only when the previous approver has approved it. You can do this by keeping a decision dialog process control, which gives you two actions approve and reject.
    This will send the initiators request to multiple approvers and for the last approver you can terminate the process.
    Parallel Dynamic Block is used for a scenario where you have to take a vote or survey, in this case you pass the survey document to multiple users (and multiple users are decided at runtime).
    Please go thru this link to understand the Parallel Dynamic Block properly.
    http://help.sap.com/saphelp_nw2004s/helpdata/en/43/7e5b306b3b2679e10000000a1553f7/frameset.htm
    Regards,
    Anish

  • Parallel insert blocked on business table

    Hi guru, i've got this problem: parallel insert blocked on the same table. This event is periodic and the name table change of time in time.
    Version SAP is R/3 Enterprise 4.7 witn DB ORACLE 9.2.0.8 on SO AIX 5.3 ( ML 10)
    Thank You for yuor support
    MC

    You need to provide more info that that.... whats the context?, whats the error?, is this a question or a statement?
    Read the "Rules of Engagement"
    Regards
    Juan

  • Parallel participants blocks in External Routing Service

    I'm trying to configure an External Routing service (it implements IAssignmentService interface) as described in Developer's Guide for Oracle SOA Suite[1].
    The assignment stage configuration needed: one or more parallel participants blocks in the same stage, each one configured with different participants and voting rules.
    The CustomAssignmentService below shows my custom External Routing Service: when I try to add two or more parallel participants, only the first one it is assigned to the task.
    I haven't found documentation: how can I implement parallel participants blocks in External Routing Service?
    Product version: SOA Suite 11.1.1.6
    References:
    [1] http://docs.oracle.com/cd/E28389_01/dev.1111/e10224/bp_hwfmodel.htm#BABCFHCC
    ----------- CustomAssignmentService.java ------------------
    package br.com.iprocess;
    import java.util.Map;
    import oracle.bpel.services.workflow.metadata.routingslip.model.*;
    import oracle.bpel.services.workflow.metadata.routingslip.model.Participants;
    import oracle.bpel.services.workflow.metadata.routingslip.model.ParticipantsType.*;
    import oracle.bpel.services.workflow.task.IAssignmentService;
    import oracle.bpel.services.workflow.task.ITaskAssignee;
    import oracle.bpel.services.workflow.task.model.Task;
    import oracle.bpel.services.workflow.IWorkflowConstants;
    public class CustomAssignmentService implements IAssignmentService {
    private final String OUTCOME_APPROVE = "APPROVE";
    private final String OUTCOME_REJECT = "REJECT";
    public Participants onInitiation(Task task, Map propertyBag) {
    return createParticipant(task, propertyBag);
    public Participants onReinitiation(Task task, Map propertyBag) {
    return createParticipant(task, propertyBag);
    public Participants onOutcomeUpdated(Task task, Map propertyBag,
    String updatedBy, String outcome) {
    return null;
    public Participants onAssignmentSkipped(Task task, Map propertyBag) {
    return null;
    public java.util.List getAssigneesToRequestForInformation(Task task,
    Map propertyBag) {
    return null;
    public java.util.List getReapprovalAssignees(Task task, Map propertyBag,
    ITaskAssignee infoRequestedAssignee) {
    return null;
    public Participants createParticipant(Task task, Map propertyBag) {
    ObjectFactory objFactory = new ObjectFactory();
    Participants participants = objFactory.createParticipants();
    participants.getParticipantOrSequentialParticipantOrAdhoc().add(addParticipantsGroup1(objFactory));
    participants.getParticipantOrSequentialParticipantOrAdhoc().add(addParticipantsGroup2(objFactory));
    return participants;
    private Parallel addParticipantsGroup2(ObjectFactory objFactory) {
    Parallel parallelParticipant = objFactory.createParticipantsTypeParallel();
    ParallelCompletionCriteriaType vote = objFactory.createParallelCompletionCriteriaType();
    ParameterType defaultOutcome = objFactory.createParameterType(OUTCOME_REJECT);
    defaultOutcome.setType("STATIC");
    vote.setDefaultOutcome(defaultOutcome);
    String defaultPercentage = "51";
    ParameterType percentageOfOutcome = objFactory.createParameterType(defaultPercentage);
    percentageOfOutcome.setType("STATIC");
    vote.getOutcomePercentage().add(percentageOfOutcome);
    parallelParticipant.setAllResponders(vote);
    Resource resource = objFactory.createResource();
    resource.setValue("manager1, manager2");
    resource.setIsGroup(false);
    resource.setType("STATIC");
    parallelParticipant.getResourceOrRoutingSlip().add(resource);
    Resource resource2 = objFactory.createResource();
    resource2.setValue("manager3");
    resource2.setIsGroup(false);
    resource2.setType("STATIC");
    parallelParticipant.getResourceOrRoutingSlip().add(resource2);
    return parallelParticipant;
    private Parallel addParticipantsGroup1(ObjectFactory objFactory) {
    Parallel parallelParticipant = objFactory.createParticipantsTypeParallel();
    ParallelCompletionCriteriaType vote = objFactory.createParallelCompletionCriteriaType();
    ParameterType defaultOutcome = objFactory.createParameterType(OUTCOME_REJECT);
    defaultOutcome.setType("STATIC");
    vote.setDefaultOutcome(defaultOutcome);
    String defaultPercentage = "51";
    ParameterType percentageOfOutcome = objFactory.createParameterType(defaultPercentage);
    percentageOfOutcome.setType("STATIC");
    vote.getOutcomePercentage().add(percentageOfOutcome);
    parallelParticipant.setAllResponders(vote);
    Resource resource = objFactory.createResource();
    resource.setValue("operator1, operator2, operator3");
    resource.setIsGroup(false);
    resource.setType("STATIC");
    parallelParticipant.getResourceOrRoutingSlip().add(resource);
    return parallelParticipant;
    }

    I'm trying to configure an External Routing service (it implements IAssignmentService interface) as described in Developer's Guide for Oracle SOA Suite[1].
    The assignment stage configuration needed: one or more parallel participants blocks in the same stage, each one configured with different participants and voting rules.
    The CustomAssignmentService below shows my custom External Routing Service: when I try to add two or more parallel participants, only the first one it is assigned to the task.
    I haven't found documentation: how can I implement parallel participants blocks in External Routing Service?
    Product version: SOA Suite 11.1.1.6
    References:
    [1] http://docs.oracle.com/cd/E28389_01/dev.1111/e10224/bp_hwfmodel.htm#BABCFHCC
    ----------- CustomAssignmentService.java ------------------
    package br.com.iprocess;
    import java.util.Map;
    import oracle.bpel.services.workflow.metadata.routingslip.model.*;
    import oracle.bpel.services.workflow.metadata.routingslip.model.Participants;
    import oracle.bpel.services.workflow.metadata.routingslip.model.ParticipantsType.*;
    import oracle.bpel.services.workflow.task.IAssignmentService;
    import oracle.bpel.services.workflow.task.ITaskAssignee;
    import oracle.bpel.services.workflow.task.model.Task;
    import oracle.bpel.services.workflow.IWorkflowConstants;
    public class CustomAssignmentService implements IAssignmentService {
    private final String OUTCOME_APPROVE = "APPROVE";
    private final String OUTCOME_REJECT = "REJECT";
    public Participants onInitiation(Task task, Map propertyBag) {
    return createParticipant(task, propertyBag);
    public Participants onReinitiation(Task task, Map propertyBag) {
    return createParticipant(task, propertyBag);
    public Participants onOutcomeUpdated(Task task, Map propertyBag,
    String updatedBy, String outcome) {
    return null;
    public Participants onAssignmentSkipped(Task task, Map propertyBag) {
    return null;
    public java.util.List getAssigneesToRequestForInformation(Task task,
    Map propertyBag) {
    return null;
    public java.util.List getReapprovalAssignees(Task task, Map propertyBag,
    ITaskAssignee infoRequestedAssignee) {
    return null;
    public Participants createParticipant(Task task, Map propertyBag) {
    ObjectFactory objFactory = new ObjectFactory();
    Participants participants = objFactory.createParticipants();
    participants.getParticipantOrSequentialParticipantOrAdhoc().add(addParticipantsGroup1(objFactory));
    participants.getParticipantOrSequentialParticipantOrAdhoc().add(addParticipantsGroup2(objFactory));
    return participants;
    private Parallel addParticipantsGroup2(ObjectFactory objFactory) {
    Parallel parallelParticipant = objFactory.createParticipantsTypeParallel();
    ParallelCompletionCriteriaType vote = objFactory.createParallelCompletionCriteriaType();
    ParameterType defaultOutcome = objFactory.createParameterType(OUTCOME_REJECT);
    defaultOutcome.setType("STATIC");
    vote.setDefaultOutcome(defaultOutcome);
    String defaultPercentage = "51";
    ParameterType percentageOfOutcome = objFactory.createParameterType(defaultPercentage);
    percentageOfOutcome.setType("STATIC");
    vote.getOutcomePercentage().add(percentageOfOutcome);
    parallelParticipant.setAllResponders(vote);
    Resource resource = objFactory.createResource();
    resource.setValue("manager1, manager2");
    resource.setIsGroup(false);
    resource.setType("STATIC");
    parallelParticipant.getResourceOrRoutingSlip().add(resource);
    Resource resource2 = objFactory.createResource();
    resource2.setValue("manager3");
    resource2.setIsGroup(false);
    resource2.setType("STATIC");
    parallelParticipant.getResourceOrRoutingSlip().add(resource2);
    return parallelParticipant;
    private Parallel addParticipantsGroup1(ObjectFactory objFactory) {
    Parallel parallelParticipant = objFactory.createParticipantsTypeParallel();
    ParallelCompletionCriteriaType vote = objFactory.createParallelCompletionCriteriaType();
    ParameterType defaultOutcome = objFactory.createParameterType(OUTCOME_REJECT);
    defaultOutcome.setType("STATIC");
    vote.setDefaultOutcome(defaultOutcome);
    String defaultPercentage = "51";
    ParameterType percentageOfOutcome = objFactory.createParameterType(defaultPercentage);
    percentageOfOutcome.setType("STATIC");
    vote.getOutcomePercentage().add(percentageOfOutcome);
    parallelParticipant.setAllResponders(vote);
    Resource resource = objFactory.createResource();
    resource.setValue("operator1, operator2, operator3");
    resource.setIsGroup(false);
    resource.setType("STATIC");
    parallelParticipant.getResourceOrRoutingSlip().add(resource);
    return parallelParticipant;
    }

  • GP task dissappers in parallel dynamic block

    hi,,
    I want to use gp workflow using webdynpro development component callabale objects.
    The flow is an initiator will initiate a task , it goes to 3 different users only after the three approvers have approved,  it should move to the third single approver.
    So i have used parallel dynamic block in the second step and the callable object is of webdynpro development component type .Now when an initiator initiates a task the three approves are getting the task.If any one approves also the task disappers form the other two users and moves to the next level.
    I want the task to be moved to the next level only after  if all the three users have approved.
    please help....
    Thanks in advance,
    shami.

    hi,
    thanks for ur response.
    From the initiator the process should go to three approvers simultaneously.
    And then only after the three approvers have approved it should go to the third level approver.
    how can this be achived..
    thanks in advance.
    shami.

  • Assigning roles to Parallel dynamic block-multiusers

    Hi David,
    I am using PDB in that one sequential block is used , which I am assigning to multiple users.I have assigned the role in Process- Default role tab.
    Parallel dynamic block
    Sequential block
    Action1----
    assigning multiuser
    Every thing is working fine except when PDB will execute it will go to all users UWL but one user will complete the process, other user's process will not be able to complete the process.that process will end there.
    Do you have any guideline for this?
    Yogesh

    Hi Yogesh,
    Select the sequential block(body block) under the PDB and open the Roles tab. There select the option "Filled From Conext Parameter" and in the drop-down that appears select the user id. You must have an input parameter defined for all the COs present under the PDB type string and which is mapped to a username/role/group at parameter grouping.
    Refer this document for step-by-step guide : <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/fe43ced1-0c01-0010-10ae-bc49598b18f6">Using Parallel Dynamic Block and Dynamic User Assignment (GP)</a>
    Thanks,
    Dipankar

  • Regarding Parallel Dynamic Block

    Hi,
    I tried to use PDB (Parallel dynamic block). But it is behaving differently that, I assigned action to 3 users and then the task is appearing in all of the 3 users uwl.But while any of the one user started working on that then remaining users uwl task got disappeared or seems locked or terminated. I did not understand why it is happening like this. can you please help me to solve this issue.
    My process structure is mentioning below:
    Process
    Init Block (Sequential block)
    Input action
    Block (PDB)
    output block (parallel block)
    output action
    Is there any alternative way to do this if PDB will not solve this issue?
    Is it possible to create actions dynamically in a block. suppose this block is creates statically as a parallel block.?
    Mahesh please help me if you have any idea or information about this.
    thanks in advance,
    Sajith

    Hi Dipankar,
    Thanks for ur response.But that form is not going parallel to same users.and i have other problem.If that form go to multiple users.
      That form has to states Approved and rejected.Though any one of them rejected that process must be continuously.not to be terminated.
    If u have any idea /if u worked on same Scenario pl z send document.
    Thanks,
    Santhosh

  • Issue regarding Parallel dynamic block

    Dear All,
    I need some help regarding Parallel dynamic process issue.
    My Process structure as follows.
    Process
    ->Sequential Block
    --->Action1
    --->Parallel Dynamic Block
    >Sequential Sub Block
    >Action2
    I am able to trigger the tasks to multiple users.
    Action2 has to  perform by multiple users.
    Action2 contains Webdynpro Callable Object.
    Webdynpro CO view contains two buttons namely "Approve" and "Send Back".
    My requirement is
    1)If All users selects approve then Action2 has to complete and control moves to Action1
    2)If anyone selects Send Back then Action2 will be completed and control moves to Action1.This process will be continues still all the users Approve.
    I am struggling for this requirement so please  help me.

    Hi Rajesh,
    Question 1:
    I am trying to call the Action1 in the Sequential Sub Block from Action 2.At that time i am gettin the following error.
    Transition between blocks cannot be defined because there is a parallel block in the path.
    @nswer 1:
    Please include "Action2 " and "Action1(On Send Back from Action2)" in the subblock.
    If both the actions are in the same sequential block (sub-block) then you can set result state.
    Question 2:
    Please suggest me what to set result state of Action2 when it is completed and how to call Action3.
    Tell me Action3 comes under Sequential Block?
    @nswer 1:
    Action2 must have two result state
    1. Completed -- Assign it "Terminal"
    2. Send Back -- Assign it "Action1(On Send Back from Action2)"
    Action3 is outside Parallel Dynamic Block. The structure of your sequential block will look like this
    Process
    ->Sequential Block
    --->Action1
    --->Parallel Dynamic Block
    --->Action3
    Regards,
    Pratik

  • How to use parallel dynamic block in guided procedures!!

    hi
    My application is as following i have to initiate a process from a webdynpro for java application and after that i have to send the action to the multiple users..
    For that i created a parallel block inside that a sequential block and inside that an action .
    In my wdj coding i created a variable user and assigned this parameter for the role of that action.
    But the problem is it is not going to the multiple users.
    pls suggest me if there is some other solutions to do this.....
    Pls give me a solution it is urgently needed
    With regards
    Shanto Aloor
    Edited by: Armin Reichert on Jun 18, 2008 12:11 PM

    Hi,
      Refer this
    Regarding Parallel Dynamic Block

  • Urgent ......!!!!!how to use parallel dynamic block in guided procedures!!

    hi
    My application is as following i have to initiate a process from a webdynpro for java application and after that i have to send the action to the multiple users..
    For that i created a parallel block inside that a sequential block and inside that an action .
    In my wdj coding i created a variable user and assigned this parameter for the role of that action.
    But the problem is it is not going to the multiple users.
    pls suggest me if there is some other solutions to do this.....
    Pls give me a solution it is urgently needed
    With regards
    Shanto Aloor

    Hi,
      Refer this
    Regarding Parallel Dynamic Block

  • Webutil_host.blocking( ) example needed  * SOLVED *

    Hello, I need to get the name of the UNIX application server from my forms 10g program. I'm calling pid := webutil_host.blocking('uname -n') but it fails with a return code of 2 no matter how I format the command ('ksh -c "uname -n"', etc). subsequent calls to outp := webutil_host.get_standard_output(pid) or outp := webutil_host.get_standard_error(pid) don't seem to work either as trying to display outp(0), etc display nothing.
    webutil functionality is not being called in pre-form or when-new-form-instance (before webutil is instantiated).
    Can anyone point me to a working example of getting output from a UNIX command?
    Thanks,
    Gary

    Ok, here's how I did it, turned out to be pretty simple:
    FUNCTION get_oas_name RETURN varchar2 IS
      fp text_io.file_type;
      output varchar2(30);
    BEGIN
      host('/bin/uname -n > /tmp/oasname');
      fp := text_io.fopen('/tmp/oasname','r');
      text_io.get_line(fp, output);
      text_io.fclose(fp);
      return output;
    END;Gary

  • [FPGA] Loop rate very slow: Do FPGA I/O nodes in parallel loops block each other?

    Hi,
    I am using cRIO-9075. Mod1 is NI 9263, Mod2 is NI 9227, Mod3 is 9215.
    Please see my VI attached or the given screenshot.
    The FPGA code is based on the "NI CompactRIO Waveform Reference Library" (it's the lower loop).
    The upper loop was added by me and is writing a waveform from blockmemory to the NI 9263 module (Mod 1).
    The data sampled in the lower loop is running at 1 kHz. The control "AO Update Period" for the upper loop has a value of (for example) 10 (=uS).
    The problem is, that this loop is running much much slower than it should. Once I disable the FPGA I/O node in the lower loop (as done in the attachments), it's running as fast as it should.
    It seems to me, that the FPGA I/O nodes are blocking each other. I tried to figure it out by reading through serveral NI documents, but until now I have no idea how to solve that.
    Can you give me some advices? Some general tipps about the VI?
    Thanks!
    Attachments:
    FPGA Loop Rate.PNG ‏72 KB
    FPGA Main.vi ‏251 KB

    Hi, thanks so far.
    Originally the control was inside the loop. Then I tried if it makes a difference if it's outside.
    Ok, i really seems to be that default value of "100000" for "AO Update Period".
    Starting the VI directly woks like expected. Having "AO Update period" inside the loop makes it possible to control it as it's running.
    But, please see the attachment. When starting the FPGA through RT and setting the appropiate value, it does not seem to work. The oscilloscope show's the same behavior like "AO Update Period" was 100000.
    But when reading the value of "AO Update Period" afterwards (while the FPGA is running), it shows the expected value of "10".
    Having changed the default value to 10 works so far, but I am not able to changed it (see attachment).
    So the problem is: Why is "Read/Write control" not working here? Why is still the default value used?
    Attachments:
    FPGA Loop Rate 2.PNG ‏5 KB

  • Problem in SAP-Script Conditional Block

    Hi All,
    I am creating one report form using SAP Script, which uses standard driver program. There is a control statement like,
    { Consider W=1, X=0 , Y=0 & Z=0 }
    /: IF ((X==0 AND Y==0) OR (Z==0 OR W==0)  OR ...) { lot of OR & AND stament used in this conditional statment }
    /: ELSE
    /: ENDIF
    Here is a mistery, it executes both if and else statement. Please give me some idea on this, and why such a weird output is displaying?
    <<removed by moderator>>
    Edited by: kishan P on Sep 13, 2010 4:17 PM

    Hi..
    The syntax of the command could be incorrect. Check for full stops, variables etc.
    http://help.sap.com/saphelp_40b/helpdata/en/d1/80325f454211d189710000e8322d00/content.htm
    Please check the above link's last paragraph which says :
    "If a syntax error occurs in the interpretation of this command, then the command is not executed. This may have an unexpected effect on the subsequent text output. For example, if the IF statement is incorrect, then all following ELSEIF and ELSE commands will be ignored, since the opening IF command is u2018missingu2019. This will cause all the text lines attached to the ELSEIF and ELSE commands to be printed."
    Regards,
    Karthik

  • Conditional displays, examples needed

    Hi,
    I wud appreciate some help on conditional displays to be used. e.g. depending on a value returned by a query like
    "select count(*) from table" greater than "X" a button shall not be displayed.
    Furthermore it wud be helpful to receive an example on each of the expression combinations. Its difficult to read the ideas behind the functions without documentation considering, that also some less experienced programmers wud like to make use of these marvelous functionalies on declarative means. Suggest to integrate this in the next documentation/help or in a How To Document !
    TIA - Bernhard

    thanks for the documentation suggestion, i've noted it. re your number of rows condition, i'd probably implement it as a "PL/SQL Function Body Returning a Boolean" with expression 1 being something like...
    declare
    l_cnt number := 0;
    begin
    select count(1) into l_cnt from emp;
    if l_cnt > 13 then
    return false;
    else
    return true;
    end if;
    end;
    ...and if you'd computed that "select count(1) from emp" value ahead of time into an htmldb Item, you could us it in a condition of type pl/sql where Expression 1 could be...
    :MY_COMPUTED_ROW_COUNT_ITEM <= 13
    ...and in both cases the button wouldn't show if there were more than 13 rows in emp.
    hope this helps,
    raj

  • Is there any power pivot feature similar to" conditional block " property in cognos reports?

    I have a report with multiple power pivot charts. My requirement is to create a prompt which prompts the user with the list of charts and based on his selection , one of the charts will be displayed at a time. ie, user will have a choice for display
    of the chart. and these charts should have a common filter. I am using excel 2013 and SSAS tabular model.
    Could anyone please help me on this
    Thanks in advance

    Hi BLtechie, 
    If you are ok with using VBA (precluding the workbook from functioning correctly within SharePoint in an Excel Web Access web part) then you should be able to adapt the solution here: 
    http://www.mrexcel.com/forum/excel-questions/525495-conditionally-show-hide-charts.html
    Alternatively, if you have a tabular model and access to SharePoint 2013 with Reporting Services Integrated mode running SQL 2012 SP1 CU 4 or higher you could instead create a power view report that used the pinned filters property and simply presented
    each of the pivot charts on named sheets (forming your user's selection choice). 
    http://blogs.msdn.com/b/riccardomuti/archive/2013/05/24/pinning-filters-in-power-view.aspx
    Hope this helps, 
    Mike

Maybe you are looking for