Thursday, May 28, 2015

Correlation in Oracle BPEL

Correlation is one of the important & tricky technique available within Oracle BPEL PM.

Synchronous & Asynchronous web services:

Whenever a synchronous web service is invoked from Oracle BPEL via a partnerlink, only one port is established for communication with the exposed web service which is used by both request & response messages. However, when an asynchronous web service is invoked, two ports are opened for communcation: one for request & one for response messages.

How does Oracle BPEL identify asynchronous responses?

As response from an asynchronous web service is not guaranteed to be received within a specified time frame, and many instances of the same service might be invoked before even a response can be obtained, how does Oracle BPEL identify and relate the responses to the appropriate requests and proceed for completion of further activities that may be scheduled? The answer is "WS-Addressing".

What is WS-Addressing?

WS-Addressing is a transport-neutral mechanism by which web services communicate addressing information. SOAP envelopes & headers used within web services for transporting data throught transport layers like HTTP does not possess intelligence to specify unique addressing information. Hence, WS-Addressing evolved which contained endpoint references (EPR) and message information headers for identification. This information is processed independently of the transport mechanism or application.

By default, Oracle BPEL PM implements WS-Addressing for all asynchronous web service calls, hence we don't have to explicitly implement identification relationship between the incoming & outgoing messages.

Correlation:

In short, Correlation is a BPEL technique which provides correlation of asynchronous messages based on the content of the message.

Why & Where Correlation?

The following are few scenarios in which we would be required to implement Correlation to identify & relate message communication;

  1. When the external web service called doesn't have WS-Addressing capability
  2. When the message travels through several services and response is solicited by the initial service from the last service directly
For instance, request flow process1 -> process2 -> process3 and response is received from process3 ->process1

Implementing Correlation:

a) Creating Correlation Sets:

In Structure Window of the JDeveloper IDE, right click on the Correlation Sets and choose 'Create Correlation Set' Provide a name for your correlation set being created.
In the properties section, select 'Add' to display the property chooser window Choose 'Create' to create a property on which the correlation has to be initiated. Provide a name and type for the property.

b) Associating the Correlation set on receive/invoke, pick activities

Go the the correlations tab on the activity (invoke/receive/pick) on which you need to set & validate the correlation Add the created correlation set to the activity


When set to yes, correlation set is initiated with the values of the properties available in the message being transferred When set to no, correlation set validates the value of the property available in the message


When the value is 'in', it means that the correlation property is set/validated on the incoming message When the value is 'out', it means that the correlation property is set/validated on the message going out of BPEL In case of 'in-out', the property will be set/validated on both incoming & outgoing messages

c) Creating Propery Alias:

In the Structure Window of the JDeveloper, right click on the 'Property Aliases' and select 'Create Propery Alias' Select the message type that you want to set to the correlation propery (already created)

Now, correlation design is complete. However, correlation will not be established unless we reference the correlations on the WSDL file of the BPEL process. To do this, import the correlation WSDL file (created under the project) in the BPEL process main WSDL.


Wednesday, May 27, 2015

Official JCA Adapters that are supported by Oracle Service Bus 11.1.1.6

Technology Adapters
  1. Custom JCA adapters
  2. Oracle JCA Adapter for AQ
  3. Oracle JCA Adapter for Database
  4. Oracle JCA Adapter for Files/FTP
  5. Oracle JCA Adapter for Sockets
  6. Oracle BAM Adapter (Business Activity Monitoring)
Application Adapters
  1. Oracle Adapter for Oracle Applications.
  2. PeopleSoft (Oracle Application Adapters 10g)
  3. SAP R/3 (Oracle Application Adapters 10g)
  4. Siebel (Oracle Application Adapters 10g)
  5. J.D. Edwards (Oracle Application Adapters 10g)

Friday, May 22, 2015

Understand the Dehydration Process in Oracle SOA BPEL

Lets discuss how the dehydration process works in BPEL to provided reliability (non message lost) amongst others benefits. The dehydration point affect the transaction boundaries of your SOA composite.

What is a BPEL dehydration process ?

BPEL dehydration process is the action from the BPEL engine to compress and store the BPEL instances into the database. The incoming messages are stored in the database for processing later by worker threads.

  • Storing the current status of the BPEL process(i.e. long running process, asynchronous process) into the database tables is known as dehydration
  • SOA_INFRA schema is the dehydration store which contains tables to hold the meta data of the process.

Why do we need dehydration point in BPEL process ?
  • Long running process or processes waiting for response consumes memory and CPU
  • While waiting for the response the bpel engine can store the process, thus freeing up server resources.
  • To increase both Reliability and Scalability of the BPEL process.
  • You can also use it to support clustering and failover.
  • Over the life cycle of the BPEL instance, the instance with the current state of execution may be saved in database.

Note: BPEL Activity is dehydrated immediately after execution and recorded in the dehydration store. It provides better failover protection, but may impact performance if the BPEL process accesses the dehydration store frequently.


Synchronous Process
  • Process gets dehydrated only at the end of the process.
  • Using Dehydrate activity we can explicitly dehydrate process state if required.

Asynchronous Process
  • Automatically dehydrated the process based on the activities used.
When dehydration occurs ?

The dehydration points occurs:

  1. When the activities are used : (not just after, depends on BPEL Engine)
    • a mid-receive activities(without create instance). Please not that the first receive activity will not automatically dehydrate the BPEL process. This depends on the pattern used and on the specific BPEL properties optimization.
    • Pick (onMessage & onAlarm) activity
    • just before wait activity (depends on the duration)
    • Dehydrate(11g) / Checkpoint(10g)
    • Commit(Java embedded)
    • a (implicit) transaction is committed

    That is where an existing BPEL instance must wait for an event, which can be either a timer expiration or message arrival. When the event occurs (the alarm expires or the message arrives), the instance is loaded from the dehydration store and execution is resumed. This type of dehydration occurs only in durable processes, which have mid-process breakpoint activities. A transient process does not have any mid process breakpoint activities.

  2. When calling a non-idempotent idempotent=false service or Partner Link

    When Oracle BPEL Server recovers after a crash, it retries the activities in the process instance. However, it should only retry the idempotent activities. Therefore, when Oracle BPEL Server encounters a non-idempotent activity, it dehydrates it. This enables Oracle BPEL Server to memorize that this activity was performed once and is not performed again when Oracle BPEL Server recovers from a crash.

    Idempotent activities are those activities where the result is the same irrespective of no. of times you execute the process.

    Repeated invocations have the same effect as one invocation.
    E.g. Read only services, Receive activity

  3. When RequiresNew BPEL transaction is completed or When the BPEL instance finishes

    At the end of the BPEL process, Oracle BPEL Server saves the process instance to the dehydration store, unless you explicitly configure it not to do so. This happens to both durable and transient processes.

    Note: A BPEL invoke activity is by default (true) an idempotent activity, meaning that the BPEL process does not dehydrate instances immediately after invoke activities. Therefore, if idempotent is set to true and Oracle BPEL Server fails right after an invoke activity executes, Oracle BPEL Server performs the invoke again after restarting. This is because no record exists that the invoke activity has executed. This property is applicable to both durable and transient processes. If idempotent is set to false, the invoke activity is dehydrated immediately after execution and recorded in the dehydration store. If Oracle BPEL Server then fails and is restarted, the invoke activity is not repeated, because Oracle BPEL Process Manager sees that the invoke already executed.


Types of BPEL Process

When and how dehydration occurs differ based on process types. Based on the dehydration we can categorize process in to 2 categories

  1. Transient Process: Oracle BPEL server dehydrates the process instance only at the end of the process. If server crashes in middle of the running process instance, the instances will not be visible in EM
  2. Durable Process: Oracle BPEL Server dehydrates the process instance in-flight at all midprocess breakpoint and non-idempotent activities, plus the end of the process. When the server crashes, this process instance appears in Oracle BPEL Control up to the last dehydration point (breakpoint activity) once the server restarts. If the server crashes before the process instance reaches the first midprocess breakpoint activity, the instance is not visible in Oracle BPEL Control after the server restarts.

Important Notes:

  1. Remember that theses dehydration statement must be avoided in synchronous BPEL process.
  2. Idempotence is a mathematical term that basically means that calling a function multiple times doesn’t change the result for example f(f(x))=f(x).
  3. What does it mean for messaging service system ? If a service receives the same message again, it should be able to handle it without changing the state of the system. For example; in a bank scenario you wouldn’t want that withdraw message to be processed more than once !
  4. An idempotent activity in BPEL (for example, an assign activity or an invoke activity) is an activity that can be retried
  5. To ensure data consistency, the dehydration database is done using the same transaction context in which the BPEL process is executed. However, BPEL engine use a separate transaction context for the audit logging information, which aids (a lot) for debugging failed instance.

Skipping dehydration
  • Skipping dehydration will increase performance with a cost of auditing.
  • By Default, all BPEL processes are dehydrated regardless of whether they are Synchronous or Asynchronous process.
  • For Synchronous processes that do not need to be durable, you can turn off the dehydration mechanism by setting the following properties at process or engine level:
    • Set inMemoryOptimization to true.
    • Set completionPersistPolicy property to faulted or Off.
  • Asynchronous process invocation messages are always saved to the dehydration store.
  • Durable process are always dehydrated regardless of the settings of the persistence properties.

Dehydration Tables
  1. Cube_Instance: Stores the information about the composite instance that gets created.
  2. Cube_scope: Stores information about the scopes and variables declared and used.
  3. DLV_Message: All the incoming payload details are stored.
  4. Invoke_Message: All the outgoing message payload details are stored.
  5. Audit_Trail: Used to store information of the xml that is rendered in EM console.

Performance Recommendations:

Engine dispatch messages are generated whenever an activity must be processed asynchronously by the BPEL engine. If the majority of processed deployed on the BPEL server are durable with a large number of dehydration points (mid-process receive, onMessage, onAlarm, wait), greater performance may be achieved by increasing the number of engine threads.


Thursday, May 21, 2015

Transient vs. Durable Processes in Oracle BPEL

As a general practice, it is better to design your BPEL processes as transient instead of durable if performance is a concern. Note that this may not always be possible due to the nature of your process, but keep the following points in mind.

The dehydration store is used to maintain long-running asynchronous BPEL instances state information as they wait for asynchronous callbacks. This ensures the reliability of these processes in the event of server or network loss.

Oracle BPEL Process Manager supports two types of processes; Transient and Durable.

Transient Processes

Transient processes do not incur dehydration during their process execution. If an executing process experiences an unhandled fault or the server crashes, instances of a transient process do not leave a trace in the system. Thus, these instances cannot be saved in-flight regardless if they complete normally or abnormally. Transient processes are typically short-lived, request-response style processes. Synchronous processes are examples of transient processes.

Durable Processes

Durable processes incur one or more dehydration points in the database during execution. Dehydration is triggered by one of the following activities:

  • Receive activity
  • OnMessage branch in a pick activity
  • OnAlarm branch in a pick activity
  • Wait activity
  • Reply activity
  • checkPoint() within a bpelx:exec activity

Durable processes are typically long-living and initiated through a one-way invocation. Because of out-of-memory and system downtime issues, durable processes cannot be memory-optimized.

What should you do?

  • If the design of the process allows it, design your BPEL processes as short-lived, synchronous transactions.
  • If the design of the process allows it, avoid the activities listed above.

Any time your process is dehydrated to the dehydration store, this naturally impacts the performance of the process, and becomes a concern particularly in high volume environments.

Wednesday, May 20, 2015

Oracle SOA Suite 11g Interview Questions - Part 2

Here are few more interview questions

What is a web service?

A web service is any piece of software that makes itself available over the internet and uses a standardized XML messaging system. XML is used to encode all communications to a web service. For example, a client invokes a web service by sending an XML message, then waits for a corresponding XML response. As all communication is in XML, web services are not tied to any one operating system or programming language--Java can talk with Perl; Windows applications can talk with Unix applications.

Any Web Service that:

  • Is available over the Internet or private (intranet) networks
  • Uses a standardized XML messaging system
  • Is not tied to any one operating system or programming language
  • Is self-describing via a common XML grammar
  • Is discoverable via a simple find mechanism


What is Difference between mediator and OSB?

What is a soap message?

A SOAP message is an ordinary XML document containing the following elements −

  • Envelope − Defines the start and the end of the message. It is a mandatory element.
  • Header − Contains any optional attributes of the message used in processing the message, either at an intermediary point or at the ultimate end-point. It is an optional element.
  • Body − Contains the XML data comprising the message being sent. It is a mandatory element.
  • Fault − An optional Fault element that provides information about errors that occur while processing the message.
All these elements are declared in the default namespace for the SOAP envelope − http://www.w3.org/2001/12/soap-envelope and the default namespace for SOAP encoding and data types is − http://www.w3.org/2001/12/soap-encoding

Let’s suppose,I have pushed one message in to Queue and before consuming it my server went down, so what will you do, to not loose the data?

What is debatching in case of file adapter?

What is Polling? How many ways we can do polling with DB Adapter?

What are the components that are there in 11g not present in 10g

Difference between DMV and XREF

Domain-Value Maps enable mapping of vocabulary in one domain to another, which is useful when different domains represent the same data in different ways.

Applications that you want to integrate often use different vocabulary to represent the same information. For example, one domain might represent a city with a long name (Boston), whereas another domain may represent a city with a short name (BO).

In such cases, you can use a Domain-Value Map to directly map values between multiple domains. A direct mapping of values between two or more domains is also known as Point-to-Point mapping.

Each Domain-Value Map typically holds a specific category of mappings among multiple applications. For example, one Domain-Value Map might hold mappings for city codes and another might hold mappings for state codes ... Continue reading....

If I have huge size file(some gbs) how to process?

What is XSLT 2.0?

What is the conecpt of For-each group in transformation?

What is MDS? How do you update MDS? Can we update through jdev

Do you have knowledge on Jms concepts? What is the difference between Queue and Topic

In queues, one message can be consumed by only one client. But in the topics, one message can be consumed by many clients. Both are separate domains in MOM.

Queue represent Point-To-Point domain and Topic represent Pub/Sub domain

A point-to-point (PTP) product or application is built around the concept of message queues, senders, and receivers. Each message is addressed to a specific queue, and receiving clients extract messages from the queue(s) established to hold their messages. Queues retain all messages sent to them until the messages are consumed or until the messages expire.

In a publish/subscribe (pub/sub) product or application, clients address messages to a topic. Publishers and subscribers are generally anonymous and may dynamically publish or subscribe to the content hierarchy. The system takes care of distributing the messages arriving from a topic's multiple publishers to its multiple subscribers. Topics retain messages only as long as it takes to distribute them to current subscribers.

Can we configure 2 applications listening to same queue with same configuration? If so what decides which one will pick the message

What is durable process?

Durable processes are typically long-living and initiated through a one-way invocation. Because of out-of-memory and system downtime issues, durable processes cannot be memory-optimized.

Durable processes incur one or more dehydration points in the database during execution. Continue reading.....

Which are the activities for dehydration? What are they called

Does Synchronous process dehydrate?

While a process which reads a large size file is running, server crashes. When it starts again from where will the execution be?

Difference between EBO and EBM?

How to customized EBO’s?

How do you access file placed in mds?

What is WSDL? Explain its components?

What kind of WSDL do you place in MDS abstract/concrete? Why do you place abstract?

Can we have a Webservice without WSDL?

How to invoke Restful services?

Can we have more than one port type? If so which case

If a WSDL has multiple operations, what decides which operation to choose?

What is file min age in file adapter?

What is fault policy?

If a db adapter has a retry of 5 and there is a fault policy associated which has a retry of 4, which one will get executed?

What is Concept of mediator? What is message sequencing?

Concepts of human task and business rules?

What are correlation sets? And how to implement it?

How to create schema for a file csv separated by special character ( special characters not on the keyboard)?

How do you create the AIA interfaces? Do you follow the standards? Do you know about workbench?

Assume a situation with multiple nodes in the server, all the nodes have an instance of file picking process. Now when the file is placed all the instance which are polling will try to pick the file. How do you ensure that the file is picked only by one of the node?

In the transformation activity can we have multiple schemas(target)?

What is difference between JMS,MQ and AQ Queues?

What are the type of wsdl?

Rpc and Document Literal type wsdl.


How to secure your composite or web-service?

What is Two phase and one phase commit?

The 2 phase commit protocol referred to as XA(eXtended Architecture)provides ACID-like properties for global transaction processing.

2 phase commit protocol is an atomic commitment protocol for distributed systems. This protocol as its name implies consists of two phases. The first one is commit-request phase in which transaction manager coordinates all of the transaction resources to commit or abort. In the commit-phase, transaction manager decides to finalize operation by committing or aborting according to the votes of the each transaction resource.

XA transactions need a global transaction id and local transaction id(xid) for each XA resource. Each XA Resource is enlisted to XA Manager by start(xid) method. This method tells that XA Resource is being involved in the transaction(be ready for operations). After that, the first phase of the 2PC protocol is realized by calling prepare(xid) method. This method requests OK or ABORT vote from XA Resource. After receiving vote from each of XA Resource, XA Manager decides to execute a commit(xid) operation if all XA Resources send OK or decides to execute a rollback(xid) if an XA Resource sends ABORT. Finally, the end(xid) method is called for each of XA Resource telling that the transaction is completed.

What is XA and NON-XA datasources?

Concepts of Transactions?(async.persist,async.cache,sync)?

What is Target and Default Namespace in any schema?

How to validate an Input Message?

What is Dehydration State?

What is data source rollback?(XA or NON-XA)

What is Persistence Store? Which one is default persistence store?

How to invoke Custom Fault?

How to ensure guaranteed delivery of messages?

What is Connection Factory and Connection pool?

If a Sync service called an Async Service, will it wait for the response from Async Service?

No it will not wait. port concept.

How to validate an Input Message? What is the difference between verification and validation?

What is dehydration?

What is Database or datasource Rollback?

What is JNDI ? What is the use of this? How to configure it?

The Java Naming and Directory InterfaceTM (JNDI) is an application programming interface (API) that provides naming and directory functionality to applications written using the JavaTM programming language. It is defined to be independent of any specific directory service implementation.

Usage:

With this API, you can access many types of data, like objects, devices, files of naming and directory services, eg. it is used by EJB to find remote objects. JNDI is designed to provide a common interface to access existing services like DNS, NDS, LDAP, CORBA and RMI.

The most common use case is to set up a database connection pool on a Java EE application server. Any application that's deployed on that server can gain access to the connections they need using the JNDI name "java:comp/env/FooBarPool" without having to know the details about the connection.

This has several advantages:

  • If you have a deployment sequence where apps move from devl->int->test->prod environments, you can use the same JNDI name in each environment and hide the actual database being used. Applications don't have to change as they migrate between environments. You can minimize the number of folks who need to know the credentials for accessing a production database. Only the Java EE app server needs to know if you use JNDI.
  • One very simple advantage is that it acts as a placeholder for your connection details. When the composite is deployed to the WLS server, this JNDI (the same name is specified in the composite) is used to point to the correct DB, FTP etc from WLS. You can change it directly in the WLS without needing to modify the code and hence additionally this provides a centralized way of managing the resources.


JNDI Name: The JNDI name to use for the JMS connection. This is probably the most common source of error. This is the JNDI name of the JMS adapter’s connection pool created in the WebLogic Server and which points to the connection factory. JDeveloper does not verify the value entered here. If you enter a wrong value, the JMS adapter won’t find the queue and you will get an error message at RUNTIME, which is very difficult to trace.

If in a DB adapter you are giving wrong JNDI name so it will be error out compile time or run time?

Ans: Run time

If a consumer is consuming a meesage and want to write in a file. Before writing some error happen? What will happen to that message?

What is difference Between File and FTP adapter?

File adapter is basically used to read,write files locally on your server. And FTP adapter is basically used to read and write files from any network.


How to start a BPEL Process when email received?

When to use Opaque schema?


Oracle SOA - DVM & XREF

Domain-Value Maps (DVM) and Cross References (XREFs)

Requirement

When an object flows from one system to another system, both using their own entities to represent the same type of object, transformation is required to map the entity from one system to another. For example, when a new customer is created in a SAP application, you might want to create a new entry for the same customer in your Oracle E-Business Suite application named as EBS.

or A Simple scenario, Applications that we want to integrate often use different vocabulary to represent the same information. For example, one domain might represent a city with a long name (Boston), whereas another domain may represent a city with a short name (BO).

So the required functionality is that these two entities should be mapped from different domains. Even if in future, another domain gets added, again this is the requirement to represent that entity in some common entity format.

Oracle SOA (ESB) offers two solutions for such problems:

  • Domain-Value Maps (DVM)
  • Cross References (XREFs)

1. Domain-Value Maps (DVM)

Domain-Value Maps enable mapping of vocabulary in one domain to another, which is useful when different domains represent the same data in different ways.

A domain-value map can be created and populated using Oracle ESB Control. It can than be used with the Oracle JDeveloper Mapper tool while developing XSLT data transformations during design time. Then, at runtime the lookups for application-specific values occur. It uses XML file to store the mapping values.

For example, suppose we want to use a domain-value map to perform a runtime lookup to convert source id to the target id. Using Oracle Service Bus, the source id is passed and the target id returned using lookup function in transformation.

1.1 Architecture

Oracle ESB DVM uses XML to store the mapping values. The response time of the first call of lookup-dvm is high, as internal cache manager loads the XML document into the memory. If the data is frequently changing than the response time increases, because internal cache manager has to reload it again and again.
The search algorithm used by lookup-dvm is sequential search. If the value to be found exists in the last row of dvm file, than the response time increases. The DVM functionality of Oracle ESB is memory intensive if it has large set of mapping values.
Each Domain-Value Map typically holds a specific category of mappings among multiple applications. For example, one Domain-Value Map might hold mappings for city codes and another might hold mappings for state codes

DVM is best when having small set of mapping values. when it is small set of values, you can directly map values between multiple domains. A direct mapping of values between two or more domains is also known as Point-to-Point mapping. Internal cache manager increases the performance tremendously in this case, as xml document always resides in runtime memory.

Features of Domain-Value Maps include:

  • Qualifier Support: Allows you to validate a mapping using additional information
  • Qualifier Order Support: Is used to find the best match during lookup at run time
  • One-to-Many Mapping Support: Allows you to map one value to multiple values in a Domain-Value Map

1.2 How to Use DVMs

Creating and populating DVM – There are two ways of creating and populating data value maps in Oracle ESB. Either to manually edit the dvm using Oracle ESB Console or import values using import command provided in Oracle ESB console. DVM does not allow to enter two rows having same set of values. Manual edit functionality should be used, when we don’t have large set of mapping values and which are frequently changing. Importing dvm files is the other options, provided the dvm files have specific format.

Looking up – To lookup the values we have lookup-dvm function. This function can be used in both Oracle ESB and Oracle BPEL through transformation. If the lookup target domain has multiple values for specific source domain value then it returns the first value, as this search is sequential. If lookup fails to find the target domain value, then it returns the default value passed in lookup-dvm function.

2. Cross References (XREFs)

Using cross references, you can dynamically populate, maintain, and map values for equivalent entities created by different applications. When creating, updating, and deleting objects in one application, there may be a need to propagate the changes to other applications. For example, when a new customer is created in a SAP application, you may need to create a new entry for the same customer in your Oracle E-Business Suite application (EBS).

However, since the applications being integrated are using different entities and IDs to represent the same information you need to cross reference these entities Cross references are stored in table structures defined by an .xref file that you can create by using JDeveloper.

To use the cross reference table defined by an .xref file you need XSD structures that defined the data to be cross referenced, the data itself, and a composite application with either a Mediator or BPEL component containing an XSL transformation that executes the appropriate XREF functions to populate, update, or look up cross references. When you execute a function to populate a cross reference table, the data is stored in the XREF_DATA table in a database referenced by the jdbc/xref JNDI name.

A cross reference table consists of following two parts, metadata and the actual data. The metadata is created by using the cross reference command line utilities and is stored in the repository as an XML file. The actual data is stored in the database.

By default, the XREF_DATA table is created in the SOA_INFRA schema created by the Repository Creation Utility (RCU), which is used to create the Oracle SOA Suite 11g database schemas required before installing Oracle SOA Suite 11g.

Because the cross reference data is persisted in a database it remains available for applications until explicitly deleted, preferably by using the appropriate XREF functions.

2.1 How it works:

This functionality of finding the cross domain mapping uses both xml and database. XML is used to store the metadata of the xref table and actual data get stored in database. Creation of xref tables is done using xreftool command line utility. Default datasource used by cross reference has jndi name jdbc/xref. Other datasources can be used are jdbc/esb and jdbc/BPELServerDataSource. To start working with cross reference, it is required to create a table in any of the above datasources. Following sql query is used to create XREF_DATA table -

CREATE TABLE XREF_DATA ( XREF_TABLE_NAME VARCHAR2(4000) NOT NULL, XREF_COLUMN_NAME VARCHAR2(4000) NOT NULL, ROW_NUMBER VARCHAR2(48) NOT NULL, VALUE VARCHAR2(4000) NOT NULL, IS_DELETED VARCHAR2(1) NOT NULL, LAST_MODIFIED VARCHAR2(100) NOT NULL, LAST_ACCESSED VARCHAR2(100) NOT NULL );

So here for each lookup, a jdbc call is made to select target domain value. So this type of referencing is not memory intensive. This proved to be best if we have large set of mapping values, and is dynamic. The performance is totally depends on the type and the location of the datasource. It also supports 1:M mapping of domain values.

2.2 How to use :

XPath functions provided in Oracle BPEL can be used in transformation and assign activity. These functions have better exception handling capability. To import and export the cross reference tables, command line utilities such as xrefexport and xrefimport are provided.

  1. Create Xref
    The initial step is create two End System entries, which appear as a XML elements in a XREF source file. Each End System represents a collection of unique reference values for a given system. The actual cross reference values are created dynamically at run-time
  2. Add or Delete new End systems
  3. Populating Cross Reference Tables
    Drag the populateXRefRow (or populateXRefRow1M) function into the middle column of the XSLT :
    • The xrefLocation, specifies the directory and name of the .xref file defining the cross reference structure. Click the Browse (magnifying glass) icon to locate the file.
    • The referenceColumnName, which is the primary End System name
    • The referenceValue, which is the unique ID value in the primary End System
    • The columnName, which is the End System name being cross referenced
    • The value, which is the unique ID value in the End System being cross referenced
    • The mode, which can be the value ADD, UPDATE, or LINK (in uppercase). ADD creates a new row, UPDATE modifies an existing row.
  4. Looking up - by using lookup xref
  5. Delete - by using markforDelete

Using Spring Context in Oracle SOA 11g

Use case :
Use spring in Bpel to read,write huge files. Since default File Adapter works in Bpel memory this would be good for heavy lifting. I know we have options of java embedd and EJB, but since springs are considered as best java option I would like to explore this option.

Steps:
1. Create a SOA Project , Composite.

2. Create a java interface that has method for reading/writing files : IFileUtils.java method readWriteFile(String filename)

3. Create a java class that implements the IFileUtils interface for reading/writing files : FileUtils.java

4. Now if you dont see spring option in composite , update the Jdeveloper with "Spring & Oracle WebLogic SCA" using help->updates.

5. Create a Bpel process that will invoke the spring.

6. Drop a Spring context in composite :

Name : FileUtilsSpring
Create a new context : FileUtilitySpring.

7. Open FileUtilitySpring.xml and add below lines of code inside the bean tag aftre the below comment


The file should look like :











8. Now you should be able to wire the Bpel and spring component. It will generate the WSDL and load java classes, Composite should look like :








9. Add invoke to Bpel to add the spring context, assign required values

10. Deploy the code and Test in EM

Oracle SOA Interview Questions


1) What is SOA?
Service Oriented Architecture (SOA) is used to develop Enterprise applications by using a collection of services which communicates each other. Service-Oriented Architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services.

2) Principles of SOA?

  • Loose coupling
  • Re-usability
  • Interoperability
  • Flexible

3) What is the difference between 10g and 11g?

SCA architecture was followed in 11g and not in 10g
  • In 11g you can put all your project SOA components in composite.xml file and deploy as a single deployment unit to single server, where in 10g you have to deploy each component to the respective server (i.e. ESB to ESB server, BPEL to BPEL Server)
  • Basically all the SOA components like BPEL, ESB (Called Mediator in 11g), & OWSM are brought into one place in 11g using SCA composite concept.
  • The major difference between 10g & 11g would be the app server container. 10g by default runs onOC4J while 11g runs on Web logic Server.
  • In 10g every BPEL is a separate project, but in 11g several components can make 1 project as SCA.
  • In 10g consoles are separate for BPEL and ESB, but in 11g Enterprise Manager contains all.
  • In 10g BAM and business rules are outside SOA Suite, but in 11g they are in SOA Suite.

4) Is Oracle SOA same as Oracle Fusion Middleware?

No because SOA is one of the parts in Fusion middleware and SOA behaves like user interface whereas Fusion is big platform

5) What is SCA?

Service Component Architecture (SCA) provides a programming model for building applications and systems based on a Service Oriented Architecture. SCA is a model that aims to encompass a wide range of technologies for service components and for the access methods which are used to connect them.

6) What is the SOA Suite 11g Components?

  1. Oracle Adapters
  2. Oracle Mediator
  3. Business Events and Events Delivery Network
  4. Oracle Business Rules
  5. Human Workflow
  6. Oracle Business Activity Monitoring
  7. Oracle Enterprise Manager

7) What is choreography? How does it differ from orchestration?

In choreography there is no business process to control the integration between the systems; each system will directly integrate with one another in sequence where as in Orchestration there is a business process which controls all the services (source/Target) which is part of the integration.

8) What are the different message exchange patterns in SOA?

  • Synchronous
  • Asynchronous Fire and Forget
  • Asynchronous Delayed Response.

9) In how many ways can a process be deployed?

  • Using JDeveloper
  • Through Enterprise Manger Console
  • Through Weblogic Scripts.

10) What are dspMaxThread and a recieverThread properties? Why are they important?

ReceiverThreads property specifies the maximum number of MDBs that process aysc across all domains. Whereas the dspMaxThreads are the maximum number of MDBs that process asy and threads that operate across a domain. So, we need to ensure that the dspMaxThreads value is !> ReceiverThreads.

11) How does a async request run in the backend?

The sequence of events involved in the delivery of invoke messages is as follows:

  • The client posts the message to the delivery service.
  • The delivery service saves the invocation message to the invoke_message table.The initial state of the message is 0 (undelivered).
  • The delivery service schedules a dispatcher message to process the invocation message asynchronously.
  • The dispatcher message is delivered to the dispatcher through the afterCompletion() call. Therefore, the message is not delivered if the JTA transaction fails.
  • The dispatcher sends the JMS message to the queue. Places a very short JMS message in the in-memory queue (jms/collaxa/BPELWorkerQueue) in OC4J JMS. The small JMS message triggers the WorkerBean in the downstream step.
  • This message is then picked up by a WorkerBean MDB, which requests the dispatcher for work to execute. If the number of WorkerBean MDBs currently processing activities for the domain is sufficient, the dispatcher module may decide not to request another MDB.
  • MDB fetches the invocation message from the dispatcher.
  • MDB passes the invocation message to Oracle BPEL Server, which updates the invocation message state to 1 (delivered), creates the instance, and executes the activities in the flow until a breakpoint activity is reached.

12) How to increase the transaction timeouts in SOA?

For the transaction timeout needs to be increased, all the below settings timeout value needs to be changed to the expected Timeout value.

  • JTA
  • Engine Bean
  • Delivery Bean

13) Is it possible to use MS SQL Server as dehydration store with SOA Suite?

Yes it is possible. To automatically maintain long-running asynchronous processes and their current state information in a database while they wait for asynchronous callbacks, you use a database as a dehydration store.Storing the process in a database preserves the process and prevents any loss of state or reliability if a system shuts down or a network problem occurs. This feature increases both BPEL process reliability and scalability. You can also use it to support clustering and failover.


14) What is SOA governance? What are its functions?

Service-Oriented Architecture (SOA) governance is a concept used for activities related to exercising control over services in an SOA. Some key activities that are often mentioned as being part of SOA governance are:
Managing the portfolio of services: This includes planning development of new services and updating current services.Managing the service lifecycle: This is meant to ensure that updates of services do not disturb current services to the consumers.
Using policies to restrict behavior: Consistency of services can be ensured by having the rules applied to all the created services.
Monitoring performance of services: The consequences of service downtime or underperformance can be severe because of service composition. Therefore action can be taken instantly when a problem occurs by monitoring service performance and availability.

15) What is end point virtualization?

Generally a service bus is used for endpoint virtualization and in 11g stack;
Oracle Service Bus (OSB) is the primary service bus. In exposed proxy's message flow, it can route the request to any of your environment's actual (physical) service on the basis of whatever logic.
Mediator can also be used to expose the service and in mediator routing rule, it can be routed to actual service.

16) What are DVM's and how are they helpful in SOA?

DVM-Domain Value Map are static mappings between a source and target system which can be used in transformations. The value can be changed via SOA composer.

17) What is the difference between XREF and DVM?

XREF- It is dynamic since the values to the XREF can be populated dynamically and it is stored in XREF_DATA table in SOA Dehydration store.
DVM- Domain Value Map is static mappings between a source and target system which can be used in transformations.

18) What is Dehydration store?

Dehydration store is the database where the instances get stored when it gets dehydrated by the process on the occurrence of non-idempotent activities and also stores the information on the long running processes.

19) What is Decision service?

Oracle SOA Suite provides support for Decision components that support Oracle Business Rules. A Decision component is a mechanism for publishing rules and rulesets as a reusable service that can be invoked from multiple business processes.These rules can be changed without redeploying the code.

20) Why we use BPEL and OSB?

OSB is the light-weight service bus wherever there is not much business logic involves and there is need to just get the message routed between the systems OSB is used where as when there is more business logic involves in the process,then BPEL will be used.

21) What is MDS?

MDS –Metadata Store Wsdl and Schemas to be used in the process can be published to the MDS and get it used in the code by referring the artifacts from the MDS
Advantages:

  • JAR (Deployment unit) size will be reduced.

  • Duplication of the artifacts can be avoided between the services.


22) What is a XA datasource? How it differs from a non-XA datasource?

An XA transaction involves a coordinating transaction manager, with one or more databases (or other resources, like JMS) all involved in a single global transaction. Non-XA transactions have no transaction coordinator, and a single resource is doing all its transaction work itself (this is sometimes called local transactions).

23) How can we secure our web services using Oracle SOA Suite?

When accessing the services should be restricted to the group,then service should be secured via WSM (Web service Manager).

24) How to deploy an XSL file without deployment of BPEL Process?

We will directly deploy the XSLT, options: -

  • Using ANT script by file replacement in TMP folder.

  • By creating a folder in BPEL PM installation folder and specifying its location in our BPEL code with http call and replacing our xslt to that location.



25) What is HA File and FTP Adapters?

In the clustered environment,File and FTP adapters should be used as HA(High-Availability) Inbound:It is controlled by Control Files and avoids the race between the manages servers in reading the files where the reference of the files read by the managed servers will be maintained in the control directory. Outbound:It is controlled by DB Mutex table exist in the SOA dehydration store and this avoids duplicated been written to the same file when all the managed servers in the clusters process the same messages.

26) What is singleton Property in SOA?

In the clustered environment when the processing of the message should happen via only one SOA managed server, then the property singleton needs to be defined at the adapter level.

27) What is a pick activity? Can I have a pick activity with no onMessage branch?

Pick activity picks the messages from service (Source) which has multiple operations or the BPEL process needs to receive the messages from multiple source system. Pick activity should have at least on Message branch.

28) What is a flow activity? What is a flowN activity and how does it leverages the flow activity?

Flow activity is used, when parallel execution of the flow is needed and to use this property “non blocking invoke should be set as true “at the partner link level and no. of execution of parallel flow is defined and static. Where as in Flown the no. of execution of parallel flow is not static and it is determined during run time.

29) What do you mean by non-idempotent activity? Which all activities are non-idempotent by default?

Activities like Pick, Wait, receive, reply and checkpoint() are called non-Idempotent activity and during the execution of the process whenever these activities are encountered then it gets dehydrated to the dehydration store.

30) How can we embed or use a java code in BPEL?

Using JAVA embedding activity in BPEL,Java code can be embedded in BPEL and can be used.

31) How does pick activity differ from a receive activity?

Pick activity can act as a multiple recieve activity in some business scenarios.If we have two inbound operations and both can trigger the bpel process then we will go with pick activity as we can’t have two recieve activity with create Instance box checked.

32) How can we make a partner link dynamic?

If we have to send the request to different service which has the same wsdl then dynamic partner link will be used and using addressing schema we can set the endpoint dynamic to send the request to the desired service.

33) What is a nonBlockingAll property?

Non- blocking invoke is used when Parallel flow needs to be executed where new thread will be created for each invoke a activity and which will execute simultaneously.

34) What is getPreference property? How do we set it and what advantage it provides?

Hard coding is not a good practice, so to avoid hard coding preference variable can be used and the value of the preference variable is accessed using getPreference().The preference variable value can be changed without re-deploying the code via em console MBean property.

35) How can we improve the performance of an XSL file?

By avoiding use of various if statements and using choose, and by using for-each group in place of for-each.

36) How do we handle transactions in BPEL?

Property needs to be defined to start the new transaction/to continue with the same transactions Property Name: Transaction and if this has value as required then the BPEL process will be continued in the same transaction where as if the value is defined as requiresnew then it will start the new transaction.

37) What are transient and durable BPEL processes?

Durable: It is long running process and initiated through a one-way invocation and do incur one or more dehydration points in the database during execution Ex: Asynchronous

Transient: It is short-lived process, request-response style processes and do not incur dehydration during their process execution Ex: Synchronous.

38) When u will go for Sync process?

Whenever the services returns the response in few seconds, it is recommended to go for synchronous BPEL process if not the BPEL process should be Asynchronous the reason is calling application can’t proceed further in case of synchronous process.

39) What is a syncFileRead operation? Is a inbound or a outbound operation? Can my process begin with syncFileRead operation?

When file has to be read in the mid of the BPEL process, then we will use syncFileRead Operation, means some process should initiate the file read process and it is an outbound operation and process can’t begin with Sync File read.

40) Can we use a File Adapter to get a file without reading its content?

Yes, by selecting the Do not read file content check box in the JDeveloper wizard while configuring the "Read operation."

41) How to increase performance increase in bpel (Db Adapter/file adapter)?

We can increase the performance by writing indexes and sequences. (Or) Go to application server --- >Configurations ----- > Change Xml file

42) Explain error handling in BPEL and what is a error handling framework? How does a error handling framework better than simple error handling in BPEL?

EHF –Whenever any error thrown by the BPEL process/Mediator then EHF will check whether exist in Fault-Bindings.xml files and if so then the action in the Fault-Policy.xml file will be taken and if the action is not found then the fault will the thrown and it will be handled in the catch block.

43) How do we resubmit a faulted process?

Scenario A: The BPEL code uses a fault-policy and a fault is handled using the “ora-human-intervention” activity, then the fault is marked as Recoverable and the instance state is set to “Running”.
Scenario B: The BPEL code uses a fault-policy and a fault is caught and re-thrown using the “ora-rethrow-fault” action, then the fault is marked as Recoverable and the instance state is set to “Faulted”; provided the fault is a recoverable one (like URL was not available).

44) Predefined errors in BPEL?

  • Custom errors
  • Timed out errors
  • BPM errors
  • Validation Errors


45) What is a throw activity? What it is ?

Throw activity will explicitly throw the fault and this fault will get caught by the catch block and the corresponding actions will get executed.

46) What is Web service?

Web services are application components, which are self-contained and self-describing and provide services based on the open protocol communication (i.e. SOAP UI, HTTP over the net).

47) Difference between URI and URL?

A URI is an identifier for some resource, but a URL gives you specific information as to obtain that resource. A URI is a URL and as one commenter pointed out, it is now considered incorrect to use URL when describing applications. Generally, if the URL describes both the location and name of a resource, the term to use is URI. Since this is generally the case most of us encounter every day, URI is the correct term.

48) What is Mediator?

The Mediator is in charge of interconnecting, within an SOA composite application, components that expose different interfaces. In addition, the Mediator can perform duties such as filtering and making routing decisions. The composite editor in JDeveloper gives you the flexibility to define the interface now, to choose an existing interface, or to define the interface later as you wire components to the Mediator. Transforming data from one representation to another is, along with routing, one of the key functions of the Mediator.

49) Difference between ESB and Mediator?

In 10g for routing, separate router need to keep along with ESB for routing and filter expressions. Where as in 11g mediator contains routing rules and filter expressions itself.

50) What is the difference between concrete and abstract wsdl?

Concrete: Besides the information about how to communicate to the web service, it the information on where the service exist. It has Bindings (Protocol the message should be sent) and Services(has endpoint for each bindings) .
Abstract: It has information about how to communicate to the web service like types (Schema), Message (input and output messages service accepts) ,Operations (operation that can be performed on this service) and port Type.

51) What is SOAP and what are the binding protocols available?

Simple object access protocol and it is a protocol specification for the communication happens between the web services over the network and binding protocol is HTTP.

52) What is the difference between Async and Sync activity on wsdl level?

  • Async wsdl-It has only input messages for the operation and it has 2 operations one for sending the request and other for call back.
  • Sync wsdl-It has 2 messages input and output messages for the wsdl operation.

53) What are the WSDL structure?

Following are the wsdl structure

  • definitions
  • Types
  • Messages
  • Operation
  • Port type
  • Bindings
  • Services
  • Ports


54) What is the significance of target Namespace in a wsdl?

It is the one which uniquely identifies the WSDL and when the WSDL is used it should be identified using its Target Namespace.

55) What is structure of SOAP message?

The structure of a SOAP message: A SOAP message is encoded as an XML document, consisting of an element, which contains an optional element, and a mandatory element. The element, contained within the , is used for reporting errors.
The SOAP envelope-The SOAP is the root element in every SOAP message, and contains two child elements, an optional and a mandatory.
The SOAP header-The SOAP is an optional sub-element of the SOAP envelope, and is used to pass application-related information that is to be processed by SOAP nodes along the message path.
The SOAP body-The SOAP is a mandatory sub-element of the SOAP envelope, which contains information intended for the ultimate recipient of the message.
The SOAP fault-The SOAP is a sub-element of the SOAP body, which is used for reporting errors.

56) Why do we need to have messages in WSDL, aren't operations and types enough to describe the parameters for a web service?

Messages consist of one or more logical parts. Each part is associated with a type from some type system using a message-typing attribute. The set of message-typing attributes is extensible.

  • The element describes the data being exchanged between the Web service providers and consumers. Each Web Service has two messages: input and output.
  • The input describes the parameters for the Web Service and the output describes the return data from the Web Service.
  • Each message contains zero or more parameters, one for each parameter of the Web Service's function.
  • Each parameter associates with a concrete type defined in the container element. So describing the parameters cannot performed by operations and types this is the main need of Messages.

57) What is a inline schema?

Schemas can be included inside of XML file is called Inline Schemas.

58) What is the difference between xsd:import and xsd:include?

The fundamental difference between include and import is that you must use import to refer to declarations or definitions that are in a different target namespace and you must use include to refer to declarations or definitions that are (or will be) in the same target namespace.

59) What is BAM?

Business Activity Monitoring is a tool that is useful in monitoring business services and processes. It actively collects data, applies rules and reports information to users. When something goes wrong in business processes, BAM can be configured to take corrective measures such as emailing administrators/support team.

60) How to send the data to BAM from SOA?

The Oracle BAM Adapter is a Java Connector Architecture (JCA)-compliant adapter which can be used from a Java EE client to send data and events to the Oracle BAM Server. Oracle BAM Adapter is configured in Oracle Weblogic Server Administration Console to provide any of these connection pools. Oracle BAM Adapter provides three mechanisms by which you can send data to Oracle BAM Active Data Cache from an SOA composite application.

61) What are the ways to publish the data to BAM?

There are two ways to publish the data to BAM

  • BAM Adapter.
  • BAM Sensor activity level.

62) What are the roles in BAM?

  • Architect
  • Administrator
  • Active Viewer
  • Active Studio

63) What is forward delay in JMS Queue?

In the clustered environment where JMS queues are used, when for the queues in any one of the Managed server doesn’t have the consumer, once messages reaches the forward delay time it gets moved to the other managed server where consumer is present.

64) What is redelivery limit in JMS Queue?

When the message gets failed to get processed ,then it will be re-tried will the redelivery limit exhausts and once after the redelivery limit the message can b e either moved to the error Queue are it can be discarded.

65) What is timetodeliver in JMS Queue?

When Messages enqueued to the JMS queue, it will be immediately consumed by the JMS Subscribers, if any delay needs to be induced for the message consuming by the Subscribers then timetodelivery needs to set. The JMS message will not be subscribed until timetodelivery exhausts.

66) Difference between JMS Queues and Topics?

Queue-Message will be subscribed by one subscriber.
Topic-Message will be subscribed by more than one subscriber.