In a high-volume environment, it is not easy to go and find a particular composite instance which processed a particular Order Id. We will see in this blog two ways in which we can locate a particular composite instance in Enterprise Manager. To locate a composite instance using wild card search see Wild Card Search post.
Enterprise manager allows instances to be searched based on “Name” field. So, populating “Name” field with Order Id is one way in which we can locate instances. In 11g, setCompositeInstanceTitle did the job. However, in 12c, we need to use setFlowInstanceTitle to set the “Name” field in EM.
Let us create a sample SOA application. Following is a sample Order Schema.
<?xml version="1.0" encoding="windows-1252" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.org" targetNamespace="http://www.example.org" elementFormDefault="qualified"> <xsd:element name="Orders" type="OrdersType"/> <xsd:complexType name="OrdersType"> <xsd:sequence> <xsd:element name="Order" type="OrderType"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="OrderType"> <xsd:sequence> <xsd:element name="OrderId" type="xsd:string"/> <xsd:element name="Orderdate" type="xsd:dateTime" minOccurs="0" /> <xsd:element name="CustId" type="xsd:string"/> <xsd:element name="Lines" type="LinesType" minOccurs="0" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="LinesType"> <xsd:sequence> <xsd:element name="lines" type="linetype" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="linetype"> <xsd:sequence> <xsd:element name="productid" type="xsd:string"/> <xsd:element name="quantity" type="xsd:int"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
Create a SOA Project with a BPEL Component. Select Input as “Orders” element.
Create a dummy string variable in bpel process. This will be used in assignment statement.
Add an “Assign” activity and assign output of setFlowInstanceTitle to dummy string variable. Check “Method not found – SetFlowInstanceTitle” post, if JDeveloper shows warning for setFlowInstanceTitle function.
Deploy the project and run few tests with different order id, customer id as input. Order Id and customer id are the mandatory fields. Instances in EM console should have the value of OrderId in “Name” field.
Click on “Search Icon” and click “Add/Remove filters”. Select “FlowInstance” check box. This will add few more fields based on which search can be carried out.
Search/Locate Instances by giving values of OrderId in “InstanceName” field.
Search results will show the specific composite instance which processed given order id.
Above method of setting the “InstanceName” and searching by “InstanceName” in EM will help in identifying the specific instance.
Apart from finding by Order Id, if we need additional fields based on which instances has to be located (like by Customer Id), we can use “Composite Sensors”. EM Console allows up to 6 Composite sensors to be used as search fields in locating the instances.
Let us see how to create a composite sensor and use that to search instances.
In JDeveloper, right click on “Service Entry Point” and select “Configure Sensors”.
Click plus icon to add a sensor. Provide a Name to the sensor.
In “Expressions”, select “Variables” and select “CustId”.
Redeploy your project. Sensors will be activated only for new instances. So, make few more tests with different order id and customer id. In the “Flow Trace” , composite sensors will be listed in “Composite Sensor Values” tab.
Go to Search options and search by Sensor name and Sensor value. Select “Sensor Name” from the lookup or we can type it in the box. By default “Equal” operator is used. For further option, click on lookup icon. Search results will show specific composite instance or list of composites instances which satisfies the given customer id.
Based on requirement we can create additional composite sensors to locate instances in EM Console. If we have more than one composite sensors in search criteria, logical AND is applied to the condition in locating instances.
Hi
can you let me know the way to search any Instance Name with wild card like %ord% (show all ord after search) .I found that11g we are able to search based on wild card input but in 12c we can search only with full string.
Please help.
Ranjit,
I am not sure wildcard search is allowed in EM console in 11g/12c.
However, in the back end DB, we can connect to SOAINFRA schema and do a wild card search using sql query.
Please see this post http://thoughtsonfusion.com/blogs/soa/finding-instances-using-wildcard-search-on-title-field-in-soainfra-schema/
Update: EDITED on 6th Feb: Wild Card search in EM works in 11g and 12c. Tested with 11.1.1.7.8 and 12.2.1
Hi Krishna,
I have used ora:setCompositeInstanceTitle( “***”) in my BPEL in 12c.Any idea where can I find the column in soa-infra.
Hi Krishna,
Thanks for the nice article. we have used the setFlowInstanceTitle() from javaCallout activity. We have observed a strange behavior, Flow Name is displaying for some composites and not creating for some composites.
Environment : Soa 12c (12.1.3) , Multi Node cluster.
any suggestions to fix this issue?
Hi Kishore
Do you see the values in the backend “sca_flow_instance” table for those composites or do you see any exceptions in the log from java callout?
May be you can try with an assign activity instead of JavaCallout in composites where you see this problem.
Hi Krishna,
Even i have the same issue and i am trying with Assign activity, sometimes able to see name for some instances and not able to see the name for most of the instances.Issue is not consistent.
Could you please help me out on this.
Thanks,
Pradeep
Any idea why Oracle broke this Name column population interface between 11g and 12c? This seemingly random change requires code modification in all existing composites, and I can not see a reason it would have been necessary to break the previous interface. Backward compatibility should be more respected unless there is an architecturally important reason to break it.
Have not tried 12c search yet (because all my Name columns are now blank due to the API change), but the wild-card search on values in the name column in 11g (e.g. ‘%123’) was extremely useful to us (not all our EM user have direct access to the db).
John,
The change is due to the introduction of “Flow Instances” concept .(https://docs.oracle.com/middleware/1213/soasuite/administer/GUID-3A1D4D6E-6925-4049-9BD2-2177348C468F.htm#SOAAG3763)
The wild card search in EM works in 12c (12,2,1) also.
Regards
Krishna
Wild card search is supported in 12c against search field like Instance Name or Composite Instance Name.
Hi. I see that you don’t update your site too often.
I know that writing content is boring and time
consuming. But did you know that there is a tool that allows you to create
new articles using existing content (from article directories
or other websites from your niche)? And it does it very well.
The new articles are high quality and pass the copyscape test.
You should try miftolo’s tools
I have noticed you don’t monetize your blog, don’t
waste your traffic, you can earn additional bucks every month.
You can use the best adsense alternative for any type of website (they approve all websites), for
more info simply search in gooogle: boorfe’s tips monetize your website
Fine way of explaining, and good article to get data regarding my presentation subject matter, which i am going to convey in college.