Professional Documents
Culture Documents
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 Beginners Guide for Oracle SoA. The document focuses on various Custom fault handling techniques in BPEL process. Join our professional training program and learn from experts.
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 1
Custom faults: Are those faults which is defined by developer for certain limitations.
SUMMARY: Custom fault enables to display custom messages when given criteria fail to meet. Example input marks of individual subject should not be smaller than zero and greater than hundred. This kind of restrictions can be imposed by developer so if wrong marks are input then it shows custom fault message. Step wise procedure of project 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 2
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 3
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 :
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 4
Step 6: Click on Ok .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 5
Step 8: Drag & drop Throw Activity "This activity throws the fault data to the catch activity"
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 6
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 7
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 .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 8
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 9
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 10
Step16: Import Error.xsd from oramds , open resource palette ---> SOA-MDS www.bispsolutions.com www.bisptrainigs.com www.hyperionguru.com Page 11
-->dev mds con ---> 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 .
Step 17: Register namespace of Error.xsd with prefix "err" . www.bispsolutions.com www.bisptrainigs.com www.hyperionguru.com Page 12
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 13
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 14
Step 22: Now observe that this time wsdl contains Invalid studentMarksfaultMessage click on it & hit ok .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 15
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 16
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 17
icon .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 18
Step 29: Click on assign custom fault & start assigning fault data
Step 30: To assign faultCode t click on expression Drag & Drop on faultCode as shown below
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 19
Step 33: Select Date Functions & under it select current-date-Time then insert into Expression then click ok
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 20
Step 35: For CompositeName click Advanced functions ----> getCompositenName then insert into Expression
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 21
Step 36: For ComponentName click Advanced functions ----> getComponentName then insert into Expression
Step 37: For CompositeInstanceId click Advanced functions ----> getCompositeInstanceId then insert into Expression
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 22
Step 39: Drag & drop Reply Activity & click twice on it to edit reply as shown below:
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 23
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 24
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 25
Note: Before Deployment Start Weblogic Admin Server as discussed in my previous document Oracle Soa Part IV Doc.
Step 45: Start your enterprise manager by writing url http: //localhost:7001/em/
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 26
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 . 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
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 27
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 28
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 29
Step 52: Now since input lang1 marks is 150 & so it displays custom error or InvalidStudentMarks Error as shown below . Click on close .
Step 53 : Parse wsdl & again try with these inputs shown below :
Step54 : Observe response without error because this time all input lang marks are between 0 & 100.
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 . www.bispsolutions.com www.bisptrainigs.com www.hyperionguru.com Page 31
Step 56: Open Topper Student Process . bpel click on Add catch all activity shown below
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 32
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 33
Step 60: Change into design mode & save by clicking save icon
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 34
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 35
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 .
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 36
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 66:Copy registered namespace from M.wsdl as shown below: www.bispsolutions.com www.bisptrainigs.com www.hyperionguru.com Page 37
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 38
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 39
Step 71: Paste PortType to N.wsdl & save all by clicking save icon www.bispsolutions.com www.bisptrainigs.com www.hyperionguru.com Page 40
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 41
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 42
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:
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 43
Step 78: Start your enterprise manager by writing url http: //localhost:7001/em/ 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
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 44
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 45
Step 83: Scroll down page & Provide required input of a students www.bispsolutions.com www.bisptrainigs.com www.hyperionguru.com Page 46
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 :
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 47
Fig (1)
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 48
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 49
Fig (2)
Fig (3)
Fig (4) Step 87: Observe instances & instance state is terminated because of terminate activity now finally click on shutdown tab
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 50
www.bispsolutions.com
www.bisptrainigs.com
www.hyperionguru.com
Page 51