{"id":2063,"date":"2011-05-12T23:17:44","date_gmt":"2011-05-13T04:17:44","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=2063"},"modified":"2015-04-17T13:56:55","modified_gmt":"2015-04-17T18:56:55","slug":"soa-11g-tutorial-po-routing-app","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=2063","title":{"rendered":"SOA 11g Tutorial: PO Routing App"},"content":{"rendered":"<div class='toc wptoc'>\n<h2>Contents<\/h2>\n<ol class='toc-odd level-1'>\n\t<li>\n\t\t<a href=\"#Create_App\">Create App<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Add_Web_Service\">Add Web Service<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Create_WSDL\">Create WSDL<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Add_Routing_Component\">Add Routing Component<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Add_File_Adapter\">Add File Adapter<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Wire_Web_Service_Mediator_and_FileAdapter\">Wire Web Service, Mediator and FileAdapter<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Add_Transformation_Steps\">Add Transformation Steps<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Input_Mapper\">Input Mapper<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Deploy\">Deploy<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Testing\">Testing<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Add_CreditCardStatus_web_service_partner_link\">Add CreditCardStatus web service (partner link)<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Add_BPEL_Component\">Add BPEL Component<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#BEPL_Approval_Process\">BEPL Approval Process<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_Invoke\">Add Invoke<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_Assign\">Add Assign<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_Switch\">Add Switch<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Valid_Credit_Card_Branch\">Valid Credit Card Branch<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#InValid_Credit_Card_Branch\">InValid Credit Card Branch<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Modify_Mediator\">Modify Mediator<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#ReDeploy\">ReDeploy<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Test\">Test<\/a>\n\t<\/li>\n<\/ol>\n<\/ol>\n<\/ol>\n<\/div>\n<div class='wptoc-end'>&nbsp;<\/div>\n<p>This is part of the <a href=\"?p=1924\">Oracle SOA11g hands on tutorials<\/a>.<\/p>\n<span id=\"Create_App\"><h3>Create App<\/h3><\/span>\n<p>* File -> New -> General -> Applications -> Generic Application<br \/>\n* On Create Generic Application wizard Step 1, enter<br \/>\nApplication Name: POProcessing<br \/>\nDirectory: C:\\po\\POProcessing<br \/>\nApplicatoin Package Prefix: blank<br \/>\n* On Step 2, enter<br \/>\nProject Name: POProcessing<br \/>\nDirectory: C:\\po\\POProcessing\\POProcessing<br \/>\n* On Step 2, Project Technologies<br \/>\n&#8211; Move SOA from left panel to right panel<br \/>\n* On Step 3, select<br \/>\nEmpty Composite<br \/>\n* Click Finish<\/p>\n<span id=\"Add_Web_Service\"><h3>Add Web Service<\/h3><\/span>\n<p>* Drag and drop Web Service icon from Component Palette on Exposed Services lane<br \/>\n* On Create Web Service screen, enter<br \/>\nName: receivePO<br \/>\nType: Service<br \/>\n* Click Create WSDL from schema icon (second one to the right of WSDL URL field)<\/p>\n<span id=\"Create_WSDL\"><h4>Create WSDL<\/h4><\/span>\n<p>* On Create WSDL screen, accept<br \/>\nFile Name: receivePO.wsdl<br \/>\nDirectory: C:\\po\\POProcessing\\POProcessing<br \/>\nNamespace: http:\/\/oracle.com\/sca\/soapservice\/POProcessing\/POProcessing\/receivePO<br \/>\nPort Type: execute_ptt<br \/>\nOperation: execute<br \/>\nInterface Type: One-Way Interface<\/p>\n<p><strong>Define Input<\/strong><br \/>\n* click the green plus icon above the Input panel<br \/>\n* On Add Message Part screen, click the browse for schema icon (magnifying glass)<br \/>\n* On Type Choose screen, click the Import Schema File icon (first icon on upper right)<br \/>\n* On Import Schema File screen, enter<br \/>\nCheck: Copy to Project<br \/>\nURL: file:\/C:\/po\/schemas\/po.xsd (or click the magnifying glass and browse to po.xsd file)<br \/>\n&#8211; click OK<br \/>\n* On Localize Files screen,<br \/>\n&#8211; uncheck maintain original directory structure&#8230;<br \/>\n&#8211; click OK<br \/>\n* Back on Type Choose screen,<br \/>\n&#8211; select PurchaseOrder<br \/>\n&#8211; click OK<br \/>\n* Back on Add Message Part screen, enter<br \/>\nPart Name: purchaseOrderPart<br \/>\nURL: xsd\/po.xsd<br \/>\nSchema Element: purchaseOrder<br \/>\n&#8211; click OK<br \/>\n* Back on Create WSDL screen, click OK<br \/>\n* Back on Create Web Service screen, click OK<\/p>\n<span id=\"Add_Routing_Component\"><h3>Add Routing Component<\/h3><\/span>\n<p>* Drag and drop a Mediator from Palette to Components lane, enter<br \/>\nName: routePO<br \/>\nTemplate: Define Interface Later<br \/>\n* Click OK<\/p>\n<span id=\"Add_File_Adapter\"><h3>Add File Adapter<\/h3><\/span>\n<p>* Drag and drop a File Adapter to External References lane<br \/>\n* Click Next on Step 1<br \/>\n* Step 2, enter<br \/>\n&#8211; Service Name: WriteApprovalResults<br \/>\n* Step 3,<br \/>\n&#8211; Select &#8220;<em>Define from operation and schema<\/em>&#8221;<br \/>\n&#8211; click Next<br \/>\n* Step 4,<br \/>\n&#8211; Select Write File<br \/>\n* Step 5,<br \/>\n&#8211; Select Physical path<br \/>\nDirectory for Outgoing Files: c:\\temp\\po<br \/>\nFile naming Convention: order_%SEQ%.txt<br \/>\n* Step 6,<br \/>\n&#8211; click magnifying glass icon<br \/>\n* On Type Choose screen, click the Import Schema File icon (first icon on upper right)<br \/>\n* On Import Schema File screen, enter<br \/>\nCheck: Copy to Project<br \/>\nURL: file:\/C:\/po\/schemas\/internalorder.xsd (or click the magnifying glass and browse to internalorder.xsd file)<br \/>\n&#8211; click OK<br \/>\n* On Localize Files screen,<br \/>\n&#8211; uncheck maintain original directory structure&#8230;<br \/>\n&#8211; click OK<br \/>\n* Back on Type Choose screen,<br \/>\n&#8211; select Order<br \/>\n&#8211; click OK<br \/>\n* Back on Step 6, verify:<br \/>\nURL: xsd\/internalorder.xsd<br \/>\nSchema Element: Order<br \/>\n&#8211; click Next<br \/>\n* Click Finish<\/p>\n<span id=\"Wire_Web_Service_Mediator_and_FileAdapter\"><h3>Wire Web Service, Mediator and FileAdapter<\/h3><\/span>\n<p>* Drag right arrow on upper right of receivePO web service and drop on lower left of routePO.<br \/>\n* Drag right arrow on lower right of routePO and drop on right arrow on upper left of WriteApprovalResults.<\/p>\n<span id=\"Add_Transformation_Steps\"><h3>Add Transformation Steps<\/h3><\/span>\n<p>* Double click routePO<\/p>\n<span id=\"Input_Mapper\"><h4>Input Mapper<\/h4><\/span>\n<p>* Click on the transform icon to the right of the &#8220;Transform Using&#8221; field<br \/>\n* Select Create New Mapper File and click OK<br \/>\n* On the new mapper file,<br \/>\n&#8211; drag from left side inp1:PurchaseOrder to right side inp1:Order<br \/>\n* On Auto Map Preferences screen,<br \/>\n&#8211; click show Dictionaries button<br \/>\n&#8211; click on Add button under Dictionaries panel<br \/>\n&#8211; browse to c:\\po\\schemas\\po2internalorders-dictionary.xml<br \/>\n&#8211; click OK button (dictionary provides synonyms for words)<br \/>\n* Save and close mapper file<\/p>\n<p>* Save all and close routePO.mplan file<\/p>\n<span id=\"Deploy\"><h3>Deploy<\/h3><\/span>\n<p>* Right click POProcessing project<br \/>\n* Select Deploy -> POProcessing<br \/>\n* On Deploy POProcessing screen,<br \/>\n&#8211; select Deploy to Application Server<br \/>\n* On Deploy Configuration screen,<br \/>\n&#8211; check Overwrite any existing composites with the same revision ID if reploying<br \/>\n&#8211; click Next<br \/>\n* One Select Server screen,<br \/>\n&#8211; select MyAppServerConnection<br \/>\n&#8211; click Next<br \/>\n* Click Finish on Summary screen<\/p>\n<span id=\"Testing\"><h3>Testing<\/h3><\/span>\n<p>* Login Enterprise Console http:\/\/localhost:7001\/em<br \/>\n* Click Farm_soa_domain -> SOA -> soa-infra -> POProcessing<br \/>\n* Click Test tab<br \/>\n* Under Input Arguments,<br \/>\n&#8211; select XML View<br \/>\n&#8211; Repace content with that of C:\\po\\input\\po-small-Headsetx1.txt<\/p>\n<pre lang=\"xml\">\r\n<soap:Envelope xmlns:soap=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\">\r\n    <soap:Body xmlns:ns1=\"http:\/\/xmlns.oracle.com\/ns\/order\">\r\n        <ns1:PurchaseOrder>\r\n            <ns1:CustID>1111<\/ns1:CustID>\r\n            <ns1:ID>2121<\/ns1:ID>\r\n            <ns1:productName>Bluetooth Headset<\/ns1:productName>\r\n            <ns1:itemType>Electronics<\/ns1:itemType>\r\n            <ns1:price>49.99<\/ns1:price>\r\n            <ns1:quantity>1<\/ns1:quantity>\r\n            <ns1:status>Initial<\/ns1:status>\r\n            <ns1:ccType>Mastercard<\/ns1:ccType>\r\n            <ns1:ccNumber>8765-8765-8765-8765<\/ns1:ccNumber>\r\n        <\/ns1:PurchaseOrder>\r\n    <\/soap:Body>\r\n<\/soap:Envelope><\/pre>\n<p>* Click Test Web Service button<br \/>\n* Check that a new file named order_1.txt is created in c:\\temp\\po directory. Note that this is the directory on the server side. <\/p>\n<pre lang=\"xml\">\r\n<?xml version=\"1.0\" encoding=\"UTF-8\" ?><inp1:Order xmlns:inp1=\"http:\/\/xmlns.oracle.com\/ns\/order\" xmlns=\"http:\/\/xmlns.oracle.com\/ns\/order\">\r\n   <inp1:customerId>1111<\/inp1:customerId>\r\n   <inp1:orderId>2121<\/inp1:orderId>\r\n   <inp1:prodName>Bluetooth Headset<\/inp1:prodName>\r\n   <inp1:itemType>Electronics<\/inp1:itemType>\r\n   <inp1:price>49.99<\/inp1:price>\r\n   <inp1:qty>1<\/inp1:qty>\r\n   <inp1:status>Initial<\/inp1:status>\r\n   <inp1:creditCardInfo>\r\n      <inp1:cardNumber>8765-8765-8765-8765<\/inp1:cardNumber>\r\n      <inp1:cardType>Mastercard<\/inp1:cardType>\r\n   <\/inp1:creditCardInfo>\r\n<\/pre>\n<span id=\"Add_CreditCardStatus_web_service_partner_link\"><h3>Add CreditCardStatus web service (partner link)<\/h3><\/span>\n<p>* Drag and drop Web Service icon to External References lane<br \/>\n* On Create Web Service screen, enter<br \/>\nName: getCreditCardStatus<br \/>\n* Click Find existing WSDLs icon to the right of &#8220;<em>WSDL URL<\/em>&#8221; field<br \/>\n* On SOA Resource Browser screen,<br \/>\n&#8211; select Resource Palette from the top drop down box.<br \/>\n&#8211; select IDE Connections -> Application Server -> MyAppServerConnection -> SOA -> soa_server1 -> default -> validationForCC[1.0] -> getStatusByCC (ws)<br \/>\nOr enter: http:\/\/locahost:8001\/soa-infra\/services\/default\/validationForCC\/getStatusByCC?WSDL<br \/>\n&#8211; Click OK<br \/>\n&#8211; Click OK on Create Web Service dialog<\/p>\n<span id=\"Add_BPEL_Component\"><h3>Add BPEL Component<\/h3><\/span>\n<p>* Drag and drop BPEL Process to Components lane<br \/>\n* On Create BPEL Process screen, enter<br \/>\nName: approveLargeOrder<br \/>\nNamespace: http:\/\/xmlns.oracle.com\/POProcessing\/POProcessing\/approveLargeOrder<br \/>\nTemplate: Asynchronous BPEL Process<br \/>\nService Name: approvelargeorder_client<br \/>\nExpose as a SOAP service: <strong>Un-checked<\/strong><br \/>\nInput:<br \/>\n&#8211; click on magnifying glass<br \/>\n&#8211; select Project Schema Files -> internalorder.xsd -> order<br \/>\n&#8211; click OK<br \/>\nOutput:<br \/>\n&#8211; click on magnifying glass<br \/>\n&#8211; select Project Schema Files -> internalorder.xsd -> order<br \/>\n&#8211; click OK<br \/>\n* Click OK<br \/>\n* Wire approveLargeOrder BPEL process to getCreditCardStatus web service by drag and drop a line from the lower right corner of approveLargeOrder to upper left corner of getCreditCardStatus .<\/p>\n<span id=\"BEPL_Approval_Process\"><h3>BEPL Approval Process<\/h3><\/span>\n<p>* Open BPEL editor by either<br \/>\n&#8211; Double click approveLargeOrder BPEL process icon<br \/>\n&#8211; Or right click BPEL process icon and select Edit&#8230;<\/p>\n<span id=\"Add_Invoke\"><h4>Add Invoke<\/h4><\/span>\n<p>* Drag and drop Invoke icon right below receiveInput icon<br \/>\n* Drag wire from Invoke icon and connect with getCreditCardStatus partner link.<br \/>\n* On Edit Invoke screen,<br \/>\n&#8211; enter<br \/>\nName: invokeCCStatusService<br \/>\n&#8211; Click the green plus sign to the right of Variables\/Input and accept defaults<br \/>\n&#8211; Click the green plus sign to the right of Variables\/Output and accept defaults<br \/>\n&#8211; Click OK<\/p>\n<span id=\"Add_Assign\"><h4>Add Assign<\/h4><\/span>\n<p>* Drag and drop an Assign icon <strong>before <\/strong>invokeCCStatusService<br \/>\n* Double click to bring up the Edit Assign screen<br \/>\n* On General tab:<br \/>\n&#8211; Name: assignCCNumber<br \/>\n* Click Copy Rules tab<br \/>\n* Copy one<br \/>\n&#8211; Drag from left side<br \/>\nVariables\/Process\/Variables\/<strong>inputVariable\/payload\/Order\/creditCardInfo\/cardNumber<\/strong><br \/>\n&#8211; to right side<br \/>\nVariables\/Process\/Variables\/<strong>invokeCCStatusService_execute_inputVariable\/creditcardSatusRequestPart\/creditcardStatusRequest\/CCNumber<\/strong><br \/>\n* Copy two<br \/>\n&#8211; Drag from left side<br \/>\nVariables\/Process\/Variables\/<strong>inputVariable\/payload\/Order<\/strong><br \/>\n&#8211; to right side<br \/>\nVariables\/Process\/Variables\/<strong>outputVariable\/payload\/Order<\/strong><br \/>\n* Click OK<br \/>\n* Save All<\/p>\n<span id=\"Add_Switch\"><h4>Add Switch<\/h4><\/span>\n<p>* Drag and drop Switch icon <strong>under <\/strong>invokeCCStatusService<br \/>\n* Double click Switch icon to open the Switch dialog.<br \/>\n* On General tab enter<br \/>\n&#8211; Name: EvalulateCCStatus<br \/>\nClick OK<br \/>\n* Click condition block and enter<br \/>\nLabel: validCreditCard<br \/>\nCondition:<br \/>\n&#8211; Click XPath condition builder, enter condition:<\/p>\n<pre lang=\"txt\">bpws:getVariableData('invokeCCStatusService_execute_OutputVariable','creditcardStatusPart','\/ns3:creditcardStatus') = 'VALID'<\/pre>\n<p>&#8211; Click OK<\/p>\n<span id=\"Valid_Credit_Card_Branch\"><h4>Valid Credit Card Branch<\/h4><\/span>\n<p>* Drag and drop Assign icon below condition block<br \/>\n* Double click Assign icon and name it assignApproval on General tab<br \/>\n* Click Copy Rules tab<br \/>\n* Drag the Expression icon (first icon on upper right) and drop onto<br \/>\nVariables\/Process\/Variables\/<strong>outputVariable\/payload\/Order\/status<\/strong><br \/>\n* Enter into the Expression panel<br \/>\n&#8216;approved&#8217;<br \/>\n* Click OK<br \/>\n* Click OK on Edit Assign screen<\/p>\n<span id=\"InValid_Credit_Card_Branch\"><h4>InValid Credit Card Branch<\/h4><\/span>\n<p>* Repeat previous Assign steps for the otherwise branch but<br \/>\n&#8211; Name: assignInvalidCC<br \/>\n&#8211; Use value<br \/>\n&#8216;invalidCreditCard&#8217; (with single quotes)<br \/>\n* Save All<\/p>\n<span id=\"Modify_Mediator\"><h3>Modify Mediator<\/h3><\/span>\n<p>* Back in composite.xml file<br \/>\n* Wire routePO mediator to approveLargeOrder BPEL process<br \/>\n&#8211; Drag a wire from lower right of routePO icon to upper right of approveLargeOrder icon.<br \/>\n* Open routePO.mplan file by double clicking routePO icon<br \/>\n* Enter filter criteria for WriteApprovalResults::Write operation<\/p>\n<pre lang=\"txt\">\r\n($in.purchaseOrderPart\/inp1:PurchaseOrder\/inp1:price  * $in.purchaseOrderPart\/inp1:PurchaseOrder\/inp1:quantity) < 1000\r\n<\/pre>\n<p>* Enter filter criteria for approveLargeOrder operation<\/p>\n<pre lang=\"txt\">\r\n($in.purchaseOrderPart\/inp1:PurchaseOrder\/inp1:price * $in.purchaseOrderPart\/inp1:PurchaseOrder\/inp1:quantity) >= 1000\r\n<\/pre>\n<p>* Create transformation map for approveLargeorder<br \/>\n- click on transformation icon<br \/>\n- select Create new Mapper File and accept default file name<br \/>\n- click OK<br \/>\n- drag PurchaseOrder to Order<br \/>\n- click OK on automapping<br \/>\n- drag inp1:ccType to inp1:cardType<br \/>\n- drag inp1:ccNumber to inp1:cardNumber<br \/>\n* Setup Callback Target Operation<br \/>\n- Click cog icon to the right of Callback<br \/>\n- Click Service as target type<br \/>\n- Select POProcessing | References | WriteApprovalResults | Write<br \/>\n- Click OK<br \/>\n* Create transformation map for Callback<br \/>\n- repeat previous steps but drag from Order to Order<\/p>\n<span id=\"ReDeploy\"><h3>ReDeploy<\/h3><\/span>\n<span id=\"Test\"><h3>Test<\/h3><\/span>\n<p>* Valid credit card input message:<\/p>\n<pre lang=\"xml\">\r\n<soap:Envelope xmlns:soap=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\">\r\n    <soap:Body xmlns:ns1=\"http:\/\/xmlns.oracle.com\/ns\/order\">\r\n        <ns1:PurchaseOrder>\r\n            <ns1:CustID>1111<\/ns1:CustID>\r\n            <ns1:ID>2222<\/ns1:ID>\r\n            <ns1:productName>iPod shuffle<\/ns1:productName>\r\n            <ns1:itemType>Electronics<\/ns1:itemType>\r\n            <ns1:price>145<\/ns1:price>\r\n            <ns1:quantity>30<\/ns1:quantity>\r\n            <ns1:status>Initial<\/ns1:status>\r\n            <ns1:ccType>Mastercard<\/ns1:ccType>\r\n            <ns1:ccNumber>1234-1234-1234-1234<\/ns1:ccNumber>\r\n        <\/ns1:PurchaseOrder>\r\n    <\/soap:Body>\r\n<\/soap:Envelope>\r\n<\/pre>\n<p>* order_.txt file (status has changed to approved)<\/p>\n<pre lang=\"xml\">\r\n<?xml version=\"1.0\" encoding=\"UTF-8\" ?><ns1:Order xmlns:ns1=\"http:\/\/xmlns.oracle\r\n.com\/ns\/order\" xmlns=\"http:\/\/xmlns.oracle.com\/ns\/order\">\r\n   <ns1:customerId>1111<\/ns1:customerId>\r\n   <ns1:orderId>2222<\/ns1:orderId>\r\n   <ns1:prodName>iPod shuffle<\/ns1:prodName>\r\n   <ns1:itemType>Electronics<\/ns1:itemType>\r\n   <ns1:price>145<\/ns1:price>\r\n   <ns1:qty>30<\/ns1:qty>\r\n   <ns1:status>approved<\/ns1:status>\r\n   <ns1:creditCardInfo>\r\n      <ns1:cardNumber>1234-1234-1234-1234<\/ns1:cardNumber>\r\n      <ns1:cardType>Mastercard<\/ns1:cardType>\r\n   <\/ns1:creditCardInfo>\r\n<\/ns1:Order>\r\n<\/pre>\n<p>* Invalid credit card input message:<br \/>\n- change credit card number to 4321-4321-4321-4321 to simulate invalid credit card<\/p>\n<pre lang=\"xml\">\r\n<soap:Envelope xmlns:soap=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\">\r\n    <soap:Body xmlns:ns1=\"http:\/\/xmlns.oracle.com\/ns\/order\">\r\n        <ns1:PurchaseOrder>\r\n            <ns1:CustID>1111<\/ns1:CustID>\r\n            <ns1:ID>2222<\/ns1:ID>\r\n            <ns1:productName>iPod shuffle<\/ns1:productName>\r\n            <ns1:itemType>Electronics<\/ns1:itemType>\r\n            <ns1:price>145<\/ns1:price>\r\n            <ns1:quantity>30<\/ns1:quantity>\r\n            <ns1:status>Initial<\/ns1:status>\r\n            <ns1:ccType>Mastercard<\/ns1:ccType>\r\n            <ns1:ccNumber>4321-4321-4321-4321<\/ns1:ccNumber>\r\n        <\/ns1:PurchaseOrder>\r\n    <\/soap:Body>\r\n<\/soap:Envelope>\r\n<\/pre>\n<p>* order_.txt file (status is now invalidCreditCard)<\/p>\n<pre lang=\"xml\">\r\n<?xml version=\"1.0\" encoding=\"UTF-8\" ?><ns1:Order xmlns:ns1=\"http:\/\/xmlns.oracle\r\n.com\/ns\/order\" xmlns=\"http:\/\/xmlns.oracle.com\/ns\/order\">\r\n   <ns1:customerId>1111<\/ns1:customerId>\r\n   <ns1:orderId>2222<\/ns1:orderId>\r\n   <ns1:prodName>iPod shuffle<\/ns1:prodName>\r\n   <ns1:itemType>Electronics<\/ns1:itemType>\r\n   <ns1:price>145<\/ns1:price>\r\n   <ns1:qty>30<\/ns1:qty>\r\n   <ns1:status>invalidCreditCard<\/ns1:status>\r\n   <ns1:creditCardInfo>\r\n      <ns1:cardNumber>4321-4321-4321-4321<\/ns1:cardNumber>\r\n      <ns1:cardType>Mastercard<\/ns1:cardType>\r\n   <\/ns1:creditCardInfo>\r\n<\/ns1:Order>\r\n<\/pre>\n<p>* Click Launch Message Flow Trace to see process message flow<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is part of the Oracle SOA11g hands on tutorials. Create App * File -> New -> General -> Applications -> Generic Application * On Create Generic Application wizard Step 1, enter Application Name: POProcessing Directory: C:\\po\\POProcessing Applicatoin Package Prefix: &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=2063\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[100],"tags":[],"class_list":["post-2063","post","type-post","status-publish","format-standard","hentry","category-soa11g"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-xh","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/2063","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2063"}],"version-history":[{"count":17,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/2063\/revisions"}],"predecessor-version":[{"id":10659,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/2063\/revisions\/10659"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}