Reentrancy for multiple operations

Hey everybody,
  I understand that there is a subtle dislike for reentrancy, and I can see how it could be a problem if you weren't careful with it.  However, I have a set of code that I need to run on six concurrent rigs from the same PC.  There are parts of it that I know I'll have to duplicate and change, but I was wondering: If there are VIs that I want to run multiple times concurrently and that shouldn't share data, is there a reason not to make them reentrant?  Is the overhead not worth it?
Message Edited by JeffOverton on 01-23-2008 10:15 AM
=============
XP SP2, LV 8.2
CLAD

I think part of the confusion with reentrancy has to do with its changes through the history of LabVIEW. Before LabVIEW 8.0, you couldn't debug reentrant VIs, which made them much more difficult to use. Also, before LabVIEW 8.0, you couldn't view a reentrant VIs front panel, which made it impossible to use for dynamically spawned dialogs. That also made it difficult to do pseudo-debugging by viewing front panel controls to track the progress of the VI. The workaround in case of dynamically spawned dialogs was to use template VIs.
LabVIEW 8 helped make reentrancy more usable. You can now debug reentrant VIs (except when deployed to RT, I believe) and view their front panels. This makes them a more attractive option for dynamically spawned dialogs than template VIs. When opening a template VI, LabVIEW had to make a copy of the entire VI's data space, code, front panel, etc. With reentrant VIs in LabVIEW 8.x (to the best of my knowledge), LabVIEW only copies what's necessary. It doesn't need to duplicate the code itself, just the data space. And if the front panel isn't open, then LabVIEW doesn't need to copy that either for reentrant copies.
LabVIEW 8.5 added yet another piece to the puzzle for reentrancy. That's the ability to share clones. This might be confusing to some, but very powerful to others. Reentrant VIs allow you to call the same subVI concurrently in multiple places, but the downside is that every instance on the block diagram creates a separate copy of the necessary resources. So if you call your subVI in 100 different places, you'll get 100 copies, even if you only expect a few of those copies to ever execute concurrently.
The Share Clones option tells LabVIEW to only make copies when all the existing copies are in use and another call needs to be made. In other words, if I have 100 different calls to a Share Clones reentrant subVI, then LabVIEW will start off with only 1 copy of that subVI in memory. As soon as that copy is being called by A, and B wants to make a call to it, you'll get your second copy so B doesn't have to wait for A. If A finishes executing its copy, and C tries to call the subVI while B is still calling it, then C can call A's copy, since it's no longer in use. This allows a minimal amount of subVI resources to be loaded, while maintaining the ability to call a subVI concurrently.
The downside here is that you really don't know which copy you'll end up getting. A might get copy 1 now, but copy 2 or 3 later. This means you can't rely on cached data in the subVI,  such as uninitialized shift registers that store data from a previous run. You can't be sure that previous run was your previous run, or if this copy has ever had a previous run.
Sorry if this post is more confusing than helpful, but reentrancy is a powerful tool that should be explored.
Jarrod S.
National Instruments

Similar Messages

  • Single concurrent program for multiple operating units

    HI
    I am working on XML/BI publisher to generate AR invoice reports.
    We have single rdf report using which rtf templates are generated.
    There are 10 operating units (10 ORG_ID's) and 10 rtf templates, one for each operating unit. There are 4 different responsibilities for each ORG_ID
    Eg: ORG_ID's = 11, 12, 13, 14..........etc
    Eg: Responsibility = xx, yy, zz...........etc
    I want to register a single concurrent program. When a user submits a request from "XX" responsibility, then the template associated with that org_id should be generated. Whichever responsibility the user is accessing from, that particular template must be shown as output.
    How can i register one concurrent program for multiple operating units.
    Thanks!
    Edited by: 994628 on Mar 18, 2013 4:39 PM
    Edited by: 994628 on Mar 18, 2013 4:42 PM

    >
    There are 10 operating units (10 ORG_ID's) and 10 rtf templates, one for each operating unit. There are 4 different responsibilities for each ORG_ID
    Eg: ORG_ID's = 11, 12, 13, 14..........etc
    Eg: Responsibility = xx, yy, zz...........etc
    I want to register a single concurrent program. When a user submits a request from "XX" responsibility, then the template associated with that org_id should be generated. Whichever responsibility the user is accessing from, that particular template must be shown as output.
    >
    interesting case for 10 OE set 10 template
    what is purpose? for each OE different requirements for layout?
    BTW
    if each Responsibility associated with one org_id then
    - you can get current org_id when you run concurrent program
    - create main template (will be #11) with condition like
    <?choose:?>
    <?when: ORG_ID=11?>
    <?import:xdo://FND.XX11_SUB.en.00/?>
    <?call:TEMPLATE11?>
    <?end when?>
    <?when: ORG_ID=12?>
    <?import:xdo://FND.XX12_SUB.en.00/?>
    <?call:TEMPLATE12?>
    <?end when?>
    <?otherwise:?>
    <?import:xdo://FND.XX21_SUB.en.00/?>
    <?call:TEMPLATE21?>
    <?end otherwise?>
    <?end choose?>so based on org_id will be import of needed subtemplate
    - re-register your "10 rtf templates" as subtemplates
    another way is substitution of template for concurrent then it running
    in before_report trigger set needed template
    l_conc_request_id := fnd_global.conc_request_id;
        if ORG_ID = 11 then
          UPDATE fnd_conc_pp_actions t
             SET t.argument2 = 'XX11'
           where t.concurrent_request_id = l_conc_request_id
             and t.action_type = 6;
      if ORG_ID = 21 then
          UPDATE fnd_conc_pp_actions t
             SET t.argument2 = 'XX21'
           where t.concurrent_request_id = l_conc_request_id
             and t.action_type = 6;

  • OSB - same branch for multiple operations

    Hi,
    I have a WSDL based proxy service with multiple operations. For 2 of the operations i want the same functionality and other operations have there own functionality.
    So in Operational Branch, can we have the same branch for 2 operations? I can easily create another branch and copy the code, but trying for a better solution.
    Thanks.......

    Use and if condition
    If branch == a | branch ==b
    same solution

  • 1099 Reporting for Multiple Operating Units using same Tax Id Number

    Everyone!!!!
    We have multiple operating units using the same tax id number. We need to use the 1099 standard reports. I see that in the 1099 standard programs, one of the necessary parameters is Tax Entity Id which is again at operating unit level.
    As 1099 reports need to be sent at the Tax Id Number not at operating unit level, is there any way to use the starndard program and do this, or will we have to customize it?
    We are on 11.5.10.2 if it matters. Let me know if you need more information.

    Ok, I Found it. We have to customize it. Taxes are reported at Operating Unit level only.

  • Single inspection lot for multiple operation

    Hi
    I am creating a process order having 10 operation. the 3,5 and 8 are quality inspection (inprocess inspection) & last is PP operation that is for final confirmation.
    The control key in quality operations are pi02 and for production operation are pi03.
    i am using insp type 03 in material master
    Curently only one inspection lot is trigerring for all operations hence while RR, all operation are appearing (Quality & production).
    User needs diffirent inspection lots for different quality operation.
    How can i triggere lots per QC operation??
    I would be vary thankful if i get it.
    AYK

    Hi
    Std will create one inspection lot for 1 process order
    and RR will show all operations which is related to inspection
    ask PP guy that cotrol indicator Pi03 - insp. char to be uncheck
    then it will not show those operations not relevant for inspection
    is't fullfill your requirement
    why your business needs individual inspection lot for each operation?
    give info
    Thanks
    Sami

  • For multiplicative operation

    Can the BigInteger type has multiplicative operation?
    I can't find such operation in the manual.
    Can you help me,
    Thanks alot!
    Ping

    The class java.math.BigInteger has a method multiply() .

  • Multiple Operations in a Single Interface - How To trace the Operations !!!

    Hello PI Experts,
    We have implemented an interface for Multiple Operations in the client proxy.
    We are able to trigger the proxy for the diff methods of the class and the message is flowing to the desired Receiver correctly.
    I have 2 queries regarding these mutiple operations workout :-
    1.     First thing I am curious about , how PI is knowing/handling the operation details i.e which operation   needs to be carried out & routed to which receiver.
    I had a good look at the SOAP Header Message , but there is no trace of the operation name    that is being used.Only the Interface name is tracked over   there.
    I just want to know , how PI is handling & determining this whole stuff and where we can find out the operation name which is being used...as it should be   mentioned somewhere in the message header.
    2.     Second one is if the sender is other than a webservice/proxy call, how can we make the operation specific calls from the sender for e.g if its a http call ?
    Could you please help me out with this.
    Thanks in Advance,
    Sunil Kumar
    Edited by: SUNIL DALAL on Nov 4, 2010 11:23 AM

    Yes, its possible no doubt..but how its playing with the operations can you please let me know.
    Thanks,
    Sunil
    Edited by: SUNIL DALAL on Nov 8, 2010 2:26 PM

  • Mapping in Services Interface with multiple operation... ?

    Hi ALL,
    I have a SOAP to SOAP scenario here Just PI 7.1 with EHP1 acting a bus no mapping nothing .
    1) I have the WSDL file from the receiver system with multiple synchronous operations  in it ..i imported the wsdl as External Definition .. i used the same the WSDL file to create the sender Service interface also...
    when i created the service interface with the operation in it , i just gave the same operation name from the WSDL.this i followed for the sender and receiver service interface.
    1)now the issue is do i need any operation mapping if the service interface has more than one operation ...?
    2) I compelted the scenario without any operation mapping ..but i am getting this error ..Problem occurred in receiver agreement for sender -ICRM_D to receiver -EXACTTGETWEBSERVICE_D,http://ICRMtoExactTaetWebservice.com.si_os_ICRM_EXACTTETWEBSERVICE: No standard agreement found for , ICRM_D, , EXACTTARGEBSERVICE_D, http://ICRMtoExactarebservice.com, si_os_ICRM_EXACGETWEBSERVICE..?
    pls help me in this issue..
    Thanks
    Souz

    you might want to read this /people/shabarish.vijayakumar/blog/2010/09/08/service-interface-and-multiple-operations--is-it-just-an-hype
    you will need to create additional configurations for multiple operations to be supported

  • Generic HTTP URL For Multiple Interfaces

    Hi All,
    Please suggest on the following requirement. I am using PI 7.31 Single stack (Java only version).
    There are multiple HTTP to Proxy interfaces and each interface has different source structure.
    The requirement is --- How to utilize a single HTTP URL for all the interfaces.
    The major challenge is the source structure for all the interfaces is different.
    Kindly Suggest....
    Regards,
    Nitin...

    Hi Nitin,
    One solution is to create one sender interface (with either multiple operation of each interface or having all structure in different node and optional occurrence), then use operation specific mapping.
    refer the below example for multiple operation scenario
    Setup Multiple Operations Scenario in ESR and ID
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/90dcc6f4-0829-2d10-b0b2-c892473f1571?overridelayout=t…
    regards,
    Harish

  • How to set multiple operating units in before report trigger

    hi all
    can any one help me out in getting clear in how to set multiple operating units in before report trigger in oracle report.
    as we set single operating unit (mo_global.set_policy.context('S',81); as 81 is my operating unit).then who to set for multiple operating unit at run time.

    Sounds like eBusiness Suite, right? Better ask this in the appropriate forum.

  • 1 PO for several Operating Units

    Hello
    Is it possible to create 1 Purchase order for several Operating Units? How can I achieve this?
    Thanks.

    A std. PO cannot be created for multiple operating units.
    However, Oracle allows you to create a Global blanket PO by checking the "GLOBAL" checkbox on the PO header.
    Hope this helps
    Sandeep Gandhi
    Independent Consultant

  • Error in multiple operation with change document object for custom table

    hi all,
    I have developed a change document object for a custom table ZTEST and developed a report program for insertion, updation & deletion..everything works fine if I do only once ie. if I created only 1 entries. If I created 2 new entries , I am getting an Error "DUPREC:POS&Z3RL_TAB&Z3RL_TAB" and EXIT the transaction.
    why I am getting this error??? is it not possible to do multiple operation with the change document???
    kindly help.
    Edited by: JaiKarthik on Apr 7, 2010 6:20 AM

       LOOP AT ts_mod INTO wa_mod.
                READ TABLE <i_itab> INTO <wa_tab> INDEX wa_mod-row.
    * Select the existing entries in table Z3RL for change history
                    SELECT SINGLE * FROM z3rl
                           INTO wa_z3rl
                           WHERE vkorg   = <wa_tab>+3(4)
                           AND   zzkunnr = <wa_tab>+7(10).
    * Move the old entries
                    IF sy-subrc = 0.
                      CLEAR ls_z3rl.
                      ls_z3rl = wa_z3rl.
                    ENDIF.
    * Update the table
                 MODIFY (viewname) FROM <wa_tab>.
                   CLEAR wa_z3rl.
                    wa_z3rl-mandt      = <wa_tab>+0(3).
                    wa_z3rl-vkorg      = <wa_tab>+3(4).
                    wa_z3rl-zzkunnr    = <wa_tab>+7(10).
    * Populate change tables
                    CLEAR wa_change.
                    wa_change-teilobjid = 'Z3RL'.
                    wa_change-textart = 'TEST_2'.
                    wa_change-textspr = 'EN'.
                    wa_change-updkz = 'U'.
                    APPEND wa_change TO ts_change.
    *call the fM to log the values in CDHDR table.
                    CALL FUNCTION 'Z3RL_WRITE_DOCUMENT'
                      EXPORTING
                        objectid                 = 'Z3RL'
                        tcode                    = sy-tcode
                        utime                    = sy-uzeit
                        udate                    = sy-datum
                        username                 = sy-uname
                        planned_change_number    = ' '
                        object_change_indicator  = 'U'
                        planned_or_real_changes  = 'U'
                        no_change_pointers       = 'U'
                        upd_icdtxt_z3rl= 'U'
                        n_z3rl= wa_z3rl
                        o_z3rl        = ls_z3rl
                        upd_z3rl= 'U'
                        lv_opt                   = ' '
                      TABLES
                        icdtxt_z3rl= ts_change.
                CLEAR : wa_mod, <wa_tab>.
              ENDLOOP.
    Edited by: JaiKarthik on Apr 7, 2010 6:49 AM

  • Multiple Operations for File to IDoc scenario

    Hi all,
    I have a file to IDoc scenario where two IdocXML files (one for INSERT and one for CHANGE of Business Object) have to be picked up by file adapter and transfered to SAP System. In respect to the multiple operations PI 7.1 can handle I would like to create one Service Interface for the Business Object and two operations (INSERT and CHANGE).
    Unfortunately I am not able to use the operation in the sender agreement, so I can't specify the comm-channel for the operations, only for the interface.
    So, can I use multiple operations in a file scenario (respectively in a non Web Service scenario)??
    Thanks a bunch,
    Manfred

    The scenario is pretty easy. I just want two different files to be read by one Comm Channel with one Sender Agreement.
    They are both transferred to the same receiver. I just wanted to test one scenario using multiple operations.
    In your blog you described that you should not use two operations with the same set of messages (synchronous/asynchronous). In my case both are asynchronous but I already tried it with one being sync and the other one async. Where did you actually get this information, it puzzles me a little since SAP does the same in its preconfigured Enterprise Services as far as I know.
    In the Trace for pipeline step Interface determination in SXMB_MONI it says:
    <Trace level="1" type="T">...There is no Interface Determination configured for receiver party and receiver service BS_RECEIVER</Trace>
      <Trace level="2" type="T">Check conditions for (Inb: Party Srvc If) BS_RECEIVER SI_..._Out</Trace>
      <Trace level="2" type="T">...valid InbIf without Condition: SI_..._Out</Trace>
      <Trace level="2" type="T">Number of receiving Interfaces:1</Trace>
    So it finds the Outbound Interface in Receiver side which is wrong since I specified the Inbound Interface in the Interface determination. Did anyone of you already encounter such a behaviour? I already deleted and recreated all routing objects but without any success.
    Thanks,
    Manfred

  • Defining Multiple operations for async calls in OSB

    Hi,
    I have three Asynchronous BPEL processes- BPELProcessA, BPELProcessB and BPELProcessC
    I am trying to invoke BPELProcessB and BPELProcessC from BPELProcessA through an OSB Proxy service. I want to use a single proxy service to make calls to BPELProcessB and BPELProcessC from BPELProcessA . To do this I defined multiple operations in the wsdl of the proxy service. This is not working
    But I am able to implement the following
    1. If BPELProcessB and BPELProcessC are Synchronous, I am able to invoke BPELProcessB and BPELProcessC by defining multiple operations in the proxy service wsdl
    2. I am able to invoke and receive response from 1 Asynchronous BPEL process by defining 1 operation in the proxy service wsdl. I followed the approach described at [http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/bpelpmtransport/transport.html#wp1111338]. Does this mean for each asynchronous BPEL, I need a separate pair of OSBs for each async process ( 1 for request and 1 for callback)?
    Has anyone tried invoking multiple asynchronous processes by defining multiple operations in the wsdl?
    Kindly request every to give inputs

    Hi Eric
    Below is the flow and error we are getting:
    ProcessA is calling ProcessB and ProcessC through common OSB. In OSB we have created individual business services for ProcessB and ProcessC.I am using common Proxy service for calling these two Business Services using different operations.I have created one callback business service and Proxy service for ProcessA.
    I am successfully able to call BPEL processes, ProcessB and ProcessC, but during callback client activity these two BPEL processes are failing with below error and ProcessA is going in waiting on receive activity state:
    nested exception is:ORABPEL-00000
    Exception not handled by the Collaxa Cube system.
    An unhandled exception has been thrown in the Collaxa Cube system. The exception reported is: "ORABPEL-08010
    Failed get operation definition.
    Failed to get the WSDL operation definition of "onResult" in portType "{http://xmlns.oracle.com/AsyncBPELProcess}AsyncBPELProcessCallback".
    Please verify that operation "onResult" is defined in portType "{http://xmlns.oracle.com/AsyncBPELProcess}AsyncBPELProcessCallback".
         at com.collaxa.cube.ws.wsdl.WSDLUtils.getOperation(WSDLUtils.java:216)
         at com.collaxa.cube.ws.wsdl.WSDLUtils.getOperation(WSDLUtils.java:208)
         at com.collaxa.cube.ws.wsdl.WSDLManager.isOneWayOperation(WSDLManager.java:517)
         at com.collaxa.cube.engine.core.BaseCubeProcess.getOperationType(BaseCubeProcess.java:735)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.getOperationType(DeliveryHandler.java:778)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.post(DeliveryHandler.java:71)
         at com.collaxa.cube.ws.WSIFInvocationHandler.invokeLocalService(WSIFInvocationHandler.java:1338)
         at com.collaxa.cube.ws.WSIFInvocationHandler.invoke(WSIFInvocationHandler.java:287)
         at com.collaxa.cube.ws.WSInvocationManager.invoke2(WSInvocationManager.java:528)
         at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:248)
         at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__invoke(BPELInvokeWMP.java:829)
         at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:412)
         at com.collaxa.cube.engine.ext.wmp.BPELActivityWMP.perform(BPELActivityWMP.java:199)
         at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:3714)
         at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1657)
         at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:75)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:220)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:317)
         at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:5787)
         at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:1089)
         at com.collaxa.cube.engine.delivery.DeliveryService.handleInvoke(DeliveryService.java:589)
         at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(CubeDeliveryBean.java:421)
         at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.interceptor.system.JAASInterceptor$1.run(JAASInterceptor.java:31)
         at java.security.AccessController.doPrivileged(Native Method)
         at javax.security.auth.Subject.doAs(Subject.java:396)
         at com.evermind.server.ThreadState.runAs(ThreadState.java:695)
         at com.evermind.server.ejb.interceptor.system.JAASInterceptor.invoke(JAASInterceptor.java:34)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.interceptor.system.TxRequiredInterceptor.invoke(TxRequiredInterceptor.java:50)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55)
         at com.evermind.server.ejb.StatelessSessionEJBObject.OC4J_invokeMethod(StatelessSessionEJBObject.java:87)
         at CubeDeliveryBean_LocalProxy_4bin6i8.handleInvoke(Unknown Source)
         at com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessageHandler.handle(InvokeInstanceMessageHandler.java:37)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:141)
         at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:58)
         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
         at java.lang.Thread.run(Thread.java:595)
    Exception: ORABPEL-08010
    Failed get operation definition.
    Failed to get the WSDL operation definition of "onResult" in portType "{http://xmlns.oracle.com/AsyncBPELProcess}AsyncBPELProcessCallback".
    Please verify that operation "onResult" is defined in portType "{http://xmlns.oracle.com/AsyncBPELProcess}AsyncBPELProcessCallback".
    Handled As: com.collaxa.cube.CubeException

  • Dynamic routing for a Business Service with multiple operations

    I have two business services with multiple operations. Business service A (bsA) has operations OpA1 and OpA2. Business service B (bsB) has operations OpB1 and OpB2.
    Depending on incoming Proxy message and operation, I have to do one of the following
    1. If someValue = A and operation= Op1 then invoke operation opA1 of bsA
    2. If someValue = B and operation= Op1 then invoke operation opB1 of bsB
    3. If someValue = C and operation= Op1 then invoke operation opA1 of bsA AND* operation opB1 of bsB and return aggregate data of both invocations
    1. If someValue = A and operation= Op2 then invoke operation opA2 of bsA
    2. If someValue = B and operation= Op2 then invoke operation opB2 of bsB
    3. If someValue = C and operation= Op2 then invoke operation opA2 of bsA AND* operation opB2 of bsB and return aggregate data of both invocations
    Using a dynamic route node or dynamic routing options, I am able to achieve cases 1, 2, 4, and 5.
    But for cases 3 & 6, I can not use a route node. When I use a Service call out instead, then I am forced to create a Operational branch but that does not seem like the best design since for every new operation added to the business services, I have to add a new branch to the Operational branch and redo all the functionality for that branch.
    Basically, I am looking to achieve the functionality of the Route node ( no need to specify the operation ).
    Any thoughts/ideas on what the best design would be?
    thanks

    For cases 3 & 6, why don't you route to another proxy service where you can simple do two service callouts, merge output data somehow and return them to the first proxy?
    If you look for "special route feature", that could possibly call two services for a single message, I'm afraid you won't succeed.

Maybe you are looking for