{"id":3418,"date":"2012-06-19T16:13:15","date_gmt":"2012-06-19T21:13:15","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=3418"},"modified":"2012-07-05T13:02:21","modified_gmt":"2012-07-05T18:02:21","slug":"1z0-451-orchestrating-services-with-bpel","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=3418","title":{"rendered":"1Z0-451: Orchestrating Services with BPEL"},"content":{"rendered":"<p>This is part of <a href=\"?p=2265\">1Z0-451: Oracle SOA Foundation Practitioner Exam<\/a><\/p>\n<span id=\"Explain_BPEL_Components_activities_and_partner_Links\"><h2>Explain BPEL Components activities and partner Links<\/h2><\/span>\n<span id=\"Activities\"><h3>Activities<\/h3><\/span>\n<p>* Activities are the building blocks of a BPEL process service component.<br \/>\n* Activities perform specific tasks within a BPEL process service component.<br \/>\n* Activities can be dragged into a BPEL process using BPEL Designer.<br \/>\n* See <a href=\"?p=3421\">this post<\/a> for a list of BPEL activities.<\/p>\n<span id=\"Partner_Links\"><h3>Partner Links<\/h3><\/span>\n<p>See <a href=\"http:\/\/download.oracle.com\/docs\/cd\/E17904_01\/integration.1111\/e10224\/bp_gsbpel.htm#SOASE363\">Introduction to Partner Links<\/a><br \/>\n* A partner link defines<br \/>\n&#8211; an <strong>external service<\/strong> with which the BPEL process is to interact.<br \/>\n&#8211; a conversational relationship between two services by defining roles played by each service.<br \/>\n* Can be defined as<br \/>\n&#8211; services<br \/>\n&#8211; references (e.g. JCA adapter)<br \/>\n* Can be defined in<br \/>\n&#8211; composite editor (preferred)<br \/>\n&#8211; BPEL editor (still need to wire in composite diagram)<br \/>\n* Dialog fields:<br \/>\n&#8211; Name<br \/>\n&#8211; Process<br \/>\n&#8211; WSDL URL<br \/>\n&#8211; Partner link type<br \/>\n&#8211; Pertner role<br \/>\n&#8211; My role (for asynch only)<\/p>\n<span id=\"Describe_Synchronous_and_Asynchronous_BPEL_Processes\"><h2>Describe Synchronous and Asynchronous BPEL Processes<\/h2><\/span>\n<span id=\"Synchronous_Interactions\"><h3>Synchronous Interactions<\/h3><\/span>\n<p>* Client sends a message to the service and receives an immediate reply.<br \/>\n* Uses a <strong>reply <\/strong>activity to respond to the client.<\/p>\n<span id=\"Asynchronous_Interactions\"><h3>Asynchronous Interactions<\/h3><\/span>\n<p>* A client sends a request to a service and waits until the service replies.<br \/>\n* Uses an <strong>invoke <\/strong>activity to respond to the client.<\/p>\n<span id=\"Describe_Message_Transformations_and_XSLT\"><h2>Describe Message Transformations and XSLT<\/h2><\/span>\n<p>* See <a href=\"http:\/\/download.oracle.com\/docs\/cd\/E17904_01\/integration.1111\/e10224\/bp_xslt_mpr.htm#CIHCCGFJ\">here <\/a>for details.<br \/>\n* You use the XSLT Mapper to create the contents of a map file.<\/p>\n<span id=\"Explain_Parallel_Flow_and_Conditional_branching\"><h2>Explain Parallel Flow and Conditional branching<\/h2><\/span>\n<p>* See<br \/>\n&#8211; <a href=\"http:\/\/download.oracle.com\/docs\/cd\/E17904_01\/integration.1111\/e10224\/bp_parallel.htm#CHDBICHI\">Using Parallel Flow in a BPEL Process<\/a><br \/>\n&#8211; <a href=\"http:\/\/download.oracle.com\/docs\/cd\/E17904_01\/integration.1111\/e10224\/bp_conditn.htm#BABJGHHJ\">Using Conditional Branching in a BPEL Process<\/a><\/p>\n<span id=\"Parallel_Flow\"><h3>Parallel Flow<\/h3><\/span>\n<p>* Enables a BPEL process service component to perform multiple tasks at the same time.<br \/>\n* Especially useful when you must perform several <strong>time-consuming<\/strong> and <strong>independent <\/strong>tasks.<br \/>\n* Created by <strong>Flow Activity<\/strong>.<br \/>\n* Use parallel flow <strong>Links <\/strong>to<br \/>\n&#8211; synchronize between activities from different flows.<br \/>\n&#8211; provide dependencies between parallel flow activities.<br \/>\n* Use optional <strong>join condition<\/strong> in target activities to create join condition (logical <strong>AND <\/strong>operation).<br \/>\n&#8211; defaults to <strong>no join<\/strong> (logical <strong>OR <\/strong>operation).<\/p>\n<span id=\"Control_Number_of_Parallel_Branches\"><h4>Control Number of Parallel Branches<\/h4><\/span>\n<p>* Use <strong>FlowN <\/strong>for BPEL 1.1 project.<br \/>\n&#8211; For example, if the array contains 3 elements, N is set to 3. Assuming the index variable begins at 1, the flowN activity creates three parallel branches with indexes 1, 2, and 3.<br \/>\n* Use <strong>forEach <\/strong>for BPEL 2.0 project.<br \/>\n&#8211; Executes a child scope activity exactly <strong>N+1<\/strong> times, where N = (final counter value) &#8211; (starting counter value).<br \/>\n&#8211; Can only include a single child <strong>scope <\/strong>activity.<br \/>\n&#8211; Support both sequential (default) and parallel (use Parallel Execution checkbox) iterations.<br \/>\n&#8211; A <strong>completion condition<\/strong> can be specified on the <strong>Completion <\/strong>tab. Once completion condition is evaluated to true, the loop is terminated.<\/p>\n<span id=\"Conditional_branching\"><h3>Conditional branching<\/h3><\/span>\n<p>* Use <strong>switch <\/strong>activity in BPEL 1.1 project.<br \/>\n* Use <strong>if <\/strong>activity in BPEL 2.0 project.<br \/>\n&#8211; if-elseif-else<br \/>\n* Instead of using conditional branching, use <strong>skipCondition <\/strong> (an XPath expression) to bypass the execution of a particular activity.<\/p>\n<span id=\"While_Activity\"><h4>While Activity<\/h4><\/span>\n<p>* The while loop repeats an activity until a specified success criteria is met.<br \/>\n* Instead of the while activity, use <strong>repeatUtil <\/strong>if the body of an activity must be performed <strong>at least once<\/strong>.<\/p>\n<span id=\"Explain_BPEL_integration_with_Java\"><h2>Explain BPEL integration with Java<\/h2><\/span>\n<p>* See<br \/>\n&#8211; <a href=\"http:\/\/download.oracle.com\/docs\/cd\/E17904_01\/integration.1111\/e10224\/bp_java.htm#CHDFFEFB\">Incorporating Java and Java EE Code in a BPEL Process<\/a><\/p>\n<span id=\"Methods_for_Incorporating_Java_and_Java_EE_code_in_BPEL_Processes\"><h3>Methods for Incorporating Java and Java EE code in BPEL Processes<\/h3><\/span>\n<p>* Wrap as a SOAP service.<br \/>\n&#8211; Performance hit.<br \/>\n&#8211; Loss of transactionality.<br \/>\n* Embed Java code snippets into a BPEL process with the bpelx:exec tag.<br \/>\n&#8211; Better performance.<br \/>\n&#8211; Retain transactionality.<br \/>\n&#8211; BPEL 2.0 uses <strong>Java Embedding<\/strong> Activity to execute Java code snippets.<br \/>\n* Use an XML facade to simplify DOM manipulation.<\/p>\n<span id=\"Built-in_bpelx:exec_Methods\"><h4>Built-in bpelx:exec Methods<\/h4><\/span>\n<p>* Object lookup( String name ) \/\/ JNDI access<br \/>\n* long getInstanceId( ) \/\/Unique ID associated with each instance<br \/>\n* String setTitle( String title ) \/ String getTitle() \/\/ Title of this instance<br \/>\n* String setStatus( String status ) \/ String getStatus() \/\/ Status of this instance<br \/>\n* void setCompositeInstanceTitle(String title) \/\/ Set the composite instance title<br \/>\n* void setIndex( int i, String value ) \/ String getIndex( int i )<br \/>\n* void setCreator( String creator ) \/ String getCreator() \/\/ Wo initiated this instance<br \/>\n* void setCustomKey( String customKey ) \/ String getCustomKey() \/\/ Second primary key<br \/>\n* void setMetadata( String metadata ) \/ String getMetadata () \/\/ Metadata for generating lists<br \/>\n* String getPreference( String key ) \/\/ Access preference<br \/>\n* void addAuditTrailEntry(String message, Object detail) \/\/ Add an entry to the audit trail<br \/>\n* void addAuditTrailEntry(Throwable t) \/\/ Access file stored in the suitcase<br \/>\n* Object getVariableData(String name) throws BPELFault \/\/ Access variables stored in the scope<br \/>\n* Object getVariableData(String name, String partOrQuery) throws BPELFault \/\/ Access variables<br \/>\n* Object getVariableData(String name, String part, String query) \/\/ Access variables<br \/>\n* void setVariableData(String name, Object value)<br \/>\n* void setVariableData(String name, String part, Object value)<br \/>\n* void setVariableData(String name, String part, String query, Object value)<\/p>\n<span id=\"Tips\"><h4>Tips<\/h4><\/span>\n<p>* Use <strong>Wait Activity<\/strong> instead of <strong>thread.sleep()<\/strong> in a Java code.<br \/>\n&#8211; Releases resource upon entering the wait activity.<br \/>\n&#8211; Enables ongoing transaction to commit.<br \/>\n&#8211; Instance data is hydrated into data store.<\/p>\n<span id=\"Adding_Custom_Classes_and_JAR_Files\"><h4>Adding Custom Classes and JAR Files<\/h4><\/span>\n<p>* Add to extenstion library<br \/>\n&#8211; For WebLogic server, add to: <strong>$ORACLE_HOME\/soa\/modules\/oracle.soa.ext_11.1.1<\/strong><br \/>\n&#8211; For JDev add to: <strong>application_name\/project\/sca-inf\/lib<\/strong><br \/>\n* Add JARs to BpelcClasspath<br \/>\n&#8211; <strong>SOA Infrastructure > SOA Administration > BPEL Properties > More BPEL Configuration Properties > BpelcClasspath<\/strong>.<br \/>\n* Add custom classes:<br \/>\n&#8211; Copy to classes directory.<br \/>\n&#8211; Restart WebLogic server.<br \/>\n* Add cusotm JARs:<br \/>\n&#8211; Copy to directory<br \/>\n&#8211; Run ant ???<br \/>\n&#8211; Restart WebLogic server.<\/p>\n<p>Next>> <a href=\"?p=3485\">Advanced BPEL Concepts<\/a><\/p>\n<span id=\"References\"><h2>References<\/h2><\/span>\n<p>* <a href=\"http:\/\/download.oracle.com\/docs\/cd\/E17904_01\/integration.1111\/e10224\/partpage_iii.htm#CHDBJJFB\">Using the BPEL Process Service Component<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is part of 1Z0-451: Oracle SOA Foundation Practitioner Exam Explain BPEL Components activities and partner Links Activities * Activities are the building blocks of a BPEL process service component. * Activities perform specific tasks within a BPEL process service &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=3418\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","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":[107,100],"tags":[],"class_list":["post-3418","post","type-post","status-publish","format-standard","hentry","category-certification","category-soa11g"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-T8","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/3418","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=3418"}],"version-history":[{"count":17,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/3418\/revisions"}],"predecessor-version":[{"id":4967,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/3418\/revisions\/4967"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}