Dynamic lookup using UDDI inside of BPEL

Currently I'm looking into using UDDI as a solution to finding web services for BPEL, as opposed to simply keeping static WSDLs around. Initially I would just like to know if it is possible to do a lookup to a UDDI server inside of BPEL, and then invoke a service returned by the lookup.
The ideal solution we are looking for is to keep a local WSDL to one of the web services we would like to call. We would first attempt to call this web service... but on the event of a failure (such as the service being down), we could go to UDDI to find another instance of this service that is up and running.
This leaves a lot of questions though... how possible is it for BPEL to work dynamically in the first place? MUST I specify the location of the Web Service at compile time? Is it possible to keep a local directory with WSDLs in it, and have BPEL parse them at run time (meaning, I could invoke some function inside of BPEL to parse the WSDL to find the address to the web service)?
Is this solution even remotely do-able?
The other solution which seemed more feasible would be to create a proxy service, which basically mimics the input/output behavior of the original web service I want to invoke, but in reality is using UDDI to find the real web service, and forward the results to/from it.
I'm wondering why UDDI is generally so overlooked. It seems like it's a buzzword to get into your product, but nobody anywhere seems to make any actual usage out of it. It seems like a pretty important idea behind the SOA structure.

I think the challenge is in figuring out when to do the request for search to the backend. If you have fast turnaround time, you can probably send a new request each time the user types a character and bring back the results for it as they type - that may be overkill though. if this is the way you do it, then your filtering is done before it returns from the server. For performance reasons, you may wish to use a stored procedure in the database that does a regular expression search on your data ( only search the columns you have to.)
As for getting the data back: In the result handler, the function you specify [in the remote method call] to load the returned data into the local dataprovider, you could simply have it clear the dataprovider re-populate it and call refresh() on the dataprovider each time. I am not sure how that would appear to the user as it again depends on turnaround time from the backend, size of the dataset, etc.
I hope this gives you an idea at least. Without knowing more about your application and how it is architected, it is difficult to provide any "reasonable" recommendation. It is an interresting problem and one that sounds like fun to solve - of course, I am not sitting there with management breathing down my neck either.

Similar Messages

  • Dynamic lookup using flex?

    Hi Folks -
    You know when you are typing a string in a search engine and as you type, options that match what you've typed so far appear in a box below the input field?  I'm trying to recreate that kind of funtionality using flash/flex.  Ideally, a keyup/press event would query the back end and have new data returned, which would populate the box with appropriate data.
    I'm new to flex and don't know much about mxml.  This could very well be something that is achieved easily, but I don't even know where to start.  Does anybody know how I could achieve something like this on the front end?  I'm not so concerned about the data and where it's coming from than how to make the UI part.
    Any help would be great!

    I think the challenge is in figuring out when to do the request for search to the backend. If you have fast turnaround time, you can probably send a new request each time the user types a character and bring back the results for it as they type - that may be overkill though. if this is the way you do it, then your filtering is done before it returns from the server. For performance reasons, you may wish to use a stored procedure in the database that does a regular expression search on your data ( only search the columns you have to.)
    As for getting the data back: In the result handler, the function you specify [in the remote method call] to load the returned data into the local dataprovider, you could simply have it clear the dataprovider re-populate it and call refresh() on the dataprovider each time. I am not sure how that would appear to the user as it again depends on turnaround time from the backend, size of the dataset, etc.
    I hope this gives you an idea at least. Without knowing more about your application and how it is architected, it is difficult to provide any "reasonable" recommendation. It is an interresting problem and one that sounds like fun to solve - of course, I am not sitting there with management breathing down my neck either.

  • Service Registry's Dynamic Lookup of BPEL Partner Link not working

    Hi,
    Software : SOA 10.1.3.1
    OS : Windows XP, 2000
    I have deployed webservice application (GetMaxOfTwo) which will give me max of 2 values. Registered the WS in OWSM with user authentication. Registered newly generated WSDL in OSR (Oracle Service Registry). A simple BPEL Process will call service as PartnerLink, which is configured as "Enabling Dynamic Lookup of BPEL Partner Link Endpoints". As mentioned in the document made entry in bpel.xml as registryServiceKey property containing the serviceKey value to the partnerLinkBinding section.
    The entire scenario is working fine and changed the servicekey value to wrong value in bpel.xml and redeployed, as expected it was giving me error message saying invalid servicekey.
    Now deployed GetMaxOfTwo in another application server and registered in OWSM. Intentionally stopped the first GetMaxOfTwo application. In the OSR Service changed the binding with new WSDL of OWSM. As BPEL process enabled with dynamic lookup it should execute without any error. But the results in this case was giving error saying the service was down. (Means it is referring to the old GetMaxOfTwo webservice.
    What could be the reason?, something is missing in the configuration?
    Regards
    Venkata M Rao
    +91 80 4107 5437

    Hi
    I am having trouble making the BPEL and Systinet to work together. I have Systinet and BPEL installed separately on 2 different servers. I deployed my web services and registered them in UDDI. I created a new BPEL process and added a partner link to refer to one of the web service I have registered in UDDI. When I create the partner link, it is forcing me to give the wsdl and it also gives an error message " There are no partner link types defined in current wsdl. Do you want create that will by default create partner link type for you?". If I say "NO' then deployment fails. If I say "Yes", then it creates a new wsdl file on the local server etc and gives "<Faulthttp://schemas.xmlsoap.org/soap/envelope/>
    <faultcode>soapenv:Server.userException</faultcode>
    <faultstring>com.oracle.bpel.client.delivery.ReceiveTimeOutException: Waiting for response has timed out. The conversation id is 75164a0815ea471a:-3be8c246:117cc377894:-537b. Please check the process instance for detail.</faultstring>". Any help is appreciated.

  • Using UDDI to create reusable ESB/BPEL artifacts

    I would like to make my ESB artifacts reusable by removing end-point details from ESB configuration and having that kind of detail in an UDDI. It does not seem that the ESB has the ability to do UDDI inquiry's in runtime. Does anyone now of a work around? Have played around with the endpoint properties beta feature in Jdev to achieve some sort of abstraction, but this is not good enough (http://download-east.oracle.com/docs/cd/B31017_01/integrate.1013/b28211/adapter_services.htm#CHDJJDHB)
    From BPEL there seems to be a way of at least using UDDI service keys (http://www.oracle.com/technology/tech/soa/soa-suite-best-practices/reusable-soa.html).
    Any input would be much appreciated.

    Hi
    We're planning an enhancement that will enable ESB to query UDDI for service endpoints using the uddiServiceKey, similar to what we provide with BPEL.
    If you send me an email on this subject I'll inform you when the enhancement is available.
    Thanks
    Dan Hynes
    [email protected]

  • How to get the service name of a webservice using UDDI API

    Hi,
    Iam working on setting up a dynamic partner link in a BPEL, by passing the endpoint of a web service queried from the UDDI (Oracle Service Registry 10.3 ) using the API. Iam able to do it successfully.
    Now, for example I have two operations in my wsdl, one to createCustomer and the other to bookTicket. I need to get the operation name using UDDI API so that i can pass it along with the endpoint to the partner link. ie. When i need to createCustomer, my UDDI API code will need to get the service name createCustomer and the endpoint and I would pass them to the partnerlink and the createCustomer operation of my webservice would be called.
    Can any one help me to get the service names of the wsdl using UDDI APIs.
    Thanks,
    Ananth

    Hi sia,
    1. Table is APQI
    2. field name for session name is GROUPID
    regards,
    amit m.

  • Data processing inside a bpel process

    I am unclear as to how I can execute some data processing while inside a bpel process. We have a situation where we may get multiple changes to a particular db record in succession but we only need to forward on the last entry to another db. I am unsure as to how I could do this inside of a bpel process. I thought about calling some java code to do it but was wondering if there might be other ways to accomplish this.
    Thanks,
    Steve

    Hi Vijay,
    Actuall i just want the script of executing procedure from a package for fetching records from database in a bpel process.
    I'm not having the technical ability about how to create a package and a procedure and then use it in a bple process.
    Forward me if you know any link for creating packages and procedures.
    Regards,
    Chakri

  • Dynamic Lookup in OWB 10.1g

    Can we execute dynamic lookup in OWB 10.1g?
    I want update the columns of the target table, based on the previous values of the columns.
    Suppose there is a record in the target table with previous status and current status columns.
    The source table consist of 10 records which need to be processed one at a time in a single batch. Now we need to compare the status of record with the current status of target table. If the source contains next higher status then the current status of target record need to go to previous status and the new status coming from source need to overwrite the current status of target record.
    We have tried using row based option as well as setting commit frequency equal to 1 but we are not able to get the required result.
    how can we implement this in OWB10.1g?

    OK, now what I would do in an odd case like this is to look at the desired FINAL result of a run rather than worry so much about the intermediate steps.
    Based on your statement of the status incrementing upward, and only upward, your logic can actually be distilled down to the following:
    At the end of the load, the current status for a given primary key is the maximum status, and the previous status will be the second highest status. All the intermediate status values are transitional status values that have no real bearing on the desired final result.
    So, let's try a simple prototype:
    --drop table mb_tmp_src; /* SOURCE TABLE */
    --drop table mb_tmp_tgt; /*TARGET TABLE */
    create table mb_tmp_src (pk number, val number);
    insert into mb_tmp_src (pk, val) values (1,1);
    insert into mb_tmp_src (pk, val) values (1,2);
    insert into mb_tmp_src (pk, val) values (1,3);
    insert into mb_tmp_src (pk, val) values (2,2);
    insert into mb_tmp_src (pk, val) values (2,3);
    insert into mb_tmp_src (pk, val) values (3,1);
    insert into mb_tmp_src (pk, val) values (4,1);
    insert into mb_tmp_src (pk, val) values (4,3);
    insert into mb_tmp_src (pk, val) values (4,4);
    insert into mb_tmp_src (pk, val) values (4,5);
    insert into mb_tmp_src (pk, val) values (4,6);
    insert into mb_tmp_src (pk, val) values (5,5);
    commit;
    create table mb_tmp_tgt (pk number, val number, prv_val number);
    insert into mb_tmp_tgt (pk, val, prv_val) values (2,1,null);
    insert into mb_tmp_tgt (pk, val, prv_val) values (5,4,2);
    commit;
    -- for PK=1 we will want a current status of 3, prev =2
    -- for PK=2 we will want a current status of 3, prev =2
    -- for PK=3 we will want a current status of 1, prev = null
    -- for PK=4 we will want a current status of 6, prev = 5
    -- for PK=5 we will want a current status of 5, prev = 4
    Now, lets's create a pure SQL query that gives us this result:
    select pk, val, lastval
    from
    select pk,
    val,
    max(val) over (partition by pk) maxval,
    lag(val) over (partition by pk order by val ) lastval
    from (
    select pk, val
    from mb_tmp_src mts
    union
    select pk, val
    from mb_tmp_tgt mtt
    where val = maxval
    (NOTE: UNION, not UNION ALL to avoid multiples where tgt = src, and would want a distinct in the union if multiple instances of same value can occur in source table too)
    OK, now I'm not at my work right now, but you can see how unioning (SET operator) the target with the source, passing the union through an expression to get the analytics, and then through a filter to get the final rows before updating the target table will get you what you want. And the bonus is that you don't have to commit per row. If you can get OWB to generate this sort of statement, then it can go set-based.
    EDIT: And if you can't figure out how to get OWB to generate thisentirely within the mapping editor, then use it to create a view from the main subquery with the analytics, and then use that as the source in your mapping.
    If your problem was time-based where the code values could go up or down, then you would do pretty much the same thing except you want to grab the last change and have that become the current value in your dimension. The only time you would care about the intermediate values is if you were coding for a type 2 SCD, in which case you would need to track all the changes.
    Hope this helps.
    Mike
    Edited by: zeppo on Oct 25, 2008 10:46 AM

  • Can error handling framework use fault policies and BPEL catch blocks

    As part of an integrated customer solution that makes substantial use of SOA Suite (including OSB, BPEL, Mediator, etc) we are in the process of designing an “Error Hospital” subsystem to expose a web service API specifically for BPEL services and/or the OSB layer to call whenever they encounter an exception which they cannot handle so that the appropriate user is notified of the error (via email) and the error is recorded (in an appropriate common fault format, with error codes elaborated into more meaningful descriptions, etc) within OEM, immediately prior to returning the exception to the caller.
    The problem we have experienced in our design is as follows:
    •     We have an error handling service to be called, inside the BPEL catch blocks, when an error occurs to notify the appropriate user, via email, that an error has occurred;
    •     We also use the error handling XML fault-policies so that we can recover from an error using OEM (via human intervention);
    •     The error service needs to be called before the process is suspended (waiting for human intervention) so the email notification and error message formatting occurs BEFORE the recovery action. Unfortunately the fault policies trigger BEFORE the error handler is able to transform the error into the appropriate format and notify the user so the error recorded is not the reformatted one and the user is never notified.
    The key question is how can a BPEL, upon catching an exception, invoke the error handling service and AFTER that send the error to OEM (and have the process suspended).
    It seems the two mechanisms "cannot play nicely together"

    As part of an integrated customer solution that makes substantial use of SOA Suite (including OSB, BPEL, Mediator, etc) we are in the process of designing an “Error Hospital” subsystem to expose a web service API specifically for BPEL services and/or the OSB layer to call whenever they encounter an exception which they cannot handle so that the appropriate user is notified of the error (via email) and the error is recorded (in an appropriate common fault format, with error codes elaborated into more meaningful descriptions, etc) within OEM, immediately prior to returning the exception to the caller.
    The problem we have experienced in our design is as follows:
    •     We have an error handling service to be called, inside the BPEL catch blocks, when an error occurs to notify the appropriate user, via email, that an error has occurred;
    •     We also use the error handling XML fault-policies so that we can recover from an error using OEM (via human intervention);
    •     The error service needs to be called before the process is suspended (waiting for human intervention) so the email notification and error message formatting occurs BEFORE the recovery action. Unfortunately the fault policies trigger BEFORE the error handler is able to transform the error into the appropriate format and notify the user so the error recorded is not the reformatted one and the user is never notified.
    The key question is how can a BPEL, upon catching an exception, invoke the error handling service and AFTER that send the error to OEM (and have the process suspended).
    It seems the two mechanisms "cannot play nicely together"

  • Getting dynamic lookup error!

    I am using OSX 10.9.5 and getting the below error:
    dyld: lazy symbol binding failed: Symbol not found: _OCIEnvCreate
      Referenced from: /Users/Desktop/socket.io/node_modules/node-oracledb/build/Release/oracledb.node
      Expected in: dynamic lookup
    dyld: Symbol not found: _OCIEnvCreate
      Referenced from: /Users/Desktop/socket.io/node_modules/node-oracledb/build/Release/oracledb.node
      Expected in: dynamic lookup
    Any ideas? This pops up on the require statement itself :
    var oracledb = require('node-oracledb');

    Have you set DYLD_LIBRARY_PATH?  See http://www-content.oracle.com/technetwork/topics/intel-macsoft-096467.html#ic_osx_inst

  • How to implement Dynamic lookup in OWB mappings(10g)

    Hi,
    Iam using OWB 10g version for developing the mappings.
    Now I need to implement the Dynamic lookup in the mapping.Is there any transformations available in OWB to achieve this.
    Please give me some information about the same.
    Thanks in advance...

    Hi,
    first i have created a procedure witht he following code in the code editor...
    BEGIN
    Declare
    Cursor C_brand_col is
    Select cat from TBL_CAT_EDESC_BRAND ;
    Vbrand varchar2(240);
    Cursor C_bredesc_col is
    Select EDESC_BRAND from TBL_CAT_EDESC_BRAND;
    Vbredesc varchar2(240);
    V_Command varchar2(30000);
    Begin
    Open C_brand_col;
    Fetch C_brand_col into vbrand;
    Open C_bredesc_col;
    Fetch C_bredesc_col into vbredesc;
    loop
    V_Command := 'update sav_fc_sa_pc c set c.'||vbrand||'=';
    V_Command := V_Command||'(select d.fc_brands_sa from TEST_brand d' ;
    V_Command := V_Command||' where d.brand_edesc = '||''''||vbredesc||''''||' and c.cardno=d.cardno)';
    dbms_output.put_line('10 '||V_command);
    Execute immediate v_command;
    Fetch C_brand_col into vbrand;
    Exit when c_brand_col%notfound;
    Fetch C_bredesc_col into vbredesc;
    Exit when c_bredesc_col%notfound;
    end loop;
    commit;
    end;
    END;
    then i validate it and deply it..
    after that i create a mapping and in that mapping i first import the table TBL_CAT_EDESC_BRAND and drag and drop it into the mapping and again the i put the procedure into a transformation operator and connect the inoutgrp of the table to the transformation operator ingrp deploy it and run it...this is taking a lot of time .... so i am not sure whether i am doing the right thing...for this dynamic sql i dont need to pass any parameters. can i juz execute this procedure or should i create a mapping ???? i am totally confused... could you please help me.....how to proceed........
    if i juz execute the dynamic sql it takes only 5 min in sql but i am not sure how ti implement it in owb... can you please help...
    Thanks a many

  • Using UDDI key in OSB business service

    Hi All,
    I want to know how to invoke a service published in Oracle service registry through dynamic lookup in OSB. I tried importing service published in OSR as a OSB business service through sb console. In that the business created had the actual service end point reference rather than the UDDI service key. Hence the changes done to the service endpoint in OSR wont get automatically propagated to the osb business service as there is no actual dynamic look up.

    You will need to setup the Target system's server certificate as trusted in Weblogic's keystore or the Root CA certificate which certified target system's server certificate as trusted CA in weblogic.
    Check this thread for more details:
    Callling an external service through HTTPS

  • How can i use Oracle Adpaters without BPEL

    I want to ask how to use adapters without using BPEL.
    Is there any document about that ?
    All document i read using the adpater inside BPEL project.
    Thanks in advance,

    Hi,
    If you are refering to iWay Supplied adapters (like JDE, SAP, PeopleSoft etc. also known as Oracle Adapters) and using them from outside BPEL, then you can very well use them outside BPEL.
    All the adapters can be deployed on to your Oracle Application Server as Resource Adapter for JCA access and also you can deploy Oracle Business Service Engine (OBSE/ iBSE) a servlet apps onto your Apps Server for Web Service generation.
    Hope this is of any help.
    Best Regards,
    Sandipan

  • Call client inside a BPEL process

    Hello,
    I have the following question:
    Is it possible to call a client within a BPEL process to get more variables which are needed to complete the BPEL process?
    I don´t want to enter "all" the variables, which could be needed, in the beginning with one client, but only a minimum. For the rest, only the needed variables are entered manually with a client inside the BPEL process.
    I read something about asynchronous BPEL processes, but I don´t know if this will solve my problem and how I can open the client.
    Or is there another solution for my problem?
    I hope, that someone can help me.
    Thanks in advance.
    Mike
    (* Sorry for my bad english *)

    Hi Vijay,
    Actuall i just want the script of executing procedure from a package for fetching records from database in a bpel process.
    I'm not having the technical ability about how to create a package and a procedure and then use it in a bple process.
    Forward me if you know any link for creating packages and procedures.
    Regards,
    Chakri

  • How to know server/node name inside a BPEL process in a clustered env

    We have a clustered environment of 4 nodes, we know that one of the BPEL Process on one of the nodes is not functioning normally. One way we isolated the problem is to test through Java Delivery API on each of the individual nodes through BPEL Console. However this is time consuming. If we want to implement an error handling mechanism, where we can format the name of the server/node of the cluster on which the BPEL process is getting executed it will be great. I couldn't find any Xpath Extension Function to retrieve the node /server name easily inside a BPEL process. There are functions to retrieve the domain, process name, version etc... but I'm trying to find something like ora:getRMIHostName() and ora:getRMIPort(). I can retrieve the few entries such as hostname.rmi from the return value of java.lang.System.getProperties () inside Embedded Java Code Step but not sure how safe it is to do so.

    Hi There,
    JMX can be used to discover all the names and addresses of managed servers in a cluster.
    find more information on this link: http://e-docs.bea.com/wls/docs81/jmx/index.html
    Let me know if works,
    Cheers

  • Dynamic security using Security table in SSAS Tabular model

    Hi, 
    Platform : SSAS Tabular model (VS 2010)
    I need to apply Dynamic security using Security table(manually created) in Tabular model, Need to apply filter for 2 tables. I am able to
    create roles in Tabular model using USERNAME() and LOOKUP() function it worked fine. But the problem is when i am trying to give full access for a particular column and limit the access in other column, it is not working properly.
    Please find below table and guide me where i am falling short. In the Security table wherever you find ALL it means full access.
    Security table
    Login Name
    Dim_Country
    Dim_Customer
    DOMAIN\User1
    ALL
    2
    User1 should see all countries but Only 2,4 Customers
    DOMAIN\User1
    ALL
    4
    DOMAIN\User2
    2
    ALL
    User2 should see all customers but Only 2,3 countries
    DOMAIN\User2
    3
    ALL
    DOMAIN\User3
    ALL
    ALL
    User3 should see all Customers and Countries
    DOMAIN\User4
    1
    3
    User4 should see 1 Country and 3 Customer
    ALL - means NO restriction
    Numeric values indicate the Dimension IDs
    Do let me know if further explanations required.
    Thanks,
    Sundar

    Hi Sundar,
    According to your description, you want to implement dynamic security using Security table in SQL Server Analysis Services Tabular model, right?
    It is very common to have data security implementation in BI projects either at databases or Cubes and sometimes this security implementation and maintenance goes out of control due to the dynamic flow of business information. Here are some links which describe
    dynamic security implementation at SSAS tabular model using an external security table, please see:
    http://bipassion.wordpress.com/2012/10/01/ssas-tabular-dynamic-security/
    http://www.bidn.com/blogs/ChrisSchmidt/ssas/4332/dynamic-security-in-tabular
    Regards,
    Charlie Liao
    TechNet Community Support

Maybe you are looking for