The document provides step-by-step instructions for creating a custom fault in an Oracle SOA BPEL process. When student marks are input that are less than 0 or greater than 100, a custom "InvalidStudentMarksFault" fault will be thrown. The process defines the fault message in the WSDL, adds fault handling logic, and invokes another process to test catching the custom remote fault. The instructions aim to demonstrate how to define and handle custom faults across multiple services in an SOA composite.
9953330565 Low Rate Call Girls In Rohini Delhi NCR
Getting Started with Oracle SOA Custom Faults
1. Getting Started with Oracle SoA
Oracle SOA Working with Custom Faults Lab#9
Description:
BISP is committed to provide BEST learning material to the beginners
and advance learners. In the same series, we have prepared a complete
end-to end Hands-on Beginner’s Guide for Oracle SoA. The document
focuses on Working with Custom Faults. Join our professional training
program and learn from experts.
History:
Version
0.1
0.1
Description Change
Initial Draft
Review#1
www.bispsolutions.com
Author
Shiva Kant Pandey
Amit Sharma
www.bisptrainigs.com
Publish Date
21st Aug 2012
29th Aug 2012
www.hyperionguru.com
Page 1
3. Working with Custom faults
Q)What are custom faults ?
A) Custom faults are those faults which is defined by developer for certain limitations .
Summary:
Aim of custom fault project is that to catch those faults which are defined by developer at the
time of service development so here in topper student project when someone input wrong
student marks i.e input marks of individual subject should not be smaller than zero & greater
than hundred , so this kind of restrictions are provided by developer so if wrong marks input
then it shows custom fault message that input marks is invalid .
Step wise procedure on topper student project with fault handling (custom
fault):
Step 1: Open ProcessStudent Project & under it open ProcessStudentProcess.bpel as shown
below
Step 2: In design mode Drag & Drop Switch Activity so that bpel can set condition
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 3
4. Step 3: Click on condition part to set if condition for switch activity
Motive of Switch Activity
Our motive is setting condition that if marks are smaller than zero or greater than hundred
then throw custom/business fault & also reply this fault as output else choose otherwise
condition if input marks are correct & keep all components inside this otherwise condition
Step 4: Click on Expression builder shown below :
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 4
5. Step 5: Click on lang1 marks ---> insert into expression ---> Logical Function ----> smaller --->
insert into expression ---> 0 (zero) or Click on lang1 marks ---> insert into expression --->
Logical Function ----> greater ---> insert into expression ---> 100 (hundred) or Click on lang2
marks ---> insert into expression ---> Logical Function ----> smaller ---> insert into expression
---> 0 (zero) or Click on lang2 marks ---> insert into expression ---> Logical Function ---->
greater ---> insert into expression ---> 100 (hundred) or Click on lang3marks ---> insert into
expression ---> Logical Function ----> smaller ---> insert into expression ---> 0 (zero) or Click on
lang3 marks ---> insert into expression ---> Logical Function ----> greater ---> insert into
expression ---> 100 (hundred)
as shown below
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 5
6. Step 6: Click on Ok .
Step 7 : Drag & drop Assign Activity & Rename It as AssignCustomFault :
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 6
7. Step 8: Drag & drop Throw Activity
"This activity throws the fault data to the catch activity"
Step 9: Rename throw activity as ThrowInvalidMarksFault
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 7
8. Step 10: Double Click On Throw activity & Edit Throw activity , Click On Browse icon shown
below
Step 11: Observe that there is no fault message under Project WSDL Files in
ProcessStudentProcess.wsdl so first create fault message inside ProcessStudent wsdl file for
custom fault .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 8
9. Step 12: Observe ProcessStudentProcess.wsdl in design mode that inside port type it has only
two process one is Input & other output but not containing Fault as its third process so create it
in source mode .
Step 13:Now edit this wsdl in source mode
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 9
12. Step16: Import Error.xsd from oramds , open resource palette ---> SOA-MDS-->dev mds conn
-->apps--->Error.xsd
to get schema location of error.xsd click once on it & use ctrl +shift+c then paste inside
schemalocation , delete all before apps & write oramds:/ before apps . then copy namespace
from error.xsd & paste here inside namespace .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 12
13. Step 17: Register namespace of Error.xsd with prefix "err" .
xmlns:err="http://www.bispsolutions.com/training/soa/schema/Student"
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 13
14. Step 18: As completed editing wsdl click on design mode & observe fault process
Explore fault on clicking [+] sign & see that it contains InvalidStudentMarks faultMessage
associated with its part .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 14
15. Step 19: Click on Imports & check imported xsd
Step 20: click on Schema mode to see included xsd .
Step 21: Open ProcessStudentProcess.bpel & Edit Throw activity again
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 15
16. Step 22: Now observe that this time wsdl contains Invalid studentMarksfaultMessage click on
it & hit ok .
Step 23: Create Variable as shown below & click OK
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 16
17. Step 24: Check detail & hit OK .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 17
18. Step 25: Check variables by clicking on
icon .
Step 26: Check that all QName is associated with its prefix , so observe here that
InvalidStudentMarksFaultVar does not contains its prefix so click on QName & edit variable , it
should be message type , click on Browse
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 18
19. Step 27: Click on that InvalidStudentMarksFaultMessage & click OK
Step 28: Again Check variables by clicking on
icon .
Step 29: Click on assign custom fault & start assigning fault data
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 19
20. Step 30: To assign faultCode click on expression Drag & Drop on faultCode as shown below
Step31: Write Expression i.e fault code as 'FMW-002'
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 20
21. Step 32: Similarly severity as 1
Step 33: Select Date Functions & under it select current-date-Time then insert
intoExpressionthen click ok
Step 34: Similarly Detail as 'INVALID MARKS SELLECTION'
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 21
22. Step 35: For CompositeName click Advanced functions ----> getCompositenName then
Step 36: For ComponentName click Advanced functions ----> getComponentName then
insert into Expression
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 22
23. Step 37: For CompositeInstanceId click Advanced functions ----> getCompositeInstanceId then
insert into Expression
Step 38: Observe all assigned values
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 23
24. Step 39: Drag & drop Reply Activity & click twice on it to edit reply as shown below:
Step 40: Edit Reply as shown below :
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 24
25. Step 41: Click on compile icon to compile the bpel process
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 25
26. Step 42: Build successful
Step 43: Deploy project by clicking ProcessStudent to devsoa
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 26
27. Note: Before Deployment Start Weblogic Admin Server as discussed in my previous document
Oracle Soa Part IV Doc.
Step 44: Click on Browser icon shown below:
Step 45: Start your enterprise manager by writing url http: //localhost:7001/em/
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 27
28. Note : Here localhost is application server & 7001 is a port in which enterprise manager is
running.
Step 46 : Login using credentials
User Name :weblogic
Password : welcome1
click on login
Step 47: We have successfully login inside Enterprise manager 11g (Farm_dev_soa)
we can clearly observe here that admin server is up & all deployment status is also up it means
that our admin server is running .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 28
29. Now In left pane of window under Farm_dev_soa click on SOA radio button now again expand
& under default we can easily see all the deployed projects.
Click on Processstudent twice
Step 48: Click on TEST & create instance
Step 49:Explore payload & select tree view
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 29
30. Step 50: Fill all blank spaces as shown below
Step 51: Click on Test Web Service
And get Response shown below:
Step 52: Now since input lang1 marks is 150 & so it displays custom error or
InvalidStudentMarks Error as shown below .Click on close .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 30
31. Step 53 : Parse wsdl & again try with these inputs shown below :
Click on Test Web Service
Step54 : Observe response without error because this time all input lang marks are between
0 & 100.
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 31
32. Step 55: All instances are completed & instance 320002 is completed with custom fault &
instance 320003 is completed without errors .
NOTE: Now how we catch these faults through invoking service , next steps are concentrated
on this question in which calling service is TopperStudent Service .
Step 56: Open Topper Student Process . bpel click on Add catch all activity shown below
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 32
33. NOTE: Catch activity can catch only system faults where as catch all activity catches business
fault
Step 57: Click on source mode .Copy all activies of catch & paste inside catch all block in sorce
mode
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 33
34. Step 58: Copy catch as shown below
Step 59: Paste inside Catch all activity
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 34
35. Step 60: Change into design mode & save by clicking save icon
Step 61: Drag & drop Scope Activity as shown below:
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 35
36. Scope Activity : This activity consists of a collection of activities that can have their own
local variables , fault handlers, compensation handlers and so on . A scope activity is
analogous to a block { } in programming language .Each scope has a primary activity can be
complex structured activity that, with many nested activities within it to arbitrary depth. The
scope is shared by all the nested activities .
Step 62: Now drag & drop all components inside scope activity as shown below :
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 36
37. NOTE: Since we have made changes in ProcessStudentProcess.wsdl in ProcessStudentProject
hence also need changes in imported ProcessStudentProcess.wsdl in TopperStudent Project so
that catch activity catch this custom fault as remote fault in TopperStudentProject .
Step 63: Open ProcessStudentProcess.wsdl in TopperStudentProject by clicking on it &
observe in design mode that it does not have fault process .
Aim : Our aim is to copy the required content from 'M wsdl ' to 'N wsdl'
Where M= 'ProcessStudentProcess.wsdl' in ProcessStudent Project
&
N= ' 'ProcessStudentProcess.wsdl' in TopperStudentProject
Step 64: Copy imported Error.xsd from M.wsdl as shown below:
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 37
38. Step 65: Paste imported Error.xsd to N.wsdl as shown below:
Step 66:Copy registered namespace from M.wsdl as shown below:
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 38
39. Step 67: Paste registered namespace from N.wsdl as shown below:
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 39
40. Step 68: Copy MessageType from M.wsdl as shown below:
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 40
41. Step 69: Paste MessageType to N.wsdl as shown below:
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 41
42. Step 70:Copy PortType from M.wsdl as shown below:
Step 71: Paste PortType to N.wsdl & save all by clicking save icon
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 42
43. Step 72: Click N.wsdl in design mode & observe that now created Fault as process .
Step 73: Add Terminate activity to terminate catch process as shown below & save all .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 43
44. Step 74: Click on compile icon to compile the bpel process
Step 75: Compilation successful with o errors & o warnings .
Step 76 : Deploy project by clicking TopperStudentProject.
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 44
45. Deployment Finished
Note: Before Deployment Start Weblogic Admin Server as discussed in my previous document
Oracle Soa Part IV Doc
Step 77 : Click on Browser icon shown below:
Step 78: Start your enterprise manager by writing url http: //localhost:7001/em/
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 45
46. Note : Here localhost is application server & 7001 is a port in which enterprise manager is
running.
Step 79 : Login using credentials
User Name :weblogic
Password : welcome1
click on login
Step 80: We have successfully login inside Enterprise manager 11g (Farm_dev_soa)
we can clearly observe here that admin server is up & all deployment status is also up it means
that our admin server is running .
Now In left pane of window under Farm_dev_soa click on SOA radio button now again expand
& under default we can easily see all the deployed projects.
Click twice on TopperStudentProject .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 46
48. Step 83: Scroll down page & Provide required input of a students
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 48
49. Step 84: Click on Test Web Service
And get Response shown below:
Step 85: Now we can see that catch activity catch the fault & replied to the client as
Faultdata Response but here catch activity cached it as remote fault thats why fault code is
FMW-0001 & detail of custom fault is displayed inside Detail as FMW-002 , <Detail>Invalid
marks </Detail> as shown below :
Step 86: Check flow trace
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 49
51. Fig (3)
Fig (4)
Step 87: Observe instances & instance state is terminated because of terminate activity now
finally click on shutdown tab
Step 88: Shut down confirmation ,Click yes
Step 89: Successfully shut down the composite
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 51