Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / All-Topics

Creating Oracle Adapter Metadata from Visual Studio in BizTalk 2006 – Points to consider in Enterprise

0.00/5 (No votes)
13 May 2009CPOL2 min read 16.4K  
Creating Oracle Adapter Metadata from Visual Studio in BizTalk 2006 – Points to consider in Enterprise
  1. Build a separate project for Oracle adapter metadata which gives auto-generated schema types and port types because if anyone else in the enterprise uses the same table, it will be generated with the default target namespace “http://schemas.microsoft.com/[OracleDb://{ServiceName}/{TableName}]#{Operation}” and if both the projects get deployed on the same server, you will get a routing failure. For e.g. the mostly used schema is the NativeSQL for generic SQL statements and of course used for polling statement results.
    "There was a failure executing the receive pipeline: 
    "Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines,
    Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35? 
    Source: "XML disassembler" Receive Port: "ReceivePortOracleDemo" 
    URI: "OracleDb://OLTPDEV_6d833f94-9fb8-423e-be29-bc7a75884bc0? 
    Reason: Cannot locate document specification because multiple schemas 
    matched the message type 
    "http://schemas.microsoft.com/[OracleDb://OLTPDEV/NativeSQL]#SQLEvent". 
  2. When generating metadata, first create a Static Solicit-Response send port in the default BizTalk project which is BizTalk Application 1 in the Management Console. Create one port for each of your services in Oracle. This send port will only be used for generating schemas as when generating schemas in the following dialogue. To retrieve Oracle adapter metadata, perform the following steps:
      • Right click your project, go to Add and then select Add Generated Items.
      • In Categories, select Add Adapter Metadata.
      • In templates, double Click Add adapter Metadata.

    You will get the following dialog:.

    oracle_adapter_metadata

    Select the Oracle Database adapter and then select the port you created in the BizTalk Application 1 project. Select your Table or Native SQL type and you will get Orchestration File with Type Orchestration_1, Port Types with Operations of Select, Insert, Remove and Update. Also multi-part messages will be created for all the operations request and responses. All the multi-part message parameters message part will be of the type of the schema generated.

  3. There are a few catches and you will face problems when generating metadata, the first thing is every time an orchestration file is generated, the Orchestration Type is Orchestration_1 in the same project which should not be the case however the filename is Orchestration_(Index+1). The second thing is all the generated Multi-part messages will be of the same name Query, QueryResponse, etc. So If you are adding metadata for two tables, you will run into troubles with conflicting message part types as they will have the same name and same namespace.

    The workaround for this is before you create a metadata for the adapter, change the default namespace of your schema project to let's say MyEnterprise.Oracle.Schemas.[Tablename]. In this way, the multi-part message types created will be of different namespaces and of course the Oracle Port created will point to the same message types and there will be no conflict. Then change the name of your multi-part messages with a prefix of your tablename so that the referencing project can identify the message names.

    Oracle_adapter_MessageTypes2
  4. At the end, open the Orchestration file created, change its type from Orchestration_1 to TableName type. As you will be using this project for schema types, don’t forget to change the access modifier properties of Ports and multi-part messages from Internal to Public.

Technorati tags :
Posted in BizTalk Development Tagged: BizTalk Oracle Adapter

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)