Beruflich Dokumente
Kultur Dokumente
Version 8.0
December 2009
ThisdocumentappliestowebMethodsDeveloperVersion 8.0andwebMethodsIntegrationServerVersion 8.0andtoallsubsequentreleases. Specificationscontainedhereinaresubjecttochangeandthesechangeswillbereportedinsubsequentreleasenotesorneweditions. Copyright19982009SoftwareAG,Darmstadt,Germanyand/orSoftwareAGUSA,Inc.,Reston,VA,UnitedStatesofAmerica,and/or theirlicensors. ThenameSoftwareAG,webMethods,andallSoftwareAGproductnamesareeithertrademarksorregisteredtrademarksofSoftwareAG and/orSoftwareAGUSA,Inc.and/ortheirlicensors.Othercompanyandproductnamesmentionedhereinmaybetrademarksoftheir respectiveowners. UseofthissoftwareissubjecttoadherencetoSoftwareAGslicensingconditionsandterms.Thesetermsarepartoftheproduct documentation,locatedathttp://documentation.softwareag.com/legal/and/orintherootinstallationdirectoryofthelicensedproduct(s). Thissoftwaremayincludeportionsofthirdpartyproducts.Forthirdpartycopyrightnoticesandlicenseterms,pleaserefertoLicense Texts,CopyrightNoticesandDisclaimersofThirdPartyProducts.Thisdocumentispartoftheproductdocumentation,locatedat http://documentation.softwareag.com/legal/and/orintherootinstallationdirectoryofthelicensedproduct(s).
Table of Contents
About This Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Document Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Documentation Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Online Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. Getting Started with Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is Developer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Before You Use Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Does the Developer Window Contain? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Navigation Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Navigation Panel Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Refreshing the Contents of the Navigation Panel . . . . . . . . . . . . . . . . . . . . . . . . . The UDDI Registry Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UDDI Registry Tab Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Recent Elements Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Properties Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Results Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working in the Developer Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Moving Between Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Performing Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resizing Areas in the Developer Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hiding and Showing Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dragging Movable Borders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Switching Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opening, Closing, and Restoring Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Restoring a Session on a Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Notification of Server Shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing Your Password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Password Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Online Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Managing Elements in the Navigation Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is an Element? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating New Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Element Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Package Names and Element Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Guidelines for Naming Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editing Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Dependency Checking Safeguards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 17 18 18 21 22 22 23 25 26 26 29 29 30 31 31 33 35 35 35 36 37 37 37 38 39 40 40 41 41 42 43 44 45 45 46 46 47 47
Table of Contents
Notes About Performing Actions on Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opening and Closing Elements in the Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Moving and Copying Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Moving and Copying Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Copying Elements Between Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Moving and Copying Adapter Notifications and Related Elements . . . . . . . . . . . . . . . . Renaming Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving Changes to Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finding Elements and Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finding Elements in the Navigation Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finding Fields in Editor Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Locating Invoked Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finding Dependents and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finding Dependents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finding References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inspecting Pipeline References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caching Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clearing the Developer Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Working with Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is a Package? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Package Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Guidelines for Naming Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing Details for a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optimizing Lock Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Copying a Package to Another Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Documenting a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reloading a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exporting a Package or Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning a Version Number to a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing the Patch History for a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Identifying Package Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Removing Package Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning Startup, Shutdown, and Replication Services . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is a Startup Service? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is a Shutdown Service? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is a Replication Service? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Guidelines for Assigning Startup, Shutdown, and Replication Services . . . . . . . . . . . . Assigning Startup, Shutdown, and Replication Services . . . . . . . . . . . . . . . . . . . . . . . Removing Startup, Shutdown, and Replication Services . . . . . . . . . . . . . . . . . . . . . . .
48 49 51 51 51 52 53 55 57 58 60 60 62 63 64 64 65 67 70 70 73 74 74 76 76 77 77 79 80 81 82 82 83 84 86 87 88 88 89 89 89 90 91
Table of Contents
Publishing and Retracting Information about Integration Server and Trading Networks Assets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Publishing Metadata about Integration Server and Trading Networks Assets . . . . . . . Retracting Published Metadata about Integration Server and Trading Networks Assets Checking the Status of Publication and Retraction Requests . . . . . . . . . . . . . . . . . . . Status Information for Publication and Retraction Requests . . . . . . . . . . . . . . . . . 4. Locking and Unlocking Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is a Lock? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Know Who Has an Element Locked? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . When Do I Lock an Element? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . When Do I Unlock an Element? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Locking Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Locking Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Locking Java and C/C++ Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Locking Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . System Locking Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing the Status of Locked Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Copying, Moving, or Deleting Locked Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unlocking Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unlocking Elements Using Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unlocking an Element Using the Integration Server Administrator . . . . . . . . . . . . . . . . Unlocking a System Locked Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing an Elements Corresponding Server Files . . . . . . . . . . . . . . . . . . . . . . . . Automatically Unlocking Elements After Saving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lock/Unlock Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Package Management Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Save Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Other Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. Assigning and Managing Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is an ACL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Happens When a Client Runs a Service with ACLs? . . . . . . . . . . . . . . . . . . . . . Am I Required to Use ACLs? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Create an ACL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning ACLs to Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Permissions Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ACLs and Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Default ACLs and Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing ACL Information on a Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91 92 93 94 94 97 98 98 99 99 99 100 100 101 102 102 103 104 104 104 106 107 108 108 109 109 110 110 111 111 113 114 114 114 116 116 117 118 119 120 120
Table of Contents
How ACLs Affect Other Developer Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ACLs and Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ACLs and Testing/Debugging Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ACLs and Creating, Viewing, and Deleting Elements . . . . . . . . . . . . . . . . . . . . . . . . . . Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. Building Flow Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is a Flow Service? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is a Flow Step? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is the Pipeline? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Are Input and Output Parameters? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Process Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a New Flow Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Package and Folder Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Default Logic Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inserting Flow Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Declaring Input and Output Parameters for a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Supported Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Input Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Output Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Completing the Input/Output Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning an Output Template to a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Run-Time Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Maintaining the State of a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring a Services Use of Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Types of Services to Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Services Suited for Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Services that You Should Not Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling a Services Use of Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying the Duration of a Cached Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Prefetch Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying the Execution Locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Up URL Aliases for Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Path Alias for a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Pipeline Debug Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Pipeline Debug Property to Save the Service Pipeline . . . . . . . . . . . . . Using the Pipeline Debug Property to Restore the Service Pipeline . . . . . . . . . . . Configuring Service Retry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About the Maximum Retry Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Service Retry Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning Universal Names to Services and Document Types . . . . . . . . . . . . . . . . . . . . . .
121 121 121 122 122 125 126 126 127 128 129 130 131 131 131 132 133 133 133 135 135 138 141 141 142 143 143 143 144 144 144 145 147 148 149 149 150 151 152 152 154
Table of Contents
Configuring Service Auditing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Enabling Auditing for a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying When Audit Data Is Generated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Including the Pipeline in the Service Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . When Is a Copy of the Input Pipeline Saved in the Service Log? . . . . . . . . . . . . . Service Auditing Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Error Auditing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Service Auditing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Auditing for Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Auditing Long-Running Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Auditing Options for a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Audit Level Settings in Earlier Versions of Developer . . . . . . . . . . . . . . . . . . . . . . . . . Printing a Flow Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. Inserting Flow Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is a Flow Step? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inserting and Moving Flow Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Position of a Flow Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Level of a Flow Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting the Properties of a Flow Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The INVOKE Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying the Service Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Invoking a Built-In Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Invoking a Service on Another webMethods Integration Server . . . . . . . . . . . . . . . . . . Building an INVOKE Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The BRANCH Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Branching on a Switch Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying the Switch Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying the Label Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Branching on an Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Branching on Null and Empty Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying a Default Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using SEQUENCE as the Target of a BRANCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building a BRANCH Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The REPEAT Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying the REPEAT Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting the REPEAT Counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . When Does REPEAT Fail? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using REPEAT to Retry a Failed Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using REPEAT to Retry a Successful Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The SEQUENCE Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using SEQUENCE to Specify an Exit Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The LOOP Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying the Input Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Collecting Output from a LOOP Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building a LOOP Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The EXIT Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The MAP Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
157 158 158 160 160 162 162 163 163 164 164 165 166 167 168 169 170 171 172 173 173 174 174 174 176 176 177 177 179 180 181 182 184 186 186 187 187 188 190 192 192 194 195 196 196 198 200
Table of Contents
8. Mapping Data in a Flow Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is Data Mapping? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Does the Pipeline Tab Contain? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pipeline Tab for an INVOKE Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pipeline Tab for a MAP Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pipeline Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Printing the Pipeline Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic Mapping Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Linking Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Happens When Integration Server Executes a Link Between Variables? . . Linking to Document and Document List Variables . . . . . . . . . . . . . . . . . . . . . . . . Linking Variables of Different Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Examples of Structural Transformations on the Pipeline Tab . . . . . . . . . . . . Converting a String List to a Document List . . . . . . . . . . . . . . . . . . . . . . . . . . Linking to and from Array Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Guidelines for Linking to and from Array Variables . . . . . . . . . . . . . . . . . . . . Deleting Links Between Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Applying Conditions to Links Between Variables . . . . . . . . . . . . . . . . . . . . . . . . . . Linking Multiple Source Variables to a Target Variable . . . . . . . . . . . . . . . . . Assigning Values to Pipeline Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning a Default Value to a Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Initializing Variables in a Flow Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Referencing Other Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting a Value for a Pipeline Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Copying Set Values Between Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dropping Variables from the Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding Variables with the Pipeline Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Are Transformers? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Built-in Services as Transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inserting a Transformer into a MAP Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Linking Variables to a Transformer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transformer Movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transformers and Array Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is Dimensionality? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Validating Input and Output for Transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Copying Transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Expanding Transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Renaming Transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Debugging Transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
201 202 202 203 205 206 206 207 207 211 213 214 215 215 216 218 219 219 220 221 222 222 223 223 224 225 226 227 227 229 229 231 232 232 233 233 233 234 234 235 236 237
Table of Contents
9. Creating IS Schemas, IS Document Types, and Specifications . . . . . . . . . . . . . . . . . . 239 Creating an IS Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 What Does an IS Schema Look Like? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Schema Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Schema Details Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 About Schema Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Creating an IS Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Creating IS Schemas from XML Schemas that Reference Other Schemas . . . . . 247 Editing a Simple Type in an IS Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Setting Constraining Facet Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Creating an IS Document Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Creating an Empty IS Document Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Creating an IS Document Type from an XML Document, DTD, or XML Schema . . . . 252 Points to Consider for All Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Points to Consider When Using a DTD As the Source . . . . . . . . . . . . . . . . . . . . . 252 Points to Consider When Using an XML Schema As the Source . . . . . . . . . . . . . 253 Expanding Complex Document Types Inline . . . . . . . . . . . . . . . . . . . . . . . . . 254 Generating Fields for Substitution Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Creating an IS Document Type from a Broker Document Type . . . . . . . . . . . . . . . . . . 259 The Envelope Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Adapter Notifications and Publishable Document Types . . . . . . . . . . . . . . . . . . . 262 Assigning Universal Names to an IS Document Type . . . . . . . . . . . . . . . . . . . . . . . . . 262 Editing an IS Document Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Modifying Publishable Document Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Printing an IS Document Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Using an IS Document Type to Specify Service Input or Output Parameters . . . . . . . 264 Using an IS Document Type to Build a Document Reference or Document Reference List Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Specifying Field Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Creating a Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 10. Performing Data Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is Data Validation? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is Data Validated Against? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Applying Constraints to Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Considerations for Object Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Customizing a String Content Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing the Constraints Applied to Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Performing Input/Output Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Input/Output Validation via the Input/Output Tab . . . . . . . . . . . . . . . . . . . . Specifying Input/Output Validation via the INVOKE Step . . . . . . . . . . . . . . . . . . . . . . . Performing Document Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Performing Pipeline Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Performing XML Validation in webMethods Integration Server . . . . . . . . . . . . . . . . . . . . . . Performing Validation from within a Java Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Validation Errors and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Validation Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Running Out of Memory During Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 272 272 273 275 276 277 278 279 280 281 281 282 283 284 284 285
Table of Contents
11. Testing and Debugging Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing and Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing Services from Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entering Input for a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving Input Values to a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Loading Input Values from a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing the Results of the Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Copying Variables from the Results Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Run-Time Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Call Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Pipeline Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing Services from a Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing Services that Expect XML Documents as Input . . . . . . . . . . . . . . . . . . . . . . . . . . . Working in Debug Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entering Debug Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Combining the Step and Trace Commands in Debug Mode . . . . . . . . . . . . . . . . . . . . Resetting Debug Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Trace Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tracing into a Child Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Step Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stepping Through a Child Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Step Tools with a MAP Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Happens When a Breakpoint Is Encountered? . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Breakpoints on Transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing a List of Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling Flow Steps, Transformers, and Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling Flow Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling Transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling a Condition Placed on a Link Between Variables . . . . . . . . . . . . . . . . . . . . . Modifying the Current Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving and Restoring the Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving the Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving the Contents of the Results Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Automatically Saving the Pipeline at Run Time . . . . . . . . . . . . . . . . . . . . . . . . . . . Manually Saving the Pipeline at Run Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Restoring the Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Loading a Saved Pipeline into the Results Panel . . . . . . . . . . . . . . . . . . . . . . . . . Automatically Loading a Saved Pipeline at Run Time . . . . . . . . . . . . . . . . . . . . . . Manually Loading a Saved Pipeline at Run Time . . . . . . . . . . . . . . . . . . . . . . . . . Other Debugging Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Servers Debug Facility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Contents of the Server Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Server Debug Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Writing Information to the Server Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Writing an Arbitrary Message to the Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dumping the Pipeline to the Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
287 288 288 289 290 292 292 293 295 295 296 297 298 299 299 300 301 301 302 303 304 305 306 307 307 308 309 310 310 311 312 313 315 315 316 316 317 317 318 319 319 320 320 321 321 322 322 323
10
Table of Contents
12. Building Coded Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The IData Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Services Take IData Objects as Input and Return IData as Output . . . . . . . . . . . Getting and Setting Elements in an IData Object . . . . . . . . . . . . . . . . . . . . . . . . . Creating IData Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building Services Using Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Java Services Are Organized on the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building Java Services with Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Developer IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Java Service Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Shared Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Java Service with Developers IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generating Java Code from Service Input and Output Parameters . . . . . . . . . . . Setting Run-Time Options for a Java Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building Java Services with Your Own IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Namespace Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Source Code Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Writing the Source Code for a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the webMethods API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Basic Stages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Commenting Code for the webMethods Integration Server . . . . . . . . . . . . . . . . . Using the jcode Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Make Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fragment Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Composite Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Other jcode Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building Services Using C/C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generating Files for a C/C++ Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Java Code for a C Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building the C/C++ Source Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building Services Using COM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Invoking Methods from Existing COM and DCOM Objects . . . . . . . . . . . . . . . . . . . . . . . . . Creating the Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Invoking the Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13. Creating Client Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building a Java Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Files that Are Generated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
325 326 326 326 327 327 328 328 329 329 329 331 332 333 335 335 335 336 336 337 337 337 338 338 339 339 340 341 342 342 343 345 345 345 346 347 349 350 350 350 351 352 352
11
Table of Contents
Building a C/C++ Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Files that Are Generated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building a Visual Basic Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Environment Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Files that Are Generated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Files for the User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Files Containing the Code that Invokes the Service . . . . . . . . . . . . . . . . . . . . . . . File Containing the Code that Interacts with webMethods Integration Server . . . . Building an Excel Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Files that Are Generated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building a Browser-Based Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Invoking Services with a URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the HTTP GET Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the HTTP POST Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input to the Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Output from the Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14. Submitting and Receiving XML Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Submitting and Receiving XML in a String Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example: Submitting XML in a String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example: Receiving XML in a String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Submitting and Receiving XML in $xmldata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example: Submitting and Receiving XML in $xmldata . . . . . . . . . . . . . . . . . . . . . . . . . Submitting and Receiving XML via HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Client Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example: Submitting and Receiving XML via HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . Submitting and Receiving XML via FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Client Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FTPing a File from a webMethods Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . Receiving XML via FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Submitting and Receiving XML via E-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Client Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example: Sending XML via E-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Receiving XML via E-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
353 353 353 354 354 355 355 355 355 356 356 356 357 357 357 358 358 358 358 359 360 360 360 361 361 362 362 364 365 366 366 366 367 367 368 369 369 370 371 372 372 373 374 374 374 375
12
Table of Contents
15. Subscribing to Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Event Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Are Event Handlers? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Happens When an Event Occurs? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Event Subscriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Subscribing to an Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Event Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Event Filters for Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing and Editing Event Subscriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Suspending Event Subscriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting an Event Subscription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building an Event Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sample Event Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Invoking Event Handlers Synchronously or Asynchronously . . . . . . . . . . . . . . . . . . . . . . . . Working with Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Alarm Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Audit Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Exception Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Guaranteed Delivery Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Guaranteed Delivery Events and Transaction Events . . . . . . . . . . . . . . . . . . . . . . Working with JMS Delivery Failure Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with JMS Retrieval Failure Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Port Status Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Replication Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Security Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Session Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Stat Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Transaction Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16. Building Services that Retry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Requirements for Retrying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adapter Services and Retry Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building a Service that Throws an Exception for Retry . . . . . . . . . . . . . . . . . . . . . . . . . . . . How to Build a Service that Throws an Exception for Retry . . . . . . . . . . . . . . . . . . . . . ExampleBuilding a Service that Throws an Exception for Retry . . . . . . . . . . . . . . . . A. webMethods Flow Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . BRANCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Branching on a Switch Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Branching on Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conditions that Will Cause a BRANCH Step to Fail . . . . . . . . . . . . . . . . . . . . . . . . . . .
377 378 380 380 381 381 383 385 386 386 387 387 388 390 391 391 392 392 392 393 394 394 395 395 395 396 397 397 399 400 400 401 401 402 404 407 408 408 408 409 410
13
Table of Contents
EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Examples of When to Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . INVOKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conditions that Will Cause an INVOKE Step to Fail . . . . . . . . . . . . . . . . . . . . . . . . . . . LOOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conditions that Will Cause a LOOP Step to Fail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example of When to Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . REPEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . When Does REPEAT Fail? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Examples of When to Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SEQUENCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conditions that Will Cause the SEQUENCE Step to Fail . . . . . . . . . . . . . . . . . . . . . . . B. Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is a Regular Expression? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using a Regular Expression in a Mask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Regular Expression Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C. Supported Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Java Classes for Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How webMethods Developer Supports Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Default Pipeline Rules for Linking to and from Array Variables . . . . . . . . . . . . . . . . . . . . . . D. Conditional Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comparing Java Objects to Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Checking for Variable Existence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Relational Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Standard Relational Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lexical Relational Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Logical Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Addressing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Addressing Variables that Contain Special Characters . . . . . . . . . . . . . . . . . . . . . . . . Typing Special Characters in Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rules for Use of Expression Syntax with the Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
410 411 411 412 412 412 413 413 414 414 415 415 415 416 417 417 418 418 419 421 422 422 422 429 430 431 433 433 437 438 439 441 442 442 442 443 445 447 448 449 450 451 452
14
Table of Contents
E. jcode tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . jcode Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . jcode Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sample CodeIData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F. Validation Content Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Content Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Constraining Facets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G. Validation Errors and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Validation Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Validation Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IS Schema Generation Errors and Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
455 456 456 456 461 462 463 473 477 478 478 492 497
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
15
Table of Contents
16
Terminology
Thefollowingtermsareinterchangeable: ISdocumenttypeandESBdocumenttype ISserviceandESBservice
Document Conventions
Convention Bold Narrow font UPPERCASE Italic Description Identifieselementsonauserinterface. IdentifiesstoragelocationsforservicesonwebMethodsIntegration Server,usingtheconventionfolder.subfolder:service. Identifieskeyboardkeys.Keysyoumustpresssimultaneouslyare joinedwithaplussign(+). Identifiesvariablesforwhichyoumustsupplyvaluesspecifictoyour ownsituationorenvironment.Identifiesnewtermsthefirsttimethey occurinthetext. Identifiestextyoumusttypeormessagesdisplayedbythesystem. Indicatesasetofchoicesfromwhichyoumustchooseone.Typeonly theinformationinsidethecurlybraces.Donottypethe{}symbols. Separatestwomutuallyexclusivechoicesinasyntaxline.Typeoneof thesechoices.Donottypethe|symbol.
Monospace font
{} |
17
Convention [] ...
Documentation Installation
YoucandownloadtheproductdocumentationusingtheSoftware AGInstaller. DependingonthereleaseofthewebMethodsproductsuite,thelocationofthe downloadeddocumentationwillbeasshowninthetablebelow. For webMethods... 6.x 7.x 8.x The documentation is downloaded to... Theinstallationdirectoryofeachproduct. Acentraldirectorynamed_documentationinthemain installationdirectory(webMethodsbydefault). Acentraldirectorynamed_documentationinthemain installationdirectory(Software AGbydefault).
Online Information
YoucanfindadditionalinformationaboutSoftware AGproductsatthelocationslisted below. Note: TheEmpowerProductSupportWebsiteandtheSoftware AGDocumentation WebsitereplaceSoftware AGServLine24andwebMethodsAdvantage. If you want to... Accessthelatestversionofproduct documentation. Go to... Software AG Documentation Web site http://documentation.softwareag.com
18
If you want to... Findinformationaboutproductreleasesand toolsthatyoucanusetoresolveproblems. SeetheKnowledgeCenterto: Readtechnicalarticlesandpapers. Downloadfixesandservicepacks. Learnaboutcriticalalerts. SeetheProductsareato: Downloadproducts. Getinformationaboutproduct availability. Accessolderversionsofproduct documentation. Submitfeature/enhancementrequests. Accessadditionalarticles,demos,and tutorials. Obtaintechnicalinformation,useful resources,andonlinediscussionforums, moderatedbySoftware AGprofessionals, tohelpyoudomorewithSoftware AG technology. Usetheonlinediscussionforumsto exchangebestpracticesandchatwith otherexperts. Expandyourknowledgeaboutproduct documentation,codesamples,articles, onlineseminars,andtutorials. LinktoexternalWebsitesthatdiscuss openstandardsandmanyWeb technologytopics. Seehowothercustomersarestreamlining theiroperationswithtechnologyfrom Software AG.
19
20
What Is Developer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Before You Use Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Does the Developer Window Contain? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working in the Developer Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opening, Closing, and Restoring Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing Your Password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Online Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
What Is Developer?
webMethodsDeveloperisagraphicaldevelopmenttoolthatyouusetobuild,edit,and testintegrationlogic.Itprovidesanintegrateddevelopmentenvironmentinwhichyou candevelopthelogicandsupportingobjects(referredtoaselements)ofanintegration solution.Italsoprovidestoolsfortestinganddebuggingthesolutionsyoucreate. Developerletsyourapidlyconstructintegrationlogicwithaneasytouse implementationlanguagecalledthewebMethodsflowlanguage.Flowlanguageprovidesa setofsimplebutpowerfulconstructsthatyouusetospecifyasequenceofactions(steps) thattheIntegrationServerwillexecuteatruntime.Developeralsohasextensivedata transformationandmappingcapabilitiesthatallowyoutoquicklydraganddropdata fieldsfromonesteptothenext. Besidesprovidingtoolsforconstructingflowservices,Developerprovidesadditional editorsandtoolsforcreatingvariouselementsthatsupporttheexecutionofan integrationsolution.Forexample,youuseDevelopertocreatethedocumenttypesand schemasusedfordatavalidationandtodefineBroker/localtriggerthatlaunchthe executionofserviceswhencertaindocumentsarepublished. Developerenablesyoutolockanelementyouareworkingwith.Whenyoulockan element,theelementisreadonlytoallotherusersontheIntegrationServer.Another usercannotedittheelementuntilyouunlockit.Developercanalsobeconfiguredto interactwithathirdpartversioncontrolsystem(VCS)repository;inthiscase,elements arelockedandunlockedasyoucheckthemoutofandintotheVCSrepository. AllreferencesinthisguidetolockingrefertolocallockingontheIntegrationServer.For specificinformationaboutlocalfilelocking,seeChapter 4,LockingandUnlocking Elements.ForinformationonhowtoimplementfilelockingwiththeVersionControl SystemIntegrationfeatureforDeveloper,seeStoringServicesinaVersionControlSystemin theSoftware AG_directory\_documentationdirectory.
22
Starting Developer
UsethefollowingproceduretostartDeveloperonyourworkstation.Beforeyoustart DevelopermakesurethattheIntegrationServerwithwhichyouwanttouseDeveloperis running.YoucannotworkwithDeveloperiftheserverisnotrunning. Important! YoucanonlyconnectwebMethodsDeveloperversion7.1toawebMethods IntegrationServerversion7.1. To start Developer 1 2 OntheStartmenu,clickPrograms,andthenclickwebMethods. ClickwebMethods Developer.
Specify the name and port assignment of a server... ...and enter a user account that has developer privileges.
IntheOpenSessiondialogbox,completethefollowing: In this field... Server type Server Specify... Theregisteredtypefortheserveronwhichyouwanttoopena session.ThedefaulttypeisIntegrationServer. ThenameandportassignmentofthewebMethodsIntegration ServerinServerName:PortNumformat. Examplerubicon:5555 Note: Serverstowhichyouhavesuccessfullyloggedoninthe pastarelistedintheServerlist.Youcanselectaserverfromthis listortypeitsnameandportnumber. Username Thenameofavaliduseraccountonthisserver.(Theusername mustbeamemberofagroupbelongingtotheDevelopersACL.) Usetheexactcombinationofupperandlowercasecharacters withwhichitwasoriginallydefined.ISusernamesarecase sensitive.
23
In this field...
Password
Uses proxy
ClickOK. Tip! WhenyourunDeveloperfromthecommandline,Developerwritesmessagesto theconsole.Theamountandtypeofinformationthatiswrittenisdeterminedbythe debuglevelunderwhichDeveloperisoperating.Thedefaultdebuglevelis4.Ifyou wantmoredetailwrittentotheconsole,setthedebuglevelto10.Youcanchangethe debuglevelbyeditingtheini.cnffilelocatedinDeveloper_directory\config. Note: WhenyoustartDeveloper,itverifiesthattheotherwebMethodscomponents supportthesamelocaleasDeveloper.Ifthelocaleofanaddincomponentisnot supportedbytheDeveloperlocale,Developerdisplaysamessageintheconsole warningyouofthelocalemismatch.Forexample,ifyoustartDeveloperinanEnglish localewithalocalizedJapaneseaddincomponent,Developerdisplaysthefollowing messageintheconsole:
Warning: The following plug-ins are running localized versions even though Developer is not: ComponentName; VersionNumber.
DeveloperwilldisplaysometextinEnglishandthecomponentstextinJapanese.
24
25
26
This icon...
Represents... A provider Web service descriptor (WSD).AWebservicedescriptorthat containsthedefinitionofaproviderISWebservice.AproviderWeb serviceallowsanexternalusertoinvokeanexistingISserviceasan operationoftheWebservice. A consumer Web service descriptor (WSD).AWebservicedescriptorthat containsthedefinitionofaconsumerWebservice.ConsumerWeb servicesareexternalWebservicesthatcanbeinvokedfromwithinthe localIntegrationServer. A Web service connector.AWebserviceconnectorisaflowservicethat invokesaWebservicelocatedonaremoteserver.Developer automaticallygeneratesaWebserviceconnectorwhenitcreatesaWeb servicedescriptorforaconsumerWebservice.Developercanalsocreatea WebserviceconnectorfromanexistingWSDL. A Java service.AJavaserviceisaservicewritteninJava. A C service. ACserviceisaservicewritteninC/C++. A specification.Aspecificationisaformaldescriptionofaservicesinputs andoutputs. A Broker/local trigger. ABroker/localtriggeristriggerthatsubscribestoand processesdocumentspublished/deliveredlocallyortotheBroker. FormoreinformationaboutcreatingBroker/localtriggers,seethePublish SubscribeDevelopersGuide. A JMS trigger.AJMStriggerisatriggerthatreceivesmessagesfroma destination(queueortopic)onaJMSproviderandthenprocessesthose messages. FormoreinformationaboutcreatingJMStriggers,seethewebMethods IntegrationServerJMSClientDevelopersGuide. An IS document type. AnISdocumenttypecontainsasetoffieldsusedto definethestructureandtypeofdatainadocument. A publishable document type.ApublishabledocumenttypeisanIS documenttypewithspecificpublishingproperties.Instancesof publishabledocumenttypescanbepublishedandsubscribedto. PublishabledocumenttypescanbeusedanywhereanISdocumenttype isneeded. A publishable document type for an adapter notification.Anadapternotification canhaveanassociatedpublishabledocumenttypethattheadapteruses tosendthenotificationdatatoanIntegrationServeroraBroker.
27
This icon...
Represents... An IS schema. AnISschemaistheblueprintormodeldocumentagainst whichyouvalidateanXMLdocument.Theschemadefineswhatcanand cannotbecontainedintheXMLdocumentsitvalidates. An adapter notification.Anadapternotificationenablesanadapterto receiveeventdatafromtheadaptersresource.Therearetwotypesof adapternotifications: Pollingnotifications,whichpolltheresourceforeventsthatoccuron theresource. Listenernotifications,whichworkwithlistenerstodetectandprocess eventsthatoccurontheadapterresource. Forinformationaboutcreatinganadapternotification,refertothe documentationprovidedwiththeadapter. An adapter service.Anadapterserviceconnectstoanadaptersresource andinitiatesanoperationontheresource.Adapterservicesarecreated usingservicetemplatesincludedwiththeadapter.Forinformationabout creatingadapterservices,refertothedocumentationprovidedwiththe adapter. A listener.Alistenerisanobjectthatconnectstoanadapterresourceand waitsfortheresourcetodeliverdatawhenaneventoccursonthe resource.Listenersworkwithlistenernotificationstodetectandprocess eventdataontheadapterresource.Forinformationaboutcreatinga listener,refertothedocumentationprovidedwiththeadapter. A connection.Aconnectionisanobjectthatcontainsparametersthat adapternotificationsandlistenersusetoconnecttoaresource.For informationaboutcreatingaconnection,refertothedocumentation providedwiththeadapter. A flat file dictionary.Aflatfiledictionarycontainsrecorddefinitions,field definitions,andcompositedefinitionsthatcanbeusedinmultipleflatfile schemas.Formoreinformationaboutcreatingaflatfiledictionary,seethe FlatFileSchemaDevelopersGuide. A flat file schema.Aflatfileschemaistheblueprintthatcontainsthe instructionsforparsingorcreatingtherecordsinaflatfile,aswellasthe constraintstowhichaninboundflatfiledocumentshouldconformtobe consideredvalid.Usingflatfileschemas,youcantranslatedocuments intoandfromflatfileformats.Formoreinformationaboutcreatingaflat fileschema,seetheFlatFileSchemaDevelopersGuide. An XSLT service.AnXSLTserviceconvertsXMLdataintootherXML formatsorintoHTML,usingrulesdefinedinanassociatedXSLT stylesheet.FormoreinformationaboutcreatingXSLTservices,seethe XSLTServicesDevelopersGuide.
28
This icon...
Represents... A .NET service. A.NETserviceisaservicethatcallsmethodsimported from.NETassemblies(usingthewebMethodsforMicrosoftPlugin). Oncea.NETserviceexistswithinDeveloper,itcanbecomepartofaflow justlikeanyotherservice.Formoreinformationaboutusingthe Microsoft.NETapplicationplatformwithwebMethodscomponents,see thewebMethodsforMicrosoftPackageInstallationandUsersGuide. An Unknown Node.ThewebMethodscomponentusedtocreate/developthe elementisnotinstalledontheclientmachine. An Unknown Service.ThewebMethodscomponentusedtocreatethis serviceisnotinstalledontheclientmachine.
29
30
The Editor
Theeditorcontainsthecontrolsthatyouusetoexamineandeditanelementyouopen fromtheNavigationpanelorRecentElementstab.Thecontentsoftheeditorvary dependingonthetypeofelementyouselect. Forsomeelementtypes,theeditorisdividedintomultipleareas,includingtabs containingadditionaleditingcontrolsfortheelement.Youswitchamongareaswithin theeditorjustasyouwouldbetweentheNavigationpanelorRecentElementstaband theeditor.Toselectadifferentarea,clickanywhitespaceinthatarea.Todisplaythe contentsofatab,clickthetabname.
31
In this example, a specification is opened in the editor. The editor lists the input and output fields that were created for this specification. These lists are also referred to as trees.
Asmentionedearlier,youcanusetheNavigationpanelandRecentElementstabtoselect oneormoreelementstovieworeditintheeditor.Itishelpfultodisplaymultiple elementsintheeditorwhenyouareeditinganelementandyouwouldliketoreferback toanotherelementforinformation.Forexample,ifyouarecreatingoreditinga Broker/localtrigger,youmaywanttoquicklyviewthedocumenttypesandservices associatedwiththattrigger. Eachelementyouopenhasitsowntabintheeditor.Theelementstitlebarcontainsthe fullyqualifiednameoftheelementandiconstoindicatetheelementstypeandlock status.Formoreinformationabouttheseicons,seeNavigationPanelIconsonpage 26 andWhatIsaLock?onpage 98. Tip! YoucanpressCTRL+ALT+RIGHTARROWtotoggleforwardbetweenopen elementsintheeditorandCTRL+ALT+LEFTARROWtotogglebackward.
32
Click to close the active element (that is, the element that is currently displayed).
33
Properties panel
Drag to resize the Property and Value columns.
Name of the item for which properties are displayed. Properties are grouped into categories.
Dependingonthetypeofpropertyyouselect,youeditapropertyby: Typingavalueintheboxtotherightofthepropertyname(forexample,tospecify thenamespaceandlocalnamesthatmakeuptheuniversalnameforaservice) Tip! Youcanalsopastetextintotheboxthatyoupreviouslycopiedtothe clipboard. Note: Developeracceptsthetextyoutypeinapropertyboxwhenyoumovethe focusoutsideoftheboxorpressENTER.Youcancancelyoureditsbeforeyou performeitheroftheseactionsbypressingESC. Selectingavaluefromalist(forexample,tospecifyavalidationprocessingrule) Clickingabuttonnexttothepropertynameandsupplyingvaluesonadialogbox (forexample,tospecifyanindexwhenlinkingtoorfromanarrayvariable) Clickingthebrowse buttontolocateanelement(forexample,aservice)
34
...to view its contents in the pipeline at this stage of the services execution.
35
Performing Actions
Beforeyoucanperformanactiononanelement,youmustselecttheelementinoneofthe followingways: Singleclickthetitlebarofanelementintheeditor. Rightclickanelement. SingleclickoneormoreelementsintheNavigationpanel. Tip! Toselectagroupofadjacentelementssimultaneously,presstheSHIFTkeyas youclick.Toselectagroupofnonadjacentelements,presstheCTRLkey. Note: SingleclickinganelementintheNavigationpanelselects(highlights)the elementbutdoesnotopentheelementforviewingoreditingintheeditor.To openanelementintheeditor,doubleclickit. TheactionsthatareavailableforanelementdependonwhichareaoftheDeveloper windowhasthefocus.Forexample,torunaservice,theservicemustbeopeninthe editorandhavethefocus. Thereareanumberofwaystoperformanactiononanelementafteryouselectit: Menu commands.Youcanselectacommandfromthemenubartoperformanactionon anelement.Forexample,tosavechangestoanopenedelementusingthemenubar, selecttheelementintheeditorandthenclickFileSave. Youcanalsoaccessmenucommandsonashortcutmenubyrightclickingthe element.Forexample,toopenanelementusingashortcutmenu,rightclickthe elementintheNavigationpanelandthenclickOpen.Tocloseaneditorusinga shortcutmenu,rightclicktheeditortitlebarandthenclickClose Active Editor. Toolbar buttons.Youcanclickatoolbarbuttontoperformanactiononanelement.For example,tosavechangestoanopenedelementusingatoolbarbutton,selectthe elementintheeditorandthenclick . Thetoolbarbuttonsthatareavailableforyoutousedependontheiteminthe Developerwindowthatcurrentlyhasthefocus.Forexample,whenyouareeditinga flowservice,theflowservicetoolbarbuttonsintheeditorarenotavailableunlessthe editorhasthefocus. Keys.YoucanusethekeyboardtoaccessamenubypressingtheALTkeyplusthe underlinedletterinthemenuname.Youcanthenselectacommandonthatmenuby pressingtheunderlinedletterinthecommandstitle.Forexample,tosavechangesto anelementusingthekeyboard,selecttheelement,pressALTandFtoaccesstheFile menu,andthenpressStosavetheelement. Somecommandsalsohaveshortcutsassignedtothem.Theseshortcutsaredisplayed totherightoftheirassociatedcommandsonthemenubar.Forexample,tosave changestoanelementusingakeyboardshortcut,selectthatelementandthenpress CTRLandS.
36
Drag-and-drop action.Youcanselectanelementandmoveittoanotherpackageor element,eitheronthesameserveroronadifferentserver,bydraggingit.For example,tomoveanISdocumenttypefromonefoldertoanother,youwoulddrag thatdocumenttypetothenewfolder. Note: Someelements,suchasadapternotifications,cannotbemovedusingthe draganddropaction. Mostoftheproceduresinthisguideinstructyoutoperformactionsusingmenu commands.
Click
alongtheleftedgeoftheDeveloperwindow.
Click
alongtheleftedgeoftheDeveloperwindow.
37
Switching Perspectives
YoucanquicklychangetheDeveloperwindowtotailorittothetaskyouareperforming (forexample,showonlytheeditorandResultspanelwhenyouaretestingaservice)by displayingaparticularperspective.PerspectivesallocatemorespaceontheDeveloper windowforaparticulartaskbyhidingorminimizingtheareasthatarenotessentialto thattask. Developeroffersthreeperspectives: Edit perspective.TheeditperspectivedisplaysalloftheDeveloperwindowareasbut minimizestheResultspanel.Thisperspectiveisusefulwhenyouareopeningand editingelementsandtheirproperties. Test perspective.ThetestperspectivehidestheNavigationpanel,UDDIRegistrytab, andRecentElementstabandmaximizestheeditorandtheResultspanel.This perspectiveisusefulwhenyouaretestinganddebuggingaserviceandyouwantto viewtheresultsoftheservicesexecution,itsinputsandoutputs,anditspipeline variables. Details perspective.ThedetailsperspectivehidestheNavigationpanel,UDDIRegistry tab,andRecentElementstabandminimizestheResultspanel.Thisperspectiveis usefulwhenyouwanttoseeasmuchofanelementsdetailaspossible(forexample,a servicespipeline). Youdisplayaperspectiveasfollows: To display the... Editperspective Testperspective Detailsperspective Use this command... WindowEdit Perspective WindowTest Perspective WindowDetails Perspective Or click this toolbar button...
38
39
40
Password Requirements
Forsecuritypurposes,webMethodsIntegrationServerplaceslengthandcharacter restrictionsonpasswords.webMethodsIntegrationServercontainsadefaultsetof passwordrequirements;however,yourserveradministratorcanchangethese.Formore informationaboutthesepasswordrequirements,contactyourserveradministrator. ThedefaultpasswordrequirementsprovidedbywebMethodsareasfollows: Requirement Minimumlength Minimumnumberofalphabeticcharacters Minimumnumberofuppercasecharacters Minimumnumberoflowercasecharacters Minimumnumberofnumericcharacters Minimumnumberofspecialcharacters(nonalphabeticandnonnumeric characters,suchas*.?,&) Toensurethesecurityofyourpassword,followtheadditionalguidelinesbelow: Donotchooseobviouspasswords,suchasyourname,address,phonenumber, licenseplate,spousesname,childsname,orabirthday. Donotuseanywordthatcanbefoundinthedictionary. Donotwriteyourpassworddown. Donotshareyourpasswordwithanyone. Changeyourpasswordfrequently. Default 8 3 2 2 1 1
41
To change your password 1 2 3 4 OntheSessionmenu,clickChange Password. IntheChangePassworddialogbox,intheOld Passwordfield,typeyourcurrent password. IntheNew Passwordfield,typeyournewpassword. IntheConfirm New Passwordfield,retypeyournewpassword.ClickOK. Important! Theserveradministratorcandisablethefeatureforchangingyour passwordfromDeveloper.Ifthefeatureisdisabledandyoutrytochangeyour password,youwillreceiveamessagestatingthattheadministratorhasdisabledthe feature.
42
What Is an Element? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating New Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Dependency Checking Safeguards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Notes About Performing Actions on Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opening and Closing Elements in the Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Moving and Copying Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Renaming Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving Changes to Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finding Elements and Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finding Dependents and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inspecting Pipeline References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caching Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
What Is an Element?
AnelementisanitemthatexistsintheNavigationpanelinwebMethodsDeveloper. Elementsincludefolders,services,specifications,ISdocumenttypes,triggers,andIS schemas.IntheNavigationpanel,serversandpackagesarenotconsideredtobe elements. Elements in the Navigation panel
Folders, services, triggers, specifications, IS document types, and IS schemas are elements.
Thefollowingtableidentifieswheretogoformoreinformationaboutcreatingnew elementsandperformingactionsonthoseelements. For information about... Creating,opening,movingand copying,renaming,deleting, finding,andcachingelements Lockingelements Checkingelementsintoandoutofa thirdpartyversioncontrol repository Performingactionsonpackages See... Thesectionsinthischapter
44
45
46
Editing Elements
Toeditanelement,youmustfirstlockit.YoumustalsohaveWriteaccesstotheelement. Formoreinformationaboutlockingandunlockingelements,seeChapter 4,Locking andUnlockingElements.Formoreinformationaboutaccesspermissions,seeChapter 5, AssigningandManagingPermissions. IfyouhaveenabledtheVCSIntegrationfeature,youmustfirstcheckouttheelement beforeyoucaneditit.Formoreinformation,seeStoringServicesinaVersionControl SystemintheSoftware AG_directory\_documentationdirectory. Tip! YoucanproduceprintableversionsofmanyoftheelementsintheNavigation panelbyclickingFileView as HTML.
47
To... InstructDevelopertoalertyouwhendependents(thatis, otherelementsthatusetheselectedelement,suchasflow services,ISdocumenttypes,ortriggers)exist. Ifdependentsexist,Developerliststhosedependentsbefore renamingormovingtheselectedelementandpromptsyou to: Rename/movetheselectedelementandupdate referencesindependentelements. Rename/movetheselectedelementwithoutupdating referencestoit. Canceltheaction. Ifyouclearthischeckbox,Developerautomaticallyupdates dependentswithoutpromptingyou.
48
fromselectingmultipleelementswhendoingsocouldcauseconfusionorundefined results.Forexample,youcannotselectaserverandanyotherelement,apackageand anyotherelement,orafolderandoneormoreelementscontainedwithinthatfolder. IfyouselectmultipleelementsandDeveloperencountersanerrorwhileperforming thespecifiedactionononeormoreoftheelements,Developerdisplaysadialogbox listingtheelementsforwhichtheactionfailed.Youcanobtainmoreinformation aboutwhytheactionfailedbyclickingDetails. Theelementsyouwanttomove,copy,rename,save,ordeletemustbeunlocked,or lockedbyyou.Formoreinformationaboutlockingandunlockingelements,see Chapter 4,LockingandUnlockingElements. Youcannotundoamove,copy,rename,ordeleteactionusingtheEditUndo command. Ifyouselectapublishabledocumenttypethatisassociatedwithanadapter notification,Developerhandlesactionsperformedonthedocumenttypeasfollows:
49
To open elements in the editor 1 Selectoneormoreelementstoopen. Tip! PresstheSHIFTkeyasyouclicktoselectagroupofadjacentelements.Press theCTRLkeytoselectagroupofnonadjacentelements. 2 OntheFilemenu,clickOpen. IfyouareopeninganelementfromtheRecentElementstabandtheelementresides onaservertowhichyouarenolongerconnected,Developerpromptsyoutologon tothatserverbeforedisplayingtheelement. To close elements in the editor Dooneofthefollowing: To... Closetheactiveelementintheeditor (thatis,theelementwhosetabis highlighted) Closeallelementsexcepttheactiveone Closeallelementsintheeditor Do this... OntheWindowmenu,clickClose Active Editor. OntheWindowmenu,clickClose All But Active Editor. OntheWindowmenu,clickClose All Editors.
50
General
YoumusthaveReadaccesstotheelementsyouaremovingorcopyingandWrite accesstothepackages,folders,orserverstowhereyouwanttomove/copythem.For moreinformationaboutWriteaccessandACLsassignedtoelements,seeChapter 5, AssigningandManagingPermissions. Whenyoumoveorcopyanelement,Developerautomaticallychangestheelements fullyqualifiednametoreflectitsnewlocation. Youcannotmoveanelementtoalocationthatalreadycontainsanelementwiththe samename.Ifyoucopytheelement,however,Developercopiestheelementand appendsanumbertotheendofthenameofthecopiedelement. Youcannotmovemultipleelementswiththesamenametoasinglelocation. Afteryoumoveorcopyanelement,theelementbecomeslockedbyyou. Whenyoucopymultipleelementstoanotherlocationonthesameserverandthe elementscontainreferencestoeachother,Developerupdatesthereferencesifyou haveselectedUpdate local reference(s) when pasting multiple elementsontheOptions dialogbox.Forexample,ifyoucopyafolderthatcontainstwoservicesandoneofthe servicesinvokestheother,Developerwillupdatethereferencetotheinvoked service.
51
52
Whenyoumoveorcopyapublishabledocumenttypetoadestinationonthesame server,themovedorcopieddocumenttyperemainspublishable.Whenyoucopya publishabledocumenttypetoadifferentserver,Developerconvertsthepublishable documenttypetoanISdocumenttypeonthedestinationserver.Formore informationaboutmakingISdocumenttypespublishableandsynchronizingthem withBrokerdocumenttypes,seethePublishSubscribeDevelopersGuide. Tip! ToretainthestatusofapublishabledocumenttypeanditslinktoaBroker documenttype,usethepackagereplicationfunctionalityintheIntegrationServer AdministratorinsteadofusingDevelopertomoveorcopythepackage containingthepublishabledocumenttype.Forinformationaboutpackage replication,seeAdministeringwebMethodsIntegrationServer.
53
5 6 7
IftheJavaserviceyouaremovingorcopyingcontainsasharedsourcethat conflictswiththesharedsourceofanexistingJavaserviceinthedestination folder,Developeralertsyouthatthereisaconflict.ClickOKtousethedestination folderssharedsource,orclickCanceltocanceltheentiremoveaction. Note: IfnosharedJavasourceconflictexists,DevelopermovestheJavaservice anditssharedsourcetothedestinationfolder.Ifaconflictdoesexist,you mustrespecifytheSharedtabinformationinthecopyoftheservice.(Youcan copytheinformationfromtheSharedtabfortheoriginalservicetotheShared tabforthecopyoftheservice.)
54
IfyouclickedthePrompt before updating dependents when renaming/movingcheckboxin theOptionsdialogboxandanyelementsonthecurrentservercontainunsaved changes,Developerpromptsyoutosavetheelement(s). Dooneofthefollowing: To... Savechangesandthenproceedwiththemove/copyaction Continuethemove/copyactionwithoutsavingchanges Canceltheentiremove/copyaction Click... Save and Proceed Proceed without Save Cancel
10 IfyouclickedProceed without SaveinStep9,Developeridentifiestheelementsthatwill beaffectedbythemove. Dooneofthefollowing: To... Movetheselectedelementandupdatereferencesto dependentelements MovetheselectedelementintheNavigationpanelwithout updatingreferencestodependentelements Canceltheentiremoveaction Click... Update Usages Ignore Usages Cancel
Renaming Elements
Whenrenamingelements,keepthefollowingpointsinmind: YoucanrenameanyelementsforwhichyouhaveWriteaccesstotheelementandits parentfolder.Whenrenamingafolder,youmustalsohaveWriteaccesstoall elementswithinthefolder.FormoreinformationaboutWriteaccessandACLs assignedtoelements,seeChapter 5,AssigningandManagingPermissions. Whenyourenameafolder,Developerautomaticallyrenamesalloftheelementsin thatfolder(thatis,changestheirfullyqualifiednames). Ifthefolderyouwanttorenamecontainselementswithunsavedchanges,youmust savethechangesbeforeyoucanrenamethefolder.
55
Elementnamesmustbeuniqueacrossallpackages.Ifyoutrytorenameanelement usinganamethatalreadyexistsatthatlevelinanypackage,Developerrevertsthe elementbacktoitsoriginalname. Whenyourenameanadapternotification,Developeralsorenamesitsassociated publishabledocumenttypeandpromptsyoutoindicatewhethertorenamethe associatedBrokerdocumenttype. Youcannotrenamealistenerorconnectionelement. To rename an element 1 2 3 Selecttheelementthatyouwanttorename. OntheEdit menu,clickRename. Iftheelementyouwanttorenamecontainsunsavedchanges,Developeralertsyou thattheelementcannotberenameduntilyousavethechanges.ClickOKtoclosethe alertdialogbox.Then,savethechangesandrepeattherenameaction. Developermovesthecursortotheendoftheelementname.Editthenameandpress ENTER. Ifanelementalreadyexistswiththatnameatthesamelevel,Developerdisplaysa messagealertingyouthattherenameactioncouldnotbecompleted.ClickOKtoclose themessagedialogboxandrepeattherenameaction. Tip! YoucancancelarenameactionbypressingESC. 5 IfyouclickedthePrompt before updating dependents when renaming/movingcheckboxin theOptionsdialogboxandanyelementsonthecurrentservercontainunsaved changes,Developerpromptsyoutosavetheelement(s). Dooneofthefollowing: To... Savechangesandthenproceedwiththerenameaction Proceedwiththerenameactionwithoutsavingchanges Canceltheentirerenameaction Click... Save and Proceed Proceed without Save Cancel
56
IfyouclickedProceed without SaveinStep5,Developeralertsyoutotheelementsthat willbeaffectedbytherenameaction. Dooneofthefollowing: To... RenametheselectedelementintheNavigationpaneland updatereferencestodependentelements Renametheselectedelementwithoutupdatingreferencesto dependentelements Canceltheentirerenameaction Click... Update Usages Ignore Usages Cancel
57
Deleting Elements
Whendeletingelements,keepthefollowingpointsinmind: YoucandeleteanyelementstowhichyouhaveWriteaccessfortheelementandits parentfolder.Whendeletingafolder,youmustalsohaveWriteaccesstoallelements withinthefolder.FormoreinformationaboutWriteaccessandACLsassignedto elements,seeChapter 5,AssigningandManagingPermissions. WhenyoudeleteafolderorthelastJavaserviceinafolder,Developeralsodeletes thesharedsourceforthatfolder.Ifyoucancelthedeleteaction,noelements (includingnonJavaserviceelements)aredeleted. Youcanonlydeleteanadapternotificationspublishabledocumenttypeifyoudelete itsassociatedadapternotification. Whenyoudeleteanadapternotification,Developeralsodeletesitsassociated publishabledocumenttypeandpromptsyoutoindicatewhethertodeletethe associatedBrokerdocumenttype. Youcannotdeletealistenerorconnectionelement. To delete elements 1 2 3 Selecttheelementsthatyouwanttodelete. OntheEditmenu,clickDelete. IfyouselectedtheConfirm before deletingcheckboxintheOptionsdialogbox,dothe following: a Ifanyelementsontheservercontainunsavedchanges,Developerpromptsyouto savetheelement(s).Dooneofthefollowing: To... Savechangesandthenproceedwiththedeleteaction Proceedwiththedeleteactionwithoutsaving changes Canceltheentiredeleteaction b Click... Save and Proceed Proceed without Save Cancel
Iftheelementsyouaredeletingarenotdependentsofotherelements,Developer promptsyoutoconfirmthedeleteaction.ClickOK.
58
Iftheelementsyouaredeletingaredependentsofotherelements,Developer alertsyoutotheelementsthatwillbeaffectedbythedeletion.Dothefollowing: 1 Ifoneoftheelementsyouwanttodeleteisapublishabledocumenttypeoran adapternotification,dooneofthefollowing: To... DeletetheelementontheIntegration Serverbutleavethecorresponding documenttypeontheBroker DeletetheelementontheIntegration Serverandthecorresponding documenttypeontheBroker Do this... CleartheDelete associated Broker document type on the Brokercheck box. SelecttheDelete associated Broker document type on the Brokercheck box.
Important! IfyoudeleteapublishabledocumenttypeandBrokerdocument typeassociatedwithatriggeroraflowservice,youmightbreakany integrationsolutionthatusesthedocumenttype. IfyoudeletetheBrokerdocumenttype,youmightnegativelyimpactany publishabledocumenttypescreatedfromthatBrokerdocumenttypeonother IntegrationServers.Whenthedeveloperssynchronizedocumenttypeswith theBrokerandtheychoosetoPull from Broker,publishabledocumenttypes associatedwiththedeletedBrokerdocumenttypewillberemovedfromtheir IntegrationServers. 2 Continueorcancelthedeleteactionasfollows: To... DeletetheelementsfromtheNavigationpanel(and thereforebreakanylinkstodependentelements) Canceltheentiredeleteaction Click... Continue Cancel
59
60
To find an element in the Navigation panel 1 2 3 4 5 ClickanywhereintheNavigationpanel. OntheEditmenu,clickFind.DeveloperdisplaystheFindInNavigationPaneldialog box. IntheFind In Navigation Panelbox,typeanyportionofthefullyqualifiednameofthe elementthatyouwanttofind. Ifyouwanttolimitthescopeofthesearchtoaspecificpackage,selectthepackagein thePackagelist. ClickFind.TheFindInNavigationPaneldialogboxdisplaystheresultsofthesearch. Results of search for PO
The term PO is found in...
...the names of 33 elements in the Navigation panel. All of these elements contain PO in their fully qualified name.
TojumptoanelementintheNavigationpanel,selectthatelementintheresultsand clickGo To. Note: IfyoureceiveaCouldntfindinNavigationpanelmessagewhenyouclickGo To,youprobablydonothaveListaccesstotheelement.Contactyourserver administratortoobtainaccess. Tip! Foranactiveelementintheeditor,youcanhighlighttheelementslocationinthe NavigationpanelusingtheEditLocate in Navigation command.
61
62
To find a field within an editor tree 1 2 3 Selectthetreeinwhichyouwanttosearchforafield. OntheEditmenu,clickFind. IntheFind whatfield,typethetextyouwanttosearchfor.Ifyouwanttosearchfora parentchildfieldcombination,useaforwardslash(/)toseparatetheparentfield fromthechildfield. Tofurtherrefineyoursearch,dooneormoreofthefollowing: To... Findfieldswiththesamecapitalizationasthe textintheFind whatfield Findonlyfieldsthatmatchthecompleteword intheFind whatfield FindfieldsthatcontainthetextintheFind what fieldasalloraportionoftheirname 5 6 Do this... SelecttheMatch casecheckbox. SelecttheMatch whole wordscheck box. CleartheMatch whole wordscheck box.
63
Finding Dependents
Todeterminehowaselectedelementisusedbyotherelementsontheserver,youcan finddependentsoftheselectedelement.Forexample,supposethattheflowservice ServiceAinvokestheflowservicereceivePO.TheServiceAserviceuses(thatis,isadependent of)thereceivePOservice.IfyoudeletereceivePOfromtheNavigationpanel,ServiceAwill notrun. Dependent elements
This service is a dependent of... ...each of these services.
Duringdebugging,youmightwanttolocateallofthedependentsofagivenserviceorIS documenttype.Or,beforeeditinganISdocumenttype,youmightwanttoknowwhat elements,suchasspecifications,Broker/localtriggers,orflowservices,willbeaffectedby changestotheISdocumenttype.UsetheFind Dependentscommandtofindallthe dependents. Note: DeveloperdoesnotconsideraJavaservicethatinvokesanotherservicestobea dependent.Forexample,ifJavaserviceAinvokesserviceB,andyouinstruct DevelopertofinddependentsofserviceB,serviceAwillnotappearasadependent. To find dependents of a selected element 1 2 IntheNavigationpanelorintheeditor,selecttheelementforwhichyouwanttofind dependents. OntheToolsmenu,clickFindDependents. TheFindDependentsdialogboxdisplaysthedependentsoftheelement.
64
...this element.
AfterDeveloperfindsthedependentsoftheselectedelement,youmaydoanyofthe following:
Finding References
Todeterminehowaselectedelementusesotherelementsontheserver,youcanfind referencesoftheselectedelement.Forexample,theflowserviceServiceAinvokesthe servicesreceivePO,pub.schema:validate,processPOandsubmitPO.Additionally,initsinput signature,ServiceAdeclaresadocumentreferencetotheISdocumenttype PODocument. TheservicesreceivePO,validate,processPO,andsubmitPO,andtheISdocumenttype PODocument,areusedby(thatis,theyarereferencesof)ServiceA. Elements as references
65
YoucanalsousetheFind Referencescommandtolocateanyunresolvedreferences.An unresolvedreferenceisanelementthatdoesnotexistintheNavigationpanelyetisstill referredtointheservice,ISdocumenttype,orspecificationthatyouselected.The elementmighthavebeenrenamed,moved,ordeleted.Topreventunresolvedreferences, specifythedependencycheckingsafeguards.Formoreinformationaboutthese safeguards,seeSpecifyingDependencyCheckingSafeguardsonpage 47. Note: Developerdoesnotconsiderdocumentreferencestoschematypestobe references,nordoesitconsiderservicesinvokedwithinaJavaservicetobereferences oftheJavaservice.Forexample,ifJavaserviceAinvokesserviceB,andyouinstruct DevelopertofindreferencesforserviceA,serviceBwillnotappearasareferenceof A. To find references of a selected element 1 2 IntheNavigationpanelorintheeditor,selecttheelementforwhichyouwanttofind references. OntheTools menu,clickFindReferences. TheFindReferencesdialogboxdisplaysthereferencesoftheelement.Unresolved referencesareindicatedinbold italics. Find References dialog box
The processPO service uses...
...these elements.
The element in bold italics does not exist in the Navigation panel
AfterDeveloperfindsthereferencesoftheselectedelement,youmaydoeitherofthe following:
66
This variable is a reference to the PODocument in the Navigation panel. The link between ONum and num is a pipeline reference.
Pipelinereferencesarealsothoselocationswhereyouassigna
Set Valuemodifierora
67
WhenyoueditanISdocumenttype,thechangesaffectanydocumentreferenceand documentreferencelistvariablesdefinedbythatISdocumenttype.Thechangesmight makepipelinereferencesinvalid.Forexample,supposetheinputsignatureforServiceA containsadocumentreferencevariablePOInfobasedontheISdocumenttype PODocument.TheISdocumenttypePODocumentcontainsthefieldPONum.Inthepipeline forServiceA,youlinkthePONumfieldtoanotherpipelinevariable.Ifyoueditthe PODocumentISdocumenttypebydeletingthePONumfield,thepipelinereference(the link)forthefieldintheServiceApipelineisbroken(thatis,itisinvalid)becausethe pipelinecontainsalinktoafieldthatdoesnotexist. WhenyoueditanISdocumenttype,youmightwanttocheckalldependentpipeline modifiersforvalidity.YoucanusetheToolsInspect Pipeline Referencescommandto locateanybrokenorinvalidpipelinereferences.Youcanusethiscommandto: Searchforinvalidpipelinereferencesinaselectedflowservice. Searchforinvalidpipelinereferencesinvolvingdocumentreferenceanddocument referencelistvariablesdefinedbyaselectedISdocumenttype. Wheninspectingpipelinereferences,keepthefollowingpointsinmind: Youcaninspectpipelinereferencesinaselectedflowservice.Youcanalsoinspect pipelinereferencesfordocumentreferenceordocumentreferencelistvariablesbased onaselectedISdocumenttype.Thesearchresultsincludeonlyflowservices, documentreferencevariables,ordocumentreferencelistvariablesthatcontain invalidpipelinemodifiers. Valuessetatthetoplevelofadocumentreferenceordocumentreferencelistinthe pipelinearenotconsideredpipelinereferences.(Thatis,a Set Valuemodifier assignedtothedocumentreferenceisnotapipelinereference.)Therefore,ifaSet Valuemodifierassignedtoadocumentreferencecontainsinputvaluesfora nonexistentfield,itwillnotappearinthesearchresultseventhoughitisinvalid. Thesearchresultswillnotshowdatatypeanddimensionalitymismatches.For example,supposethatyoulinkaStringnamedNumbertothePONumStringlist withinthedocumentreferencePODocument.Thisdimensionalitymismatchwillnot appearinthesearchresults. Whenyouinspectpipelinereferencesinaflowservice,Developerinspectsreferences acrossallpackagesonwebMethodsIntegrationServer. WhenyouinspectpipelinereferencesforanISdocumenttype,youcaninspect referencesacrossaspecificpackageorallpackages.
68
To inspect pipeline references 1 2 IntheNavigationpanelorintheeditor,selecttheflowserviceorISdocumenttype forwhichyouwanttofindinvalidpipelinereferences. OntheToolsmenu,clickInspect Pipeline References. TheInspectPipelineReferencesdialogboxdisplaysallinvalidpipelinereferencesfor theselectedserviceorISdocumenttype.
AfterDeveloperfindsthepipelinereferencesoftheselectedelement,youmaydoany ofthefollowing:
TojumptoanelementintheNavigationpanel,selectthatelementintheresults andthenclickGo To. Tojumptotheunresolvedreferenceinthepipeline,selecttheelementinthe resultsandthenclickFind in Flow. Iftheselectedelementhasmultipleunresolvedreferencesinthesameflow serviceandyouwanttoautomaticallyjumptothenextreferencewithinthe selectedelement,youcanusetheFind Nextcommand.TousetheFind Next command,keeptheInspectPipelineReferencesdialogboxopenandclickEdit Find Next. Iftheselectedelementisadocumenttypeandyouwanttolimitthescopeofthe searchtoaspecificpackage,selectthepackageinthePackagelistandthenclick Inspect.
69
Caching Elements
YoucanimproveperformanceinDeveloperbycachingNavigationpanelelementsthat arefrequentlyused.WhenelementsarelocatedintheDevelopercache,Developerdoes notneedtorequestthemfromtheIntegrationServerandcanthereforedisplaythem morequickly. To cache elements 1 2 3 OntheToolsmenu,clickOptions. IntheOptionsdialogbox,clickGeneral. UnderNavigation Panel,intheNumber of elements to cachebox,typethenumberof elementsthatyouwanttocacheperDevelopersession.Thetotalnumberofcached elementsincludeselementsonalltheserverstowhichyouareconnected. Theminimumnumberofelementsis10.Thehigherthenumberofelements,the morelikelyanelementwillbeinthecache,whichreducesnetworktrafficandspeeds upDeveloper. 4 ClickOK.Thecachingsettingstakeeffectimmediately. IfyouenteranillegalcachesizeDeveloperdisplaysanerrorandresetsthecachesize tothepreviousvalue. Note: Keepinmindthatincreasingthecachereducestheamountofavailablememory. Ifyouexperiencememoryproblems,considerdecreasingthenumberofcached elements.
70
To clear the Developer cache 1 2 3 OntheToolsmenu,clickOptions.DeveloperdisplaystheOptionsdialogbox. ClickGeneral. UnderNavigation Panel,clicktheClear Cache button.Allcachedelementsareremoved frommemory. Note: ClearingcachedelementsfromDeveloperisdifferentfromclearingthecontents ofthepipelinefromwebMethodsIntegrationServercache.Ifyouwanttoclearthe contentsofthepipelinefromaserverscache,seeConfiguringaServicesUseof Cacheonpage 142.
71
72
What Is a Package? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Package Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning Startup, Shutdown, and Replication Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Publishing and Retracting Information about Integration Server and Trading Networks Assets .
73
What Is a Package?
Apackageisacontainerthatisusedtobundleservicesandrelatedelements,suchas specifications,ISdocumenttypes,ISschemas,andoutputtemplates.Whenyoucreatea folder,service,specification,ISdocumenttype,ISschema,oroutputtemplate,yousaveit inapackage. Packagesaredesignedtoholdallofthecomponentsofalogicalunitinanintegration solution.Forexample,youmightgroupalltheservicesandfilesspecifictoaparticular marketplaceinasinglepackage.Bygroupingthesecomponentsintoasinglepackage, youcaneasilymanipulatethemasaunit.Forexample,youcancopy,reload,distribute, ordeletethesetofcomponents(thepackage)withasingleaction. Althoughyoucangroupservicesusinganypackagestructurethatsuitsyourpurpose, mostsitesorganizetheirpackagesbyfunctionorapplication.Forexample,theymight putallpurchasingrelatedservicesinapackagecalledPurchaseOrderMgtandalltime reportingservicesintoapackagecalledTimeCards. Ontheserver,apackagerepresentsasubdirectorywithinthe IntegrationServer_directory\packagesdirectory.Allthecomponentsthatbelongtoa packageresideinthepackagessubdirectory. Note: EveryelementinwebMethodsDevelopermustbelongtoapackage. ForalistanddescriptionofpackagesinstalledwiththeIntegrationServer,see AdministeringwebMethodsIntegrationServer.
Package Management
YoucanusewebMethodsDevelopertoperformcertainpackagemanagementtasks,such ascreating,copying,anddeletingpackages,ontheIntegrationServer.Whenyou performapackagemanagementtask,allofthefilesandservicesinthepackageare affected. Thefollowingtableidentifiesallofthepackagemanagementtasksthatcanbeperformed usingDeveloperortheIntegrationServerAdministrator.Ifyoucanperformthetask withDeveloper,theSeecolumndirectsyoutoapagewithinthisguideforinstructions. FortasksthatcanonlybeperformedusingtheIntegrationServerAdministrator,theSee columndirectsyoutoAdministeringwebMethodsIntegrationServer. To... Createapackage Activateapackage Copyapackagetoanotherserver Viewdetailsforapackage See... page 76 AdministeringwebMethodsIntegration Server page 79 page 77
74
See... AdministeringwebMethodsIntegration Server page 80 page 84and AdministeringwebMethodsIntegration Server page 88 page 81and AdministeringwebMethodsIntegration Server page 82and AdministeringwebMethodsIntegration Server page 83and AdministeringwebMethodsIntegration Server page 86
Assignaversionnumbertoapackage
Identifypackagesthatmustbeloaded beforeaspecificpackageisloaded(package dependencies) Exportapackageorpartialpackage Replicateorcopythecontentsofapackage andsend(publish)ittootherIntegration Servers Disableapackagewithoutdeletingthe package Enableapackagethatyoupreviously disabled Recoverservicesandrelatedfilesfroma deletedpackage Archiveacopyofthepackage(suchasfora backupcopy)
page 82 page 79and AdministeringwebMethodsIntegration Server AdministeringwebMethodsIntegration Server AdministeringwebMethodsIntegration Server AdministeringwebMethodsIntegration Server AdministeringwebMethodsIntegration Server
75
Creating a Package
Whenyouwanttocreateanewgroupingforservicesandrelatedfiles,createapackage. Packagescanstoreservices,specifications,ISdocumenttypes,outputtemplates,and schemas. Whenyoucreateapackage,Developercreatesanewsubdirectoryforthepackageinthe filesystemonthemachinewheretheIntegrationServerisinstalled.Forinformation aboutthesubdirectoryanditscontents,seeAdministeringwebMethodsIntegrationServer.
76
77
Definesthemaximumnumberofcachedlockstatesthatareretrieved.Thedefault valueis100.Afterthismaximumisreached,thelastknownlockstateforeach remainingelementisused.Thisstatemaybeincorrect,butasabove,theonlyresultis thatmenuitemsmaybeenabledordisabledincorrectly. Forexample,whenalargepackageisopened(usingthedefaultvalues):Fulllock statusinformationwillberetrievedforthefirst20elements.Forelements21100, cachedlockstateinformationwillberetrieved.Forelements101andabove,thelast knownlockstatewillbeused. 3 4 Savethefile. ShutdownandrestartDeveloper. Note: Thelowerthevaluesforthesesettings,themoretheperformancewillimprove. Applyingavalueofzero(0)tothesesettingswilleliminatealllockstatequeriestothe server.Thismayresultinsometemporarilyoutofsynclockstates,butthesewillbe updatedduringnormalDeveloperoperations. LockstateinformationisupdatedaschildelementsareopenedintheNavigation panel.
78
79
To copy a package 1 2 3 Selectthepackagethatyouwanttocopy. OntheEditmenu,clickCopy. Ifthepackageyouwanttocopycontainselementswithunsavedchanges,Developer alertsyouthatthepackagecannotbecopieduntilyousavethechanges.ClickOKto closethealertdialogbox.Then,savethechangesandrepeatthecopyaction. Selecttheserverwhereyouwanttocopythepackage. OntheEditmenu,clickPaste After. Tip! Youcanalsocopypackagesbyclickingthemanddraggingthemtotheirnew location.Developerretainsacopyofthepackageanditscontentsonthesource server.
4 5
Documenting a Package
Youcancommunicatethepurposeandfunctionofapackageanditsservicestoother developersbydocumentingthepackage. To create documentation for a package 1 DocumentthepackageinoneormoreWebdocuments(suchasHTMLpages).Be suretonamethehomepageforthepackagedocumentationindex.html.The index.htmlfilecancontainlinkstotheotherWebdocumentsforthepackage.An index.htmlfileexistsforeachpackageinstalledbytheIntegrationServer. PlacethedocumentsinthepubsubdirectoryforthepackageontheIntegration Server. Forexample,placethepackagedocumentationforapackagenamed PurchaseOrdersinthefollowingdirectory: IntegrationServer_directory\packages\PurchaseOrders\pub Tip! Analternatelocationforpackagedocumentationisthe IntegrationServer_directory\packages\docdirectory.Typically,thisdirectoryis usedforreferencematerialsuchasPDFsthatdonotneedtobepublishedtothe Web.
80
To access documentation for a package EntertheURLforthepackagedocumentation.TheURLsforpackagedocumentation havethefollowingformat: http://serverName:port/PackageName/DocumentName where: serverName:port PackageName DocumentName isthenameandportaddressoftheIntegrationServeronwhich thepackageresides. isthenameofthepackageforwhichyouwantdocumentation. isthenameoftheWebdocumentyouwanttoaccess.Ifyoudo notspecifyaDocumentName,theIntegrationServer automaticallydisplaystheindex.htmlfile.
Reloading a Package
Sometimes,youneedtoreloadapackageontheservertoactivatechangesthathavebeen madetoitoutsideofDeveloperorDesigner.Youneedtoreloadapackageifanyofthe followingoccurs: AJavaservicethatwascompiledusingjcodeisaddedtothepackage. Newjarfilesareaddedtothepackage. Anyoftheconfigurationfilesforthepackagearemodified. Note: ReloadingapackageisnotthesameasrefreshingtheNavigationpanel.When yourefreshtheNavigationpanel,webMethodsDeveloperretrievesafreshcopyof thecontentsofallthepackagesfromthememorytheIntegrationServer.Whenyou reloadapackage,theIntegrationServerremovestheexistingpackageinformation frommemoryandloadsnewversionsofthepackageanditscontentsintoits memory. To reload a package 1 2 IntheNavigationpanel,selectthepackageyouwanttoreload. OntheFilemenu,clickReload Package.
81
Deleting a Package
Whenyounolongerneedtheservicesandfilesinapackage,youcandeletethepackage. DeletingapackageremovesthepackageandallofitscontentsfromtheNavigation panel. WhenyoudeleteapackagefromDeveloper,theIntegrationServersavesacopyofthe package.Ifyoulaterwanttorecoverthepackageanditscontents,contactyourserver administrator.OnlyIntegrationServerAdministratoruserscanrecoverapackage.For moreinformationaboutrecoveringpackages,seeAdministeringwebMethodsIntegration Server. Beforeyoudeleteapackage,makesurethat: Otherusersorotherservicesdonotuse(dependon)theservices,templates,IS documenttypes,andschemasinthepackage.YoucanusetheFind Dependents commandtoidentifyotherservicesthataredependentonaserviceinapackagethat youwanttodelete.Formoreinformation,seeFindingDependentsandReferences onpage 64. Allelementsinthepackagethatyouwanttodeleteareunlocked,orlockedbyyou.If thepackagecontainselementsthatarelockedbyothersorsystemlocked,youcannot deletethepackage. To delete a package 1 2 IntheNavigationpanel,selectthepackageyouwanttodelete. OntheEditmenu,clickDelete.
82
83
InthePackage Versionfield,typetheversionnumberyouwanttoassigntothe package.Besuretoformattheversionnumberinoneofthefollowingways:X.Xor X.X.X(forexample,1.0,2.1, 2.1.3,or3.1.2). OntheFilemenu,clickSavetosaveyourchanges. Iftheversionnumberyouentereddoesnotuseoneoftheformatsspecifiedinstep 4, Developerdisplaysamessagestatingthattheformatisnotcorrect. Note: YoucanalsousetheIntegrationServerAdministratortoassignversionnumbers topackages.Formoreinformation,seeAdministeringwebMethodsIntegrationServer.
...and these fields track the patch history for the package.
84
Note: WiththeexceptionofthePackage versionfieldandthefieldsunderPackage dependencies,thefieldsontheSettingstabaredisplayonly. Note: Whentheserveradministratorinstallsafullreleaseofapackage(areleasethat includesallpreviouspatchesforthepackage),theIntegrationServerremovesthe existingpatchhistory.Thishelpstheserveradministratoravoidpotentialconfusion aboutversionnumbersandreestablishabaselineforpackageversionnumbers. To view patch history for a package 1 2 3 IntheNavigationpanel,selectthepackageforwhichyouwanttoviewapatch history. OntheFilemenu,clickOpen. Intheeditor,clickthepackagesSettingstabandreviewthefieldsunderPatch history. This field... Name Version Specifies... Thenameofthepackage. Theversionnumberofthepackage.Auserassignsaversion numberwhentheycreateapackagerelease.Bydefault,Developer assignsversion1.0toanewpackage. Thebuildnumberofthepackage.Thebuildnumberisageneration numberthatauserassignstoapackageeachtimethepackageis released.Forexample,ausermightreleaseversion1.0ofthe Financepackagetentimesandassignbuildnumbers1,2,310to thedifferentreleasesorbuildsofthepackage. TheBuildnumberisnotthesameastheVersionnumber.One versionofapackagemighthavemultiplebuilds. Description Time JVM Number Publisher Patch Number Abriefdescriptionofthepackagewrittenbytheuserwhocreated thepackagerelease. Thetimeatwhichthepackagerelease(patch)wascreated. TheversionoftheJVM(Javavirtualmachine)requiredtorunthe package. Thenameofthepublishingserverthatcreatedthepackagerelease. Thepatchnumbersincludedinthisreleaseofthepackage.
Build
85
IntheEnterInputValuesdialogbox,enterthefollowinginformation:
86
Specify... ThenameofthepackageyouwantIntegrationServertoloadbefore thepackageselectedintheNavigationpanel. TheversionnumberyouwantIntegrationServertoloadbeforethe packageselectedintheNavigationpanel. Morethanoneversionofthesamepackagemightcontainthe servicesandelementsthatadependentpackageneedsthe IntegrationServertoloadfirst.Youcanuseanasterisk(*)asa wildcardintheversionnumbertoindicatethatanyversionnumber greaterthanorequaltothespecifiedversionwillsatisfythepackage dependency.Forexample,tospecifyversion3.0orlaterofa package,type3.*fortheversionnumber.Tospecifyversions3.1or later,type3.1.*fortheversionnumber. Ifanyversionofthepackagesatisfiesthepackagedependency,type *.*astheversionnumber.
6 7
ClickOK. OntheFilemenu,clickSave. Important! Onlyoneversionofapackagecanbeinstalledatonetime.Iftheavailable versionofthepackagespecifiedinthepackagedependencyisnotthecorrectversion, theIntegrationServerdoesnotloadthedependentpackage.TheIntegrationServer writesadependencyloaderrorforthedependentpackagetotheserverlog. Important! Makesurethatyoudonotcreatecircularpackagedependencies.For example,ifyouidentifyFinanceUtilasadependentpackagefortheFinance package,donotidentifyFinanceasadependentpackagefortheFinanceUtil package.Ifyoucreatecircularpackagedependencies,neitherpackagewillloadthe nexttimeyoustarttheIntegrationServer.
87
To remove a package dependency 1 2 3 4 5 6 IntheNavigationpanel,selectthepackageforwhichyouwanttoremoveapackage dependency. OntheFilemenu,clickOpen. Intheeditor,clickthepackagesSettingstab. UnderPackage Dependencies,selectthepackagedependencyyouwanttoremove. Click .
OntheFilemenu,clickSave.
88
89
IntheEnterInputValuesdialogbox,intheServicefield,dooneofthefollowing:
c d
ClickOK. Repeatthesestepsforeachserviceyouwanttoaddasareplicationservice.
90
Toremoveastartupservice,underStartup services,selecttheserviceyouwantto removefrom Selected serviceslist,andclick . . Toremoveashutdownservice,underShutdown services,selecttheserviceyou wanttoremovefromtheSelected serviceslist,andclick Toremoveareplicationservice,underReplication services,selectthereplication serviceyouwanttoremoveandclick .
Publishing and Retracting Information about Integration Server and Trading Networks Assets
YoucanpublishandretractinformationaboutIntegrationServerandTradingNetworks assetstoasharedlibraryorregistrythatresidesinCentraSite.Bypublishingthis informationormetadata,youmaketheseassetsavailabletootherCentraSiteusers. ForIntegrationServer,youcanpublishandretractinformationaboutthefollowing assets:packages,folders,adapterservices,adapternotifications,flowservices,Java services,Cservices,specifications,documenttypes,Webservicedescriptors,andXSLT services. Note: IntegrationServerpublishes/retractsWebserviceconnectorsaspartof publishing/retractingaconsumerWebservicedescriptor. ForTradingNetworks,youcanpublishandretractinformationaboutTNdocument types.
91
IfyouwanttopublishISassetsinadditiontowebservices,publishtheproviderWeb servicedescriptorbypublishingtheentirepackage.Ifyouexpecttopublishonlyweb servicestoCentraSite,publishtheindividualproviderWebservicedescriptor throughtheUDDIRegistryview.Typically,userschooseonewayortheotherfor publishingWebserviceassets.Software AGdoesnotrecommendusingamixtureof publishingmethods. Onlyonemetadataoperationcanrunatatime.Ifyoutrytosubmitapublication requestwhilearetractionorpublicationrequestisalreadyrunning,youwillreceive theerrorOperation already in progressandyouwillhavetoresubmittherequest later.
92
To publish information about assets 1 2 OntheToolsmenu,selectMetadata > Publish > Execute. InthePublishMetadatadialogbox:
IfyouwantIntegrationServertoautomaticallypublishinformationaboutpackages uponwhichselectedpackagesdepend,selecttheAuto-select package dependencies checkbox. ClickOK. Toviewthestatusofthepublicationrequest,ontheToolsmenu,clickMetadata > Publish > Status.
Retracting Published Metadata about Integration Server and Trading Networks Assets
IfyoulaterdecideyouwanttoremoveanassetfromCentraSite,youcanretractit. KeepthefollowingpointsinmindwhenretractingmetadataforISandTNassets: ForanIntegrationServerasset,youmustretractthepackageinwhichtheasset resides. ForTradingNetworksassets,youmustretractallTNdocumenttypes. Youcannotretractapublishedassetthatisreferencedbyanotherpublishedasset untiltheassetthatestablishedthereferenceisretracted.Forexample,supposethat youpublishaprocess(processA),thatusesanISservice(serviceA).Then,you publishthepackage(packageA)thatcontainsserviceA.BecauseprocessAdepends onanassetinpackageA,youcanonlyretractpackageA(andanyofitscontents)after youretractprocessA.IfyouchangeprocessAsothatitnolongerreferencesserviceA andrepublishprocessA,youcanretractpackageA. Onlyonemetadataoperationcanrunatatime.Ifyoutrytosubmitapublication requestwhilearetractionorpublicationrequestisalreadyrunning,youwillreceive theerrorOperation already in progressandyouwillhavetoresubmittherequest later. Note: BeforeuninstallingIntegrationServer,retractallpublishedISandTNassets. ThiswillpreventorphanedassetsinCentraSite.
93
To retract information about assets 1 2 OntheToolsmenu,selectMetadata > Retract > Execute. IntheRetractMetadatadialogbox:
3 4
94
Field Status
Description Oneofthefollowingstates:
Starting Counting Counted
IntegrationServerisstartingtherequest.Thisis alwaystheinitialstatewhenarequestissubmitted. IntegrationServeriscountingthenumberofassetsin thepackageorthenumberofTNdocumenttypes. IntegrationServerhascompletedcountingthenumber ofassetsinthepackageorthenumberofTN documenttypes.Thetotalnumberisdisplayedinthe Assetscolumn. IntegrationServerisextractingthemetadatafor selectedassets. Forpublicationrequestsonly:IntegrationServeris sendingthemetadatatoCentraSite. Forpublicationrequests,IntegrationServerhas finishedsendingthemetadatatoCentraSite. Forretractionrequests,IntegrationServerhasfinished retractingthemetadatafromCentraSite.
Thefollowingsummaryfieldsaredisplayedatthebottomofthescreen: Field Status Assets Duration Description Theoverallstatusofthemostrecentpublicationorretraction request. Thetotalnumberofassetsprocessedinthemostrecentpublication orretractionrequest. Thetime(inhh:mm:ss)spentexecutingthemostrecentpublication orretractionrequest.
95
96
Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Locking Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unlocking Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
Basic Concepts
InwebMethodsDeveloper,youcanmanagechangestoelementsduringdevelopmentby lockingthem.Thispreventstwodifferentusersfromeditinganelementatthesametime. Youcanlockelementssuchasflowservices,Javaservices,schemas,andspecifications. AllelementsinDevelopersNavigationpanelarereadonlyuntilyoulockthem.Youcan editanelementonlyifyouownthelockontheelement.However,youcanuseandruna serviceregardlessofitslockstatus,aslongasyouhaveExecuteaccesstotheservice.For details,seeChapter 5,AssigningandManagingPermissions. ThischapterdescribeslocallockingontheIntegrationServer,whichisthedefault lockingmodeofDeveloper.IfyouenableDevelopersVCSIntegrationfeature,elements arelockedandunlockedwhenyoucheckthemoutoforintoyourversioncontrolsystem repository.FormoreinformationaboutimplementingandusingtheVCSIntegration feature,seeStoringServicesinaVersionControlSysteminthe Software AG_directory\_documentationdirectory.
What Is a Lock?
Alockonanelementpreventsanotheruserfromeditingthatelement.Therearetwo typesoflocks:userlocksandsystemlocks.Whenanelementislockedbyyou,youhavea userlock.TheelementisreadonlytoallotherusersontheIntegrationServer.Another usercannotedittheelementuntilyouunlockit. Whenanelementssupportingfiles(node.xml,forexample)aremarkedreadonlyonthe IntegrationServer,theelementissystemlocked.Forexample,theserveradministratorhas theabilitytomarkanelementssupportingfilesontheserverasreadonly,inwhichcase theyaresystemlocked.Toedittheelement,youmustasktheserveradministratorto removethesystemlock(thatis,maketheelementsfileswritable),andthenyoumust reloadthepackageinwhichtheelementresides. Important! WhenanIntegrationServerhastheVCSIntegrationfeatureenabled, systemlockingiseffectivelydisabledforelementsthatarecheckedintotheversion controlsystem.TheVCSIntegrationfeaturewilloverrideanyread/writestatus changesappliedmanuallybyaserveradministrator.
98
ElementsareshowninthefollowingwaysinDeveloper: Element Status Notlocked Lockedbyyou Lockedbyanotheruser Lockedbythesystem Can I edit? No Yes No No How do I gain rights to edit? ClickFileLock for Edit. N/A Contacttheusertounlock. Contacttheserver administratortounlock.
99
Locking Elements
Beforeyoueditanelement,youmustlockit.Thisensuresthatyouaretheonlyperson workingonaparticularelementatatime,preventingthelossofchanges.Elementscan onlybelockedbyoneuseratatime.Iftheelementyouneedisalreadylocked,request thatthecurrentownerofthelockreleaseit.Iftheelementissystemlocked,requestthat theserveradministratorreleaseitbymakingthecorrespondingserverfileswritable.
Locking Elements
ElementsarelockedbywebMethodsusername(thenameyouusetologontothe IntegrationServer).Becauseofthis,itisimportantthatyouuseadistinctusernametolog ontotheserver.Ifyouchangeusernames,youwillbeunabletoeditorunlockitemsthat youlockedusingyouroldusername. Whenlockingelements,keepthefollowingpointsinmind: Whenyoucreateanewelement,itislockedautomaticallyforyou. Inordertolockanelement,youmusthaveWriteaccessrightstoit.Fordetails,see Chapter 5,AssigningandManagingPermissions. Whenyoulockanelement,Developerobtainsandlocksthelatestversionofthe elementthathasbeensavedonthewebMethodsIntegrationServer. Elementsgeneratedbyaservice(includinganadapterservice)arenotlocked automatically. Whenyouselectmultipleelementstolock,someelementsintheselectionmaynotbe availabletolockbecausetheymaybesystemlocked,lockedbyanotheruser, elementstowhichyoudonothaveWriteaccess,orelementsthatcannotdirectlybe locked.Developerwillnotifyyouthattheseelementscannotbelockedandwilllock therest. Whenyoulockanadapternotification,Developeralsolocksitsassociated publishabledocumenttype.Youcannotdirectlylockthepublishabledocumenttype associatedwithanadapternotification. Whenyoulockafolderorpackage,youonlylockexisting,unlockedelementswithin it.Otheruserscanstillcreatenewelementsinthatfolderorpackage. Note: UserscannotcreateJavaandC/C++servicesinafolderorpackagewhile otherusersownthelockonthefolderorpackage.Thesetypesofservicesrequire thatallexistingJavaandC/C++servicesinthefolderareunlockedandtheuser hasWriteaccesstoallJavaandC/C++servicesinthefolder.Fordetails,see LockingJavaandC/C++Servicesonpage 101.
100
WhenyoulockaJavaorC/C++service,DeveloperlocksallotherJavaorC/C++ serviceswithinthefolder.Fordetails,seeLockingJavaandC/C++Serviceson page 101. Youcannotlockalistenerorconnectionelement. To lock elements 1 2 IntheNavigationpanel,selecttheelementsthatyouwanttolock. OntheFilemenu,clickLock for Edit. Iftheelementsweresuccessfullylocked,agreencheckmarkappearsnexttotheir iconsintheNavigationpanel.Ifoneormoreoftheelementscouldnotbelocked(for example,iftheyaresystemlocked,lockedbyanotheruser,orelementstowhichyou donothaveWriteaccess),Developerdisplaysadialogboxlistingthem.For informationabouttroubleshootinglockproblems,seeLock/UnlockProblemson page 109. Tip! Youcanalsolockanelementthatisopenintheeditorbyrightclickingthe elementstabortitlebarandthenclickingLock for Edit.
101
Before you save a Java or C/C++ service, multiple corresponding files must be writable on the server. AsingleJavaorC/C++servicecorrespondstothefollowingfiles:
.java .class .ndf .frag(maynotbepresent)
BeforeyousaveaJavaorC/C++service,alloftheprecedingfilesmustbewritable. Therefore,makesurethatallsystemlocksareremovedfromthosefilesbeforesaving.
Locking Templates
AtemplatecanbeusedwithoneormoreservicesontheIntegrationServer.Currently, youcannotlockatemplateasanentity,onlytheservicetowhichitisattached.Following areconsiderationsforworkingwithtemplatesinacooperativedevelopment environment. To create or edit a template for a service,youmusthavetheservicelocked. The template for a service can change without your knowledge.Sinceatemplatecanbe attachedtooneormoreservices,keepinmindthatasharedtemplatecanchange withoutyourknowledge.Forexample,ifyourtemplateisattachedtoaservicethat anotheruserlocksandedits,thatusercanchangeyourtemplate.
a Unix system.
102
103
To list all elements locked by you OntheTools menu,clickMy Locked Elements.TheMyLockedElementsdialogbox appears. My Locked Elements dialog box
Unlocking Elements
Afteryoueditanelementandsavechangestotheserver,youshouldunlockittomakeit availabletootherusers.Thereareseveralwaystounlockelements,dependingon whetheryouareamemberoftheDevelopersACLortheAdministratorsACL.Ifyouare adeveloper,youcanunlockelementsinDeveloper.Ifyouareanadministrator,youcan unlockelementsintheIntegrationServerAdministratoraswellasinDeveloper.
104
To unlock elements using Developer 1 IntheNavigationpanel,selecttheelementsthatyouwanttounlock. Note: Besuretosavechangestotheelementsbeforeyouattempttounlockthem. 2 3 OntheFilemenu,clickUnlock. Iftheelementsyouwanttounlockcontainunsavedchanges,Developeralertsyou thattheelementscannotbeunlockeduntilyousavethechanges.ClickOKtoclosethe alertdialogbox.Then,savethechangesandrepeattheunlockaction. Ifoneoftheelementsyouselectedtounlockisapublishabledocumenttype associatedwithanadapternotification,andyoudidnotalsoselecttheadapter notification,Developeralertsyouthattheelementscannotbeunlocked.ClickOKto closethealertdialogbox.Then,reselecttheelements(includingtheappropriate adapternotifications)andrepeattheunlockaction.
105
106
Locked by System. Listselementswhosecorrespondingfilesaremarkedreadonly ontheserverfilesystem.YoucannotremoveasystemlockviatheServer Administrator.Ontheserversfilesystem,youmustmaketheelementsfiles writableandreloadthepackage.Fordetails,seeUnlockingaSystemLocked Elementonpage 107. Locked by Current User. Listselementsthatarelockedbyyou,theserver administrator(ortheusernamewithwhichyouloggedontotheIntegration ServerAdministrator).Beforeyouunlockanitem,makesurethatyouhavesaved allchangestotheserver. Locked by Other Users. Listselementsthatarelockedbyotherusersontheserver. Beforeyouremoveauserslock,makesurethattheuserhassavedallchangesto theserver.Ifnot,theuserwillloseallchangesthattheymadetotheelementsince theylastsavedittotheserver.
Selecttheelementsthatyouwanttounlock(afterinformingusersifnecessary)and clickUnlock Selected Elements. DevelopersusingwebMethodsDevelopershouldrefreshtheirNavigationpanelto updatetheirviewofthelockstatusofallelements. Important! Ifyoureceiveafailedtounlockmessage,itmeansthattheserverfilesfor alockedelementweredeletedfromtheserver.UsetheSync to Name Spacecommand toupdatetheIntegrationServerAdministratorsviewoflockedelements.
2 3
107
108
To automatically unlock flow services, IS document types, and specifications after saving
To
1 2 3 4
Troubleshooting
Thissectionaddressescommonproblemsthatmayarisewhenimplementingcooperative developmentwithwebMethodscomponents.
Lock/Unlock Problems
The Lock for Edit and Unlock commands are disabled. Possiblecausesare: TheIntegrationServertowhichyouareconnectedmayhavethe watt.server.ns.lockingModepropertyconfiguredtonolockingorsystemlocking only.Fordetails,contactyourserveradministrator. Youhaveselectedmultipleelementstolockorunlockandyourselectioncontainsof oneormoreofthefollowing:
When I try to lock an element, I get an exception message. Theelementmaybelockedbysomeoneelse,systemlocked(markedreadonlyonthe server),oryoumaynothaveWriteaccess.RefreshtheNavigationpanel.Ifalockisnot shownbutyoustillcannotlocktheelement,reloadthepackage.Inaddition,makesure thatyouareamemberoftheACLassignedforWriteaccesstotheelementbychecking theelementsPermissionspropertyinthePropertiespanel. I cant unlock a Java or C service. IfthereisanotherJavaorCservicethatislockedbyanotheruserorsystemlockedinthe samefolder,thenyoucannotunlockanyJavaorCservicesinthatfolder.Thisisbecause thoseservicessharethesame.javaand.classfilesontheIntegrationServer. I cant unlock elements since I changed my username. Youcanonlyunlockelementsthatyouhavelockedwithyourcurrentusernameforthe session.Ifyouhavechangedusernames,logbackintotheserverwithyouroldusername andthenunlocktheelements.
109
Iftheadministratorhasdeletedyourusername,contacthimorhertounlocktheelements ontheserver.YoucanassisttheadministratorbyusingtheLock Statuscommandto identifythenamesofthesystemlockedfilesontheserverthatneedtobeunlocked. Another user unlocked an element, but it still shows as locked in my Navigation panel. IfitisaJavaorCservice,reloadthepackageintheNavigationpanel.Ifitisanyother element,usetheRefreshcommandtorefreshtheNavigationpanel. I receive an element failed to unlock message when I try to unlock elements in the Integration Server Administrator. Thisindicatesthattheserverfilesforthelockedelementweredeletedfromtheserver. YouneedtoupdatetheIntegrationServerAdministratorslistofunlockedelementsby clickingSync to Name SpaceontheUnlockSelectedElementsscreen.TheSync to Name Spacecommandrunsautomaticallywhentheserverisstartedorrestarted.
Save Problems
When I try to save an element that I have locked, I get an exception message. Duringthetimethatyouhadthelock,theelementbecamesystemlocked,itsACLstatus changed,oraserveradministratorremovedyourlockandanotheruserlockedthe element.Iftheexceptionmessageindicatesthatafileisreadonly,thenoneorallofthe filesthatpertaintothatelementontheserveraresystemlocked.Contactyour administratortoremovethesystemlock.Afterthisisdone,youcansavetheelementand yourchangeswillbeincorporated. IftheexceptionmessageindicatesthatyoucannotperformtheactionwithoutACL privileges,thentheACLassignedtotheelementhasbeenchangedtoanACLinwhich youarenotanAlloweduser.Topreserveyourchangestotheelement,contactyour serveradministratorto: 1 2 3 4 Removeyourlockontheelement. Locktheelement. EdittheACLassignedforWriteaccesstotheelement,togiveyouaccess. Unlocktheelement.
Youcanthensaveyourchangestotheelement.
110
Other Problems
I cant create a new Java or C service. AnotherJavaorCserviceislockedinthefolderinwhichyouwanttocreatethenew service,oryoudonothaveWriteaccesstoallJavaorCservicesinthefolder.Allofthem mustbeunlockedorlockedbyyouandyoumusthaveWriteaccesstoaddanewJavaor Cservicetothesamefolder.SeeLock/UnlockProblemsonpage 109. I cant delete a package. Oneoftheelementsinthatpackageissystemlocked(readonly)orlockedbyanother user.Contactyouradministratororcontacttheuserwhohastheelementlockedinthe package. The webMethods Integration Server went down while I was locking or unlocking an element. Theactionmayormaynothavecompleted,dependingontheexactmomentatwhichthe serverceasedaction.Whentheserverisbackup,restoreyoursessionandlookatthe currentstatusoftheelement.
111
Where is the lock information stored (such as names of elements that are locked, when they were locked, etc.)? TheinformationisstoredinternallyinRepositoryversion4,andintheVCSrepository,if youareusingVCS. Important! Donotperformdevelopmentworkinaclusteredenvironment.Basic namespacelockingandtheWmVCSpackagearenotsupportedacrossIntegration Serversinacluster. Should I archive derived files? Generally,youshouldnotarchivederivedfilessuchasthe.classfilethatisgenerated whenyoucompileaJavaservice. What happens to the locks on elements when I replicate a package? Lockinginformationisnotpreservedwhenyoureplicateandpublishapackage.Thisis expectedbehaviorandispartofthefeaturesdesign.Youcan,however,preservesystem locks(readonlyfileattributes).
112
Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning ACLs to Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing ACL Information on a Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How ACLs Affect Other Developer Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
113
Basic Concepts
Inadditiontocontrollingaccesstoelementsonanindividualuserbasisusinglocking, youcanalsocontrolaccessbygroupsofusersusingaccesscontrollists(ACLs).Typically createdbyasystemadministrator,ACLsallowyoutorestrictaccessonabroaderlevel. Forexample,ifyouhaveaproductionpackageandadevelopmentpackageonthe webMethodsIntegrationServer,youcanrestrictaccesstotheproductionpackageto usersinanAdministratorsACL,andrestrictaccesstothedevelopmentpackagetousers inaDevelopersACL. WithinACLs,youcanalsoassigndifferentlevelsofaccess,dependingontheaccessthat youwantdifferentgroupsofuserstohave.Forexample,youmaywantaTesterACL toonlyhaveReadandExecuteaccesstoelements.Or,youmaywantaContractorACL thatdeniesListaccesstosensitivepackagesonthewebMethodsIntegrationServer,so thatcontractorsneverseetheminwebMethodsDeveloper.
What Is an ACL?
AnACLcontrolsaccesstopackages,folders,andotherelements(suchasservices,IS documenttypes,andspecifications)atthegrouplevel.AnACLidentifiesgroupsofusers thatareallowedtoaccessanelement(AllowedGroups)and/orgroupsthatarenot allowedtoaccessanelement(DeniedGroups).WhenidentifyingAllowedGroupsand DeniedGroups,youselectfromgroupsthatyouhavedefinedpreviously. Therearefourdifferentkindsofaccess:List,Read,Write,andExecute. Listcontrolswhetherauserseestheexistenceofanelementanditsmetadata;thatis, itsinputandoutput,settings,andACLpermissions.Theelementwillbedisplayed onscreensintheDeveloperandtheIntegrationServerAdministrator. Readcontrolswhetherausercanviewthesourcecodeandmetadataofanelement. Writecontrolswhetherausercanupdateanelement.Thisaccessalsocontrols whetherausercanlock,rename,ordeleteanelementorassignanACLtoit. ExecutecontrolswhetherausercanexecuteaserviceoraWebservicedescriptor. Formoredetailsaboutthesetypesofaccess,seeAdministeringwebMethodsIntegration Server.
114
Bydefault,whenaclientrequestsaservice,webMethodsIntegrationServerchecksonly theACLoftheexternallyinvokedservice(theservicerequesteddirectlybytheclient). TheserverdoesnotchecktheACLsofanyoftheinternallyinvokedservices(those servicesinvokedbytheexternallyinvokedservice).However,youcansetupthesecurity settingsforaservicesothatwebMethodsIntegrationServercheckstheACLassignedto theserviceeverytimeitisinvoked,whetherdirectlybyaclientorbyanotherservice.For details,seeThePermissionsPropertiesonpage 118. ThefollowingdiagramillustratesthepointsatwhichACLcheckingoccurswhenaclient requestsaservice. ACL checking when a client requests a service
webMethods Integration Server Client
Stage
1
Description Theclient(suchasanotherapplicationoraDSP)requeststhePurch:SubmitPO serviceonthelocalwebMethodsIntegrationServer.webMethodsIntegration ServercheckstheACLofthePurch:SubmitPOservice(theexternallyinvoked service).Theserverexecutestheserviceonlyiftheclientisinvokingtheservice onthebehalfofauserthatisamemberofanallowedgroupandisnota memberofadeniedgroupfortheACLassignedtotheservice. ThePurch:SubmitPOserviceinvokesthePurch:LogPOservice.Becausethe Purch:LogPOserviceisinvokedbytheexternallyinvokedserviceandislocated onthesameserverastheexternallyinvokedservice,webMethodsIntegration ServerconsidersthePurch:LogPOservicetobeinternallyinvoked. Consequently,theserverdoesnotchecktheACLofthePurch:LogPOservice beforeexecutingit.
115
Stage
3
Description ThePurch:SubmitPOserviceinvokesthePurch:CreditAuthservice.Likethe Purch:LogPO service,webMethodsIntegrationServerconsidersthe Purch:CreditAuthservicetobeaninternallyinvokedservice.Consequently,the serverdoesnotchecktheACLofthePurch:CreditAuthservicebeforeexecutingit. ThePurch:SubmitPOserviceinvokesthePurch:SendPOservice.LikethePurch:LogPO andPurch:CreditAuthservices,webMethodsIntegrationServerconsidersthe Purch:SendPOservicetobeaninternallyinvokedservice.Theserverdoesnot checktheACLofthePurch:SendPOservicebeforeexecutingit.
Note: Ifthesecuritysettingsforthe Purch:LogPO,Purch:CreditAuth,orPurch:SendPO servicesspecifythatACLcheckingoccurseverytimetheserviceisinvoked(Enforce execute ACLoptionissettoAlways),webMethodsIntegrationServerwouldperform ACLcheckingwhentheexternallyinvokedservice(Purch:SubmitPO)invokedthese services.FormoreinformationaboutrequiringACLchecking,seeAssigningACLs toElementsonpage 117. Note: AnyservicethatthePurch:SubmitPOflowserviceinvokescouldalsobeinvoked directlybytheclient.Forexample,iftheclientdirectlyinvokesthePurch:SendPO service,theservercheckstheACLofthePurch:SendPOservice.Iftheclientisinvoking theserviceonthebehalfofauserthatisamemberofanallowedgroupandnota memberofadeniedgroup,thentheserverexecutesthePurch:SendPO service.
116
2 3 4 5
117
InthePermissionscategoryofthePropertiespanel,selecttheACLsthatyouwantto assignforeachlevelofaccess.Fordetails,seeThePermissionsPropertieson page 118. Important! ForList,Read,andWriteaccess,youcanonlyassignACLsofwhichyou areamember.IfyoucannotassignanACLtoanelementforList,Read,orWrite access,youprobablyarenotamemberofausergroupintheAllowedlistofthat ACL.Toverify,usetheToolsACL Informationcommand.Toobtainaccesstoan ACL,contactyourserveradministrator.
Savetheelement.Ifanerrormessageappears,checktomakesurethatyouarea memberofeachACLthatyouassignedtotheelement.
An element can have different ACLs assigned for each level of access.
Field / Button List ACL Read ACL Write ACL Execute ACL
118
Description When top-level service only.TheIntegrationServerperformsACL checkingagainsttheservicewhenitisdirectlyinvokedfromaclient orDSP.Forexample,supposeaclientinvokestheOrderPartsservice onserverA.Aftercheckingportaccess,serverAcheckstheExecute ACLassignedtoOrderPartstomakesuretherequestinguseris allowedtoruntheservice.ItdoesnotchecktheExecuteACLwhen otherservicesinvokeOrderParts. Always.TheIntegrationServerperformsACLcheckingagainstthe servicewhenitisdirectlyinvokedfromaclientaswellaswhenitis invokedfromotherservices.Forexample,supposetheOrderParts serviceisinvokedfromabrowser,aswellasbytheProcessOrderand AddToDatabaseservices.IfAlwaysissetonOrderParts,theserver performsACLcheckingonOrderPartsthreetimes(oncewhenitis invokedfromthebrowserandtwicewhenitisinvokedby ProcessOrderandAddToDatabase).
119
Field ACLs
Description TheACLsdefinedontheIntegrationServertowhichyouare connected.TheseincludethedefaultACLsthatwereinstalledwith theserver. Allowed.Theusergroup(s)thathavebeenexplicitlyallowedto accessthepackages,folders,services,orotherelements associatedwiththisACL. Denied.Theusergroup(s)thathavebeenexplicitlydeniedaccess tothepackages,folders,services,orotherelementsassociated withthisACL.
120
121
Troubleshooting
I receive a Cannot perform operation without Write ACL privileges message when I try to create an element. YouarenotamemberoftheACLassignedtothefolderinwhichyouwanttosavethe element.Toverify,checkthePermissionscategoryofthePropertiespanel.Ifyouhad previouslybeenabletosavetheelement,theACLsettingsmayhavechangedonthe serversinceyoulastsavedit.SeeTroubleshootingonpage 109inChapter 4,Locking andUnlockingElements. I receive an element already exists message when I try to create an element. TheremaybeanelementwiththesamenameontheIntegrationServer,butyoumaynot beabletoseeitbecauseyoudonothaveListaccesstoit.Tryadifferentelementname,or contactyourserveradministrator. I cant assign an ACL to an element. MakesurethatyouhavelockedtheelementandthatyouareamemberoftheList,Read, orWriteACLthatyouwanttoassign.Toverify,usetheToolsACL Informationcommand. I cant see the source of a flow or Java service. However, I can see the input and output. YoudonothaveReadaccesstotheservice.Contactyourserveradministratortoobtain access.
122
I receive an exception when I try to lock an element. Theelementmaybelockedbysomeoneelse,systemlocked(markedreadonlyonthe server),oryoumaynothaveWriteaccess.RefreshtheNavigationpanel.Ifalockisnot shownbutyoustillcannotlocktheelement,reloadthepackage.Inaddition,makesure thatyouareamemberoftheACLassignedforWriteaccesstotheelement.Todoso,click thePermissionscategoryofthePropertiespanel. I receive an error when I run a command on the Test menu. YoumusthaveaminimumofReadaccesstotraceorstepthroughaservice.Ifyoudont haveReadaccesstotheservicewhenyouaretracing,tracinginto,steppingthrough,or steppingintoaservice,youwillreceiveanerrormessage. IfyoudohaveReadaccesstoaservicebutyoudonothaveReadaccesstoaserviceit invokes,Developerstepsovertheinvokedservicebutdoesnotdisplayanerror message. YoumustalsohaveReadaccesstoaservicetosetabreakpointintheserviceorsendan XMLdocumenttotheservice. I receive an exception when I try to go to a referenced service from the pipeline. YoudonothaveListaccesstothereferencedservice.Contactyourserveradministrator. I receive a Couldnt find in Navigation panel message when I try to find a service in the Navigation panel. However, I know it is on the Integration Server. IfyoudonotseetheservicelistedintheNavigationpanel,youprobablydonothaveList accesstothatservice.Contactyourserveradministrator. I cant copy and paste a Java service. ChecktomakesurethatyouhaveWriteaccesstoallJavaservicesinthefolderintowhich youwanttopastetheservice,aswellasWriteaccesstothefolderitself.
123
124
Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Process Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a New Flow Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Declaring Input and Output Parameters for a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning an Output Template to a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Run-Time Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring Service Retry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning Universal Names to Services and Document Types . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring Service Auditing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Printing a Flow Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
125
Basic Concepts
Tosuccessfullybuildaflowservice,youshouldunderstandthefollowingbasicconcepts andterms.
2 3 4
Anyservicecanbeinvokedwithinaflow(includingotherflowservices).Forinstance,a flowmightinvokeaservicethatyoucreate,anyofthebuiltinservicesprovidedwiththe webMethodsIntegrationServer,and/orservicesfromawebMethodsaddonproduct suchasthewebMethodsJDBCAdapter. YoucreateflowservicesusingDeveloper.TheyaresavedinXMLfilesonwebMethods IntegrationServer. Important! AlthoughflowservicesarewrittenasXMLfiles,theyaremaintainedina formatthatcanonlybecreatedandunderstoodbyDeveloper.Youcannotcreateor editaflowservicewithatexteditor.
126
INVOKE Purch:GetOrders A LOOP step repeats a set of flow steps LOOP PurchaseOrders INVOKE Purch:LogOrder INVOKE Purch:CreditAuth A BRANCH step selects a specified flow step for execution BRANCH AuthOK INVOKE Purch:PostPO INVOKE Purch:BouncePO
Aflowservicecancontainthefollowingtypesofflowsteps: Invocation Steps INVOKE Data-Handling Steps MAP Performsspecifiededitingoperationsonthepipeline(suchas mappingvariablesinthepipeline,addingvariablestothe pipeline,anddroppingvariablesfromthepipeline).Formore informationaboutthisstep,seeTheMAPSteponpage 200. Executesaspecifiedservice.Formoreinformationaboutthis step,seeTheINVOKESteponpage 173.
127
Control Steps BRANCH Executesaspecifiedflowstepbasedonthevalueofaspecified variableinthepipeline.Formoreinformationaboutthisstep, seeTheBRANCHSteponpage 176. Executesasetofflowstepsonceforeachelementina specifiedarray.Formoreinformationaboutthisstep,seeThe LOOPSteponpage 194. Reexecutesasetofflowstepsuptoaspecifiednumberof timesbasedonthesuccessfulornonsuccessfulcompletionof theset.Formoreinformationaboutthisstep,seeThe REPEATSteponpage 186. Groupsasetofflowstepsintoaseries.TheSEQUENCEstepis implicitinmostflowservices(thatis,thestepsinaflow servicearetreatedasaseries).However,attimesitis necessarytoexplicitlygroupasubsetofflowstepsusing SEQUENCEsothattheycanbetreatedasaunit.Formore informationaboutthisflowstep,seeTheSEQUENCEStep onpage 192. Controlstheexecutionofaflowstep(forexample,abortan entireflowservicefromwithinaseriesofdeeplynestedsteps, throwanexceptionwithoutwritingaJavaservice,orexita LOOPorREPEATwithoutthrowinganexception).Formore informationaboutthisstep,seeTheEXITSteponpage 198.
LOOP
REPEAT
SEQUENCE
EXIT
128
The pipeline holds the input and output for a flow service
Services in a flow get their input from and place their output in the pipeline. Flow Service input INVOKE Purch:LogPO output input INVOKE Purch:CreditAuth output input INVOKE Purch:ConvertDate output input INVOKE Purch:SendPO output The Pipeline ONum:46-77135 Name:Kings Sport Phone:201-887-1544 TNum:128824993554 Acct:128824993554 Total:5732.78 Qty:20 AuthNum:TW99123554 Date:04/04/99 Item:PK8801-NS OrderDate:19990404 Ship:UPS Ground Terms:30N Freight:65.00 Status:Received
Whenyoubuildaflowservice,youuseDevelopertospecifyhowinformationinthe pipelineismappedtoandfromservicesintheflow.
Partoftheprocessofcreatingaserviceisdeclaringitsinputandoutputparameters(that is,explicitlyspecifyingthefieldsitexpectsasinputandproducesasoutput).
129
A Process Overview
Buildingaflowserviceisaprocessthatinvolvesthefollowingbasicstages:
Stage 1
Creating a new service on webMethods Integration Server.Duringthisstage, youcreatethenewserviceonthewebMethodsIntegrationServerwhere youwilldoyourdevelopmentandtesting.Forinformationaboutthis stage,seeCreatingaNewFlowServicewhichfollows. Inserting flow steps into the new service. Duringthisstage,youspecifythe workthatyouwanttheservicetoperformbyaddingflowstepstothe service.Forinformationaboutthisstage,seeChapter 7,InsertingFlow Steps. Declaring the input and output parameters of the service. Duringthisstage,you definetheservicesinputsandoutputs.Forinformationaboutthisstage, seeDeclaringInputandOutputParametersforaServiceonpage 133. Mapping pipeline data. Duringthisstage,yourouteinputandoutput variablesbetweenservicesthatareinvokedintheflow.Forinformation aboutthisstage,seeChapter 8,MappingDatainaFlowService. Specifying the run-time parameters.Duringthisstage,youassignparameters thatconfiguretheruntimeenvironmentforthisservice.Forinformation aboutthisstage,seeSpecifyingRunTimeParametersonpage 141. Formatting service output.Duringthisstageyoucancreateanoutput templatetoformattheserviceoutput.Forinformationaboutthisstage, seeAssigninganOutputTemplatetoaServiceonpage 138orreferto theDynamicServerPagesandOutputTemplatesDevelopersGuide. Testing and debugging. Duringthisstageyoucanusethetoolsprovidedby Developertotestanddebugyourflowservice.Forinformationaboutthis stage,seeChapter 11,TestingandDebuggingServices.
Stage 2
Stage 3
Stage 4
Stage 5
Stage 6
Stage 7
Theremainingsectionsinthischapterandthefollowingchaptersprovidedetailed informationabouteachstage.
130
131
132
Declaring parameters makes the input and output requirements of your service known to other developerswhomaywanttocallyourservicefromtheirprograms. Forthesereasons,westronglyrecommendthatyoumakeitapracticetodeclareinput andoutputparametersforeveryservicethatyoucreate.
133
Note: Thepurposeofdeclaringinputparametersistodefinetheinputsthata callingprogramorclientmustprovidewhenitinvokesthisflowservice.Youdo notneedtodeclareinputsthatareobtainedfromwithintheflowitself.For example,iftheinputforoneserviceintheflowisderivedfromtheoutputof anotherserviceintheflow,youdonotneedtodeclarethatfieldasaninput parameter. When possible, use variable names that match the names used by the services in the flow. Variableswiththesamenameareautomaticallylinkedtooneanotherinthepipeline. (Rememberthatvariablenamesarecasesensitive.)Ifyouusethesamevariable namesusedbyflowsconstituentservices,youreducetheamountofmanualdata mappingthatneedstobedone.Whenyouspecifynamesthatdonotmatchtheones usedbytheconstituentservices,youmustusethePipelinetabtomanuallylinkthem tooneanother.ForinformationaboutthePipelinetab,seeWhatDoesthePipeline TabContain?onpage 202. Avoid using multiple inputs that have the same name.AlthoughDeveloperpermitsyouto declaremultipleinputparameterswiththesamename,thefieldsmaynotbe processedcorrectlywithintheserviceorbyservicesthatinvokethisservice. Make sure the variables match the data types of the variables they represent in the flow. For example,ifaserviceintheflowexpectsadocumentlistcalledLineItems,definethat inputvariableasadocumentlist.Or,ifaserviceexpectsaDateobjectcalled EmploymentDate,definethatinputvariableasanObjectandapplythejava.util.Date objectconstrainttoit.Foracompletedescriptionofthedatatypessupportedby Developer,seeAppendix C,SupportedDataTypes. Declared input variables appear automatically as inputs in the pipeline.Whenyouselectthe firstserviceorMAPstepintheflow,thedeclaredinputsappearunderPipeline In. Important! Ifyoueditacachedservicebychangingtheinputs(notthepipeline),you mustresettheservercache.Ifyoudonotresetit,theoldcachedinputparameterswill beusedatruntime.ToresettheservicecachefromDeveloper,selecttheserviceand thenclicktheResetbuttonnexttoReset CacheinthePropertiespanel.Toresetthe servicecachefromIntegrationServerAdministrator,selectService UsageunderServer intheNavigationpanel.Selectthenameoftheserviceandaninformationscreenfor thatserviceappears.ClickReset Server Cache. Note: IfyouintendtousethisservicewithaBroker/localtriggeroraJMStrigger, makesuretheinputsignatureconformstotherequirementsforeachofthosetrigger types.FormoreinformationaboutcreatingBroker/localtriggers,seethePublish SubscribeDevelopersGuide.FormoreinformationaboutcreatingJMStriggers,seethe webMethodsIntegrationServerJMSClientDevelopersGuide.
134
135
Foraflowservice,theinputsidedescribestheinitialcontentsofthepipeline.Inother words,itspecifiesthevariablesthatthisflowserviceexpectstofindinthepipelineatrun time.Theoutputsideidentifiesthevariablesproducedbytheflowserviceandreturned tothepipeline. Youcancompletethe Input/Outputtabinthefollowingways: Reference a specification. Aspecificationdefinesasetofserviceinputsandoutputs.You canuseaspecificationtodefineinputandoutputparametersformultipleservices. Whenyouassignaspecificationtoaservice,youcannotadd,delete,ormodifythe declaredvariablesusingtheservicesInput/Outputtab. Reference an IS document type. YoucanuseanISdocumenttypetodefinetheinputor outputparametersforaservice.WhenyouassignanISdocumenttypetotheInputor OutputsideoftheInput/Outputtab,youcannotadd,modify,ordeletethevariableson thathalfofthetab. YouinsertareferencetoanISdocumenttypeinoneofthreeways:
Withthefirsttwomethods,thevariableswithintheISdocumenttypebecomethe inputoroutputsignaturefortheservice.Youcannotadd,modify,ordeletethe variablesonthathalfofthetab.Withthethirdmethod,theISdocumenttype referencebecomesthetopleveldocumentinthesignature.Youcannotmodifyor deletethevariablesthatarecontainedwithinthereferencedISdocumenttypebut youcanaddothervariablestothathalfofthetab. Manually insert input and output variables.Use tospecifythedatatypeandnamefor eachinputandoutputvariablefortheservice. To declare input and output parameters for a service 1 2 3 Opentheserviceforwhichyouwanttodeclareinputandoutputparameters. Intheeditor,clickthe Input/Outputtabforthatservice. Ifyouwanttoreferenceaspecification,dothefollowing: a Inthe Specification Referencefield,typethespecificationsnameorclick to selectitfromalist.Formoreinformationaboutcreatingspecifications,see DeclaringInputandOutputParametersforaServiceonpage 133. Skiptherestofthisprocedure. Important! Whenaspecificationisassignedtoaservice,youcannotadd,delete,or modifythedeclaredvariablesusingtheservicesInput/Outputtab.
136
IfyouwanttoreferenceanISdocumenttypefortheinputoroutputparametersof theservice,dothefollowing: a IntheInputorOutputfield(dependingonwhichhalfofthespecificationyouwant toassigntheISdocumenttypeto),typetheISdocumenttypenameorclick to selectitfromalist.YoucanalsodraganISdocumenttypefromtheNavigation paneltotheboxbelowtheValidate inputorValidate outputcheckboxes. IfyouassignedanISdocumenttypetoboththeInputandOutputsidesofthe Input/Outputtab,skiptherestofthisprocedure.Otherwise,continuetothenext steptospecifythevariablesintheotherhalfofthetab. Important! WhenanISdocumenttypeisassignedtotheInputorOutputside,you cannotadd,delete,ormodifythedeclaredvariablesonthathalfoftheInput/Output tab.
Ifyouwanttoenteranynotesorcommentsabouttheinputandoutputparameters, typeyourcommentsontheCommentstab.
137
138
Ifyouwanttoassignanewoutputtemplatetotheservice,typethenameofthe newoutputtemplateoracceptthesystemdefaultoutputtemplatenameof FolderName_ServiceName. Ifyouwanttoassignanexistingoutputtemplatetotheservice,typethefilename oftheexistingoutputtemplate.Youdonotneedtoincludethepathinformation orthefilenameextension. Important! Makesuretheexistingoutputtemplateresidesinthe IntegrationServer_directory\packages\packageName\templatesdirectory, wherepackageNameisthesamepackageinwhichtheserviceislocated.
IntheTypelist,dooneofthefollowingtospecifytheformatfortheoutputtemplate: To... AssignanHTMLoutputtemplatetotheservice AssignanXMLoutputtemplatetotheservice AssignaWMLoutputtemplatetotheservice AssignanHDMLoutputtemplatetotheservice Select... html xml wml hdml
139
IntheFile Encodinglist,selecttheencodinginwhichyouwantthetemplatefilesaved. TheencodingisusedbytheIntegrationServertosendthetemplatetothebrowser andtointerpretdatapostedintheresultingpageinthebrowser. ThedefaultencodingisUnicode(UTF8).Youshouldnotchangethissettingunless youaresurethatyouwishtouseanotherencoding.TheIntegrationServeris optimizedfortheUTF8encoding.Theencodingyouchoosealsoappliestoany localized(translated)versionsofthetemplatethatyoumaycreate,soyoushould chooseacharacterencodingthatsupportsallofthelanguagesforwhichyouwill createlocalizedtemplates.Fordetails,seetheDynamicServerPagesandOutput TemplatesDevelopersGuide. Ifyoudochangethissetting,makesurethatyourXMLorHTMLfilecontainsthe properencodingorMETAtagfortheencodingyouuse,asthismayaffectthe browserorparserperformanceoutsidetheIntegrationServer. Note: TheFile Encodingyouselectlimitsthecharactersthatyoucanuseinyour template(includingthedatainsertedintoyourtemplateusing%VALUE% statements)tothoseinthecharactersetoftheencodingyouchoose.Italsolimits anytranslatedversionsofthetemplatestothesamecharacterset.Generallyitisa goodideatousetheUTF8(Unicode)encoding,sinceUnicodesupportsnearlyall ofthecharactersinalloftheworldslanguages.Youwillnotloseanydataifyou choosetosaveyourtemplateinUTF8;anydataenteredintoaformwillbe properlyinterpretedbytheIntegrationServer.
140
141
Important! Donotusethestatelessoptionunlessyouarecertainthattheservice operatesasanatomicunitofwork.Ifyouareunsure,settheStatelesspropertyinthe RuntimecategorytoFalse. To configure a services run-time state 1 2 3 Opentheservicethatyouwanttoconfigure. Intheeditor,clicktheservicestitlebartogivetheservicethefocus. IntheRuntimecategoryofthePropertiespanel,dooneofthefollowingtosetthe Statelessproperty:
142
143
Note: IfyoudonothaveadministratorprivilegesonyourwebMethodsIntegration Server,workwithyourserveradministratortomonitorandevaluateyourservices useofcache. Important! Ifyoueditacachedservicebychangingtheinputs(notthepipeline),you mustresettheservercache.Ifyoudonotresetit,theoldcachedinputparameterswill beusedatruntime.ToresettheservicecachefromDeveloper,selecttheserviceand thenclicktheResetbuttonnexttoReset CacheinthePropertiespanel.Toresetthe servicecachefromIntegrationServerAdministrator,selectService UsageunderServer intheNavigationpanel.Selectthenameoftheserviceandaninformationscreenfor thatserviceappears.ClickReset Server Cache.
144
WhenyouenablePrefetch,youmustalsosetthePrefetch activation propertytospecify whentheservershouldinitiateaprefetch.Thissettingspecifiestheminimumnumberof timesacachedresultmustbeaccessed(hit)inorderfortheservertoprefetchresults.If theserverretrievesthecachedresultsfewertimesthanspecifiedinthePrefetch activation property,theserverwillnotprefetchtheserviceresultswhenthecacheexpires. Note: Thecachemaynotberefreshedattheexacttimethelasthitfulfillsthe Prefetch activationrequirement.Itmayvaryfrom0to15seconds,accordingtothecache sweeperthread.Fordetails,seethewatt.server.cache.flushMinssettingin webMethodsIntegrationServer. To enable caching of pipeline contents after a service is invoked 1 2 3 4 5 Opentheserviceforwhichyouwanttoconfigurecaching. Intheeditor,clicktheservicestitlebartogivetheservicethefocus. IntheRuntimecategoryofthePropertiespanel,setCache resultstoTrue. IntheCache expirefield,typeanintegerrepresentingthelengthoftime(inminutes) thatyouwanttheresultsforthisservicetobeavailableincache. Ifyouwanttouseprefetch,dothefollowing: a b SetPrefetchtoTrue. InthePrefetch activationproperty,specifytheminimumnumberofhitsneededto activatetheuseofprefetch.
145
Server localeusesitsdefaultJVMlocale. User locale usestheclientlocale. Root localeusesneutralorPOSIXlocale. Null localeusesnolocalepolicy. YoucanalsoenabletheIntegrationServertorecognizecustomlocales.Bydefault,the serviceusesthenulllocale.Thatis,itusesnolocalepolicy. To specify the execution locale of a service 1 2 3 Opentheservicethatyouwanttoconfigure. Intheeditor,clicktheservicestitlebartogivetheservicethefocus. IntheRuntimecategoryofthePropertiespanel,dooneofthefollowingtospecifythe Execution Localeproperty: Select... [$default] Default Runtime Locale [$user] Default User Locale [$null] No Locale Policy [root locale] [<ISO code>] <Language> Open locale editor... 4 To... UsetheserversdefaultJVMlocale. Usetheclientlocale. Usenolocalepolicy. UsetheneutralorPOSIXlocale. Useaspecificlocale. Defineacustomlocale.
IfyouselectedOpen locale editor,completethefollowingintheDefine Custom Locale dialogbox. In this field... Language Extended Language Script Region IANA Variant Do the following... SelectoneoftheISO639codesthatrepresentthelanguage.(2 or3lettercodes) Forfuturerelease. Optional.Selectoneofthe4letterscriptcodesintheISO 15924registry. Optional.SelectoneoftheISO31662countrycodes. Optional.Addorremoveavariantcoderegisteredbythe IANA.
ClickOK.TheIntegrationServerwillexecutetheserviceinthespecifiedlocale.
146
http://IS_server:5555/invoke/folder.subFolder/serviceName
Item
1 2
TocreateanaliasforaserviceURL,usetheHTTP URL aliaspropertyintheProperties panel.WhenyouspecifyanaliasintheHTTP URL aliaspropertyandsavetheservice, IntegrationServercreatesanHTTPpathaliasfortheserviceURL.Thetargetofthealias isthepaththatinvokestheservice.Thepathaliasisthestringthatyouenteredinthe propertyfield. Forexample,ifthenameoftheserviceisfolder.subFolder:serviceName,thenthepathto invoketheserviceisinvoke/folder.subFolder/serviceName.IfyouentertestintheHTTP URL aliaspropertyandsavetheservice,thenthetwofollowingURLswillpointtothe sameservice: http://IS_server:5555/invoke/folder.subFolder/serviceName http://IS_server:5555/test
147
Whencreatingapathaliasforaservice,keepthefollowinginmind: Whenyouadd,edit,ordeleteanHTTP URL aliaspropertyinaservice,thepropertyis automaticallyupdatedontheIntegrationServerwhentheserviceissaved. IntegrationServerstorestheHTTP URL aliasinformationinthenode.ndffileofthe service.Becausethepropertyisencodedinthenode.ndffile,itispropagatedacross serversthroughpackagereplication. URLaliasesforservicesaresavedinmemoryontheIntegrationServer.Theserver checksforURLaliasesbeforeprocessingHTTPGETorPOSTrequests. WhenspecifyingthealiasURL,youmustspellitexactlyasitisdefinedontheserver. AliasURLsarecasesensitive.
148
149
150
151
152
TocatchatransienterrorandrethrowitasanISRuntimeException,theservicemust dooneofthefollowing:
Theserviceretryperiodmustbelessthanthemaximumretryperiod.Formore information,seeAbouttheMaximumRetryPeriodonpage 152. To configure service retry 1 2 3 Opentheserviceforwhichyouwanttoconfigureserviceretry. Intheeditor,clicktheservicestitlebartogivetheservicethefocus. UndertheRetry on ISRuntimeExceptioncategoryofthePropertiespanel,intheMax attemptsproperty,specifythenumberoftimestheIntegrationServershouldattempt toreexecutetheservice.Thedefaultis0,whichindicatesthattheIntegrationServer doesnotattempttoreexecutetheservice. IntheRetry intervalproperty,specifythenumberofmillisecondstheIntegration Servershouldwaitbetweenretryattempts.Thedefaultis0milliseconds,which indicatesthattheIntegrationServerreexecutestheserviceimmediately. OntheFilemenu,clickSave. Tip! Youcaninvokethepub.flow:getRetryCountservicetoretrievethecurrentretrycount andthemaximumspecifiedretryattempts.Formoreinformationaboutthisservice, seethewebMethodsIntegrationServerBuiltInServicesReference.Formoreinformation aboutbuildingaservicethatretries,seeConfiguringServiceRetryonpage 151.
153
154
Auniversalnamecanbeeitheranexplicitoranimplicituniversalname. An explicit universal name isauniversalnamethatyouassigntoaserviceordocument typebyspecifyingbothanamespacenameandalocalnameinthePropertiespanel. An implicit universal nameisautomaticallyderivedfromthenameoftheserviceor documenttypeitself,anditactsastheuniversalnamewhenanexplicituniversal namehasnotbeenspecified.Theserverderivesanimplicitnameasfollows:
Note: TheservernormalizesuniversalnamesaccordingtoUnicodeNormalization FormC,asrecommendedbytheCharacterModel,SOAP,andXMLstandards.This ensuresthatnamescontainingnonASCIIcharacters(particularlythosewith accentedorcombiningcharacters)arerepresentedinastandardway. Forinformationaboutnormalization,seehttp://www.unicode.org/reports/tr15/ (UnicodeStandardAnnex#15)andhttp://www.w3.org/TR/charmod/(Character ModelfortheWorldWideWeb). To assign, edit, or view a universal name 1 2 3 Opentheserviceordocumenttypewhoseuniversalnameyouwanttoassign,edit,or view. Intheeditor,clicktheservicesordocumenttypestitlebartogivetheserviceor documenttypethefocus. Ifyouwanttoassignoreditauniversalname,specifythefollowingintheUniversal NamecategoryofthePropertiespanel: In this field... Namespace name Local name Specify... TheURIthatwillbeusedtoqualifythenameofthisserviceor documenttype.YoumustspecifyavalidabsoluteURI. Anamethatuniquelyidentifiestheserviceordocumenttype withinthecollectionencompassedbyNamespace name.The namecanbecomposedofanycombinationofletters,digits,or theperiod(.),dash()andunderscore(_)characters. Additionally,itmustbeginwithaletterortheunderscore character. Note: ManywebMethodsusersusetheunqualifiedportionofthe servicenameordocumenttypeasthelocalname.
155
1 2 3 4
156
157
Always
158
ThefollowingtabledescribeseachoptionintheLog onproperty.Keepinmindthatevery timetheservicegeneratesauditdata,theIntegrationServermustcapturethedataand writeittotheservicelog.Thiscandegradeperformance. Log on option Error only Description Theservicegeneratesauditdataonlywhentheserviceendsbecause ofafailure.Iftheserviceexecutessuccessfully,itwillnotgenerate auditdata. Performance Impact:Thisoptionimpactsperformanceonlywhenthe servicefails.Whenaserviceexecutessuccessfully,thisoptiondoes notimpactperformance.Thisoptionoffersthesmallestperformance impactofalltheoptionsunderLog on. Error and success Theservicegeneratesauditdatawhentheservicefinishesexecuting, regardlessofwhetheritendsbecauseofsuccessorfailure.Theservice logwillcontainanentryforeverytimetheservicefinishesprocessing. Performance Impact:Thisoptionimpactsperformanceeverytimethe serviceexecutes,whetheritendsbecauseoferrororsuccess.Ifyou areconcernedonlywithservicesthatfail,considerusingtheError only optioninstead. Error, success, and start Theservicegeneratesauditdatawhenitbeginsexecutingandwhenit finishesexecuting.Whentheserviceexecutestocompletion,the servicelogwillcontainastartentryandanendorerrorentry. Generally,mostservicesexecutefairlyquickly.Bythetimean administratorviewstheservicelogusingwebMethodsMonitor,the servicelogwouldprobablycontainentriesforthestartandendof serviceexecution.Situationswhereyoumightwanttheserviceto generateauditdataatthestartandendofserviceexecutioninclude: Tocheckforthestartoflongrunningservices Todetectservicehangs. Inbothsituations,ifserviceexecutionbeganbutdidnotcomplete,the servicelogcontainsanentryforthestartoftheservice,butnoentry fortheendoftheservice. Performance Impact:OfalltheoptionsunderLog on,thisoption providesthemostverboseandexpensivetypeofauditlogging.Every timeitexecutes,theservicegeneratesauditdataattwopoints:the beginningandtheend.TheIntegrationServermustwritetheaudit datatotheservicelogtwiceperserviceexecution.Thisrequires significantlymorediskutilizationthantheError onlyandError and successoptions.Atmost,theError onlyandError and successoptions requiretheIntegrationServertowriteauditdataonceperservice execution.
159
Note: Theservicegeneratesauditdataonlywhenitsatisfiestheselectedoptionunder Enable auditingandtheselectedoptionintheLog onproperty.Forexample,if When toplevel service only isselectedandtheserviceisnottherootserviceintheflowservice,it willnotgenerateauditdata.
160
ThefollowingtabledescribestheoptionsintheInclude pipeline propertyontheProperties panel.Keepinmindthatsavingtheinputpipelinetotheservicelogcanimpactthe performanceoftheIntegrationServer. Include pipeline Never Description TheIntegrationServerwillneversaveacopyoftheservicesinput pipelinetotheservicelog.Selectthisoptionifyouareusingaflatfile fortheservicelogorifyoudonotwanttobeabletoresubmitthe servicetotheIntegrationServer. Performance Impact:Thisoptionrequiresminimalnetworkbandwidth becausetheIntegrationServerneedstosendonlytheauditdata generatedbytheservicetotheservicelog. On errors only TheIntegrationServersavesacopyoftheinputpipelinetotheservice logonlywhentheservicegeneratesauditdatabecauseoffailure. Selectthisoptionifyouwanttousetheresubmissioncapabilitiesof thewebMethodsMonitortoreinvokeafailedservice.Formore informationaboutwebMethodsMonitor,seethewebMethods Monitordocumentation. Performance Impact:Forsuccessfulserviceinvocations,theOn errors only optionrequiresminimalnetworkbandwidth.Serviceinvocationsthat endinfailurerequiremorenetworkbandwidthbecausethe IntegrationServermustsavetheauditdataandtheinputpipeline. Theactualnetworkbandwidthneededdependsonthesizeofthe initialinputpipeline.Alargepipelinecandegradeperformance becauseitmaynegativelyimpacttherateatwhichthedataissavedto theservicelog.
161
Description TheIntegrationServersavesacopyoftheinputpipelinetotheservice logeverytimetheservicegeneratesauditdata.Iftheservice generatesdataatthestartandendofexecution(Log onissettoError, success, and start),theinputpipelineissavedwiththeservicelogentry forthestartofserviceexecution.Ifaservicedoesnotgenerateaudit data,theIntegrationServerdoesnotincludeacopyoftheinput pipeline. SelecttheAlwaysoptionifyouwanttobeabletousetheresubmission capabilitiesofthewebMethodsMonitortoreinvoketheservice, regardlessofwhethertheoriginalserviceinvocationsucceededor failed.Includingthepipelinecanbeusefulifaresourceexperiencesa fatalfailure(suchasharddiskfailure).Torestoretheresourcetoits prefailurestate,youcouldresubmitalltheserviceinvocationsthat occurredsincethelasttimetheresourcewasbackedup.Thisis sometimescalledafullauditforrecovery. Performance Impact:TheAlwaysoptionisthemostexpensiveoption underInclude pipeline.Thisoptionplacesthegreatestdemandon networkbandwidthbecausetheIntegrationServermustwriteacopy oftheinputpipelinetotheservicelogeverytimeaserviceexecutes. Theactualnetworkbandwidthneededdependsonthesizeofthe initialinputpipeline.Alargeinputpipelinecannegativelyimpactthe rateatwhichthedataissavedtotheservicelog.
Error Auditing
Inerrorauditing,youusetheservicelogtotrackandreinvokefailedservices.Tousethe servicelogforerrorauditing,servicesmustgenerateauditdatawhenerrorsoccur,and theIntegrationServermustsaveacopyoftheservicesinputpipelineintheservicelog. WithwebMethodsMonitor,youcanonlyreinvoketoplevelservices(thoseservices invokeddirectlybyaclientorbyaBroker/localtrigger).Therefore,ifyourintentwith errorauditingistoreinvokefailedservices,theserviceneedstogenerateauditdataonly whenitisthetoplevelserviceanditfails.
162
Tomakesuretheservicelogcontainstheinformationneededtoperformerrorauditing, selectthefollowingAuditproperties. For this property... Enable auditing Select this option... When top-level service only Note: Ifyouwanttobeabletoauditallfailedinvocationsof thisservice,selectAlways. Include pipeline Log on On errors only Error only
Tousetheservicelogforerrorauditing,storetheserviceloginadatabase.
Service Auditing
Whenyouperformserviceauditing,youusetheservicelogtotrackwhichservices executesuccessfullyandwhichservicesfail.Youcanperformserviceauditingtoanalyze theserviceloganddeterminehowoftenaserviceexecutes,howmanytimesitsucceeds, andhowmanytimesitfails.Tousetheservicelogforserviceauditing,servicesneedto generateauditdataafterexecutionends. Tomakesuretheservicelogcontainstheinformationneededtoperformservice auditing,selectthefollowingAuditproperties. For this property... Enable auditing Include pipeline Select this option... When top-level service only Never Note: Configureaservicetosaveacopyoftheinput pipelineonlyifyouintendtoreinvoketheserviceusing theresubmissioncapabilitiesofthewebMethods Monitor. Log on Error and success
Tousetheservicelogforserviceauditing,youcanstoretheservicelogineitheraflatfile oradatabase.
163
Whenauditingforrecovery,youwanttobeabletoresubmitfailedandsuccessful services.Theservicelogneedstocontainanentryforeachserviceinvokedbyaclient requestoratrigger.Theservicelogalsoneedstocontainacopyofeachservicesinput pipeline. Tousetheservicelogtoauditforrecovery,selectthefollowingAuditproperties. For this property... Enable auditing Include pipeline Log on Select this option... When top-level service only Always Error and success
Tousetheservicelogtoauditforrecovery,storetheserviceloginadatabase.
164
ForInclude pipeline,selectanoptiontoindicatewhentheIntegrationServershould includeacopyoftheinputpipelineintheservicelog. Note: Ifyouwantauditeventsgeneratedbythisservicetopassacopyoftheinput pipelinetoanysubscribedeventhandlers,selectOn errors onlyorAlways. FormoreinformationabouttheInclude pipelineoptions,includinginformationabout theperformanceimpact,seeIncludingthePipelineintheServiceLogonpage 160.
165
Input/Output parameters
To print a flow service 1 2 3 Intheeditor,selecttheservicethatyouwanttoprint. FromtheFilemenu,clickView as HTML. Ifyouwanttoprinttheflow,selectyourbrowsersprintcommand. Note: WhenyouprintaflowserviceasHTML,onlytheflowstepscurrentlyvisiblein theeditorappearintheresultingHTMLpage.Tofitallofthestepsinaflowservice intotheeditor(andtherefore,intoasingleHTMLpage),hidetheNavigation,Recent Elements,Properties,andResultspanelstomaximizetheeditor.
166
What Is a Flow Step? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inserting and Moving Flow Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The INVOKE Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The BRANCH Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The REPEAT Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The SEQUENCE Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The LOOP Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The EXIT Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The MAP Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
167
168
Note: Youmightfindithelpfultodeclaretheinputandoutputparametersforaflow servicebeforeyouinsertflowsteps.Byfirstdeclaringtheparameters,itisclearwhat datatheserviceexpectsandwhatvariablesareavailableforuseinflowsteps. Youinsertflowstepsintoaserviceusingthefollowingtoolbarbuttonsatthetopofthe editor.(Youcannotdirectlytypeaflowstepintotheeditor.Alleditingisperformed throughthetoolbar). To insert a/an... INVOKEstep MAPstep BRANCHstep Click this button... For more information, see page... 173 200 176
169
170
These steps are children of the BRANCH step. This step is a child of the LOOP step.
Topromoteordemoteaflowstepwithinaparent/childhierarchy,selectthestepinthe editor,andthenuseoneofthefollowingbuttonstomoveitleftorrightbeneaththe currentparentstep. To... Demoteaflowstepinthehierarchy(thatis,maketheselectedstepa childoftheprecedingparentstep) Thisbuttonwillonlybeavailableifyouselectastepthatcan becomeachild. Promoteaflowstepinthehierarchy(thatis,movethesteponelevel upinthehierarchy) Click this button...
171
Comments Assignsanoptionaldescriptivecommenttotheselectedflowstep. Label Assignsanametotheselectedflowstep.Whenalabelisassigned,that labelappearsnexttothestepintheeditor.Thelabelallowsyouto referencethatflowstepinotherflowsteps.Inaddition,youusethelabel tocontrolthebehaviorofcertainflowsteps.Forexample,theBRANCH stepusestheLabelpropertytodeterminewhichalternativeitissupposed toexecute. SeeTheBRANCHSteponpage 176andTheEXITSteponpage 198 foradditionalinformationaboutthisuseofthelabelproperty. Foracompletedescriptionofthepropertiesassociatedwitheachflowstep,see Appendix A,webMethodsFlowSteps.
172
Youmustspecifytheservicesnameexactlyasitisdefinedontheserver.Service namesarecasesensitive.
173
174
CompletethefollowingfieldsonthePropertiespanel: For this property... Service Specify... Thefullyqualifiednameoftheservicethatwillbeinvokedatrun time.Whenyouinsertaservice,Developerautomaticallyassigns thenameofthatservicetotheServiceproperty.Ifyouwantto changetheservicethatisinvoked,specifytheservicesfully qualifiednameintheformatfolderName:serviceNameorclick andselectaservicefromthelist. Optional.Specifiesthemaximumnumberofsecondsthatthis stepshouldrun.Ifthistimeelapsesbeforethestepcompletes,the serverwaitsforthesteptocompleteandthenraisesanexception. Ifyouwanttousethevalueofapipelinevariableforthis property,typethevariablenamebetween%symbols.For example,%expiration%. Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeout blank. Validate input Whetherornotyouwanttheservertovalidatetheinputtothe serviceagainsttheserviceinputsignature.SelectTrue tovalidate theinput.SelectFalse ifyoudonotwanttovalidatetheinput. Forinformationaboutvalidatinginput,seePerforming Input/OutputValidationonpage 278. Validate output Whetherornotyouwanttheservertovalidatetheoutputofthe serviceagainsttheserviceoutputsignature.SelectTruetovalidate theoutput.SelectFalseifyoudonotwanttovalidatetheoutput. Forinformationaboutvalidatingoutput,seePerforming Input/OutputValidationonpage 278.
Timeout
Ifnecessary,onthePipelinetab,linkPipeline InvariablestoService Invariables.Link Service OutvariablestoPipeline Outvariables.Formoreinformationaboutlinking variablestoaservice,seeLinkingVariablesonpage 207. Tip! WhenyouinstallDeveloper,the Insertmenudisplaysalistofcommonly usedservices.YoucanusetheToolsOptionscommandtocustomizethislistof servicestosuityourneeds.
175
176
Each conditional step has a label that matches the value that causes it to execute.
The Switch property of the BRANCH step specifies the name of the variable that acts as the switch.
177
KeepthefollowingpointsinmindwhenassigninglabelstothetargetsoftheBRANCH step: Youmustgiveeachtargetstepalabelunlessyouwanttomatchanemptystring.For thatcase,youleavetheLabelpropertyblank.Formoreaboutmatchinganempty string,seeBranchingonNullandEmptyValuesonpage 180. EachLabelvaluemustbeuniquewithintheBRANCHstep. WhenyouspecifyaliteralvalueastheLabelofachildstep,thevalueyouspecify mustmatchtheruntimevalueoftheswitchvariableexactly.TheLabelpropertyis casesensitive. YoucanusearegularexpressionasthevalueofLabelinsteadofaliteralvalue. Youcanmatchanullvaluebyusingthe$nullvalueintheLabelproperty.Formore informationaboutspecifyinganullvalue,seeBranchingonNullandEmptyValues onpage 180. Youcandesignateadefaultstepforallunmatchedcasesbyusingthe$defaultvaluein theLabelproperty.Formoreinformationaboutusingthe$defaultsetting,Specifying aDefaultSteponpage 181.
178
Branching on an Expression
Whenyoubranchonanexpression,youassignanexpressiontoeachchildofabranch step.Atruntime,theBRANCHstepevaluatestheexpressionsassignedtothechild steps.Itexecutesthefirstchildstepwithanexpressionthatevaluatestotrue. To branch on an expression 1 2 3 Createalistoftheconditionalsteps(targetsteps)andmakethemchildrenofthe BRANCHstep. InthePropertiespanelfortheBRANCHstep,setEvaluate labelstoTrue. IntheLabelpropertyofeachtarget,specifytheexpressionthat,whentrue,willcause thetargetsteptoexecute.Theexpressionsyoucreatecanincludemultiplevariables andcanspecifyarangeofvaluesforvariables.Usethesyntaxprovidedby webMethodstocreatetheexpression.Formoreinformationaboutexpressionsyntax, seeAppendix D,ConditionalExpressions.
When set to true, the Evaluate labels property indicates the step branches on expressions.
KeepinmindthatonlyonechildofaBRANCHstepisexecuted:thefirsttargetstep whoselabelcontainsanexpressionthatevaluatestotrue.Ifnoneoftheexpressions evaluatetotrue,noneofthechildstepsareinvoked,andexecutionfallsthroughtothe nextstepintheflowservice.Youcanusethe$defaultvalueintheLabelpropertyto designateadefaultstepforcaseswherenoexpressionsevaluatetotrue.Formore informationaboutusingthe$default value,seeSpecifyingaDefaultSteponpage 181. Important! TheexpressionsyoucreateforthechildrenofaBRANCHstepneedtobe mutuallyexclusive(onlyoneconditionshouldevaluatetotrueatruntime).
179
180
BRANCH that contains target steps to match null values or empty strings
This target step executes when CreditCardType is null or does not exist. This target step executes when the CreditCardType value is a zero length string.
181
The first two target steps handle credit card and corporate account payments... ...and the $default target step handles the rest.
182
...and then specify the appropriate series of flow steps as children beneath each SEQUENCE.
183
2 3
CompletethefollowingfieldsonthePropertiespanel: For this property... Specify... Comments Scope Anoptionaldescriptivecommentforthisstep. Thenameofadocument(IDataobject)inthepipelinetowhich youwanttorestrictthisstep.Ifyouwantthissteptohaveaccess totheentirepipeline,leavethispropertyblank. Themaximumnumberofsecondsthatthisstepshouldrun.Ifthis timeelapsesbeforethestepcompletes,theserverwaitsforthe steptocompleteandthenraisesanexception. Ifyouwanttousethevalueofapipelinevariableforthisproperty, typethevariablenamebetween%symbols(forexample, %expiration%). Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeout blank. Label Anoptionalnameforthisspecificstep,oranull,unmatched,or emptystring($null,$default,blank).Formoreinformationabout branchingonnulloremptyvalues,seeBranchingonNulland EmptyValuesonpage 180. Note: IfyouusethisstepasatargetforanotherBRANCHoran EXITstep,youmustspecifyavalueintheLabelproperty.Formore informationabouttheEXITstep,seeTheEXITStepon page 198. Switch ThenameoftheStringorconstrainedObjectvariablewhosevalue willbeusedtodeterminewhichchildsteptoexecuteatruntime. DonotspecifyaswitchvariableifyousettheEvaluate labels propertytoTrue. Whetherornotyouwanttoevaluatelabelsofchildstepsas conditionalexpressions.SelectTruetobranchonexpressions. SelectFalse(thedefault)ifyouwanttobranchontheswitchvalue.
Timeout
Evaluate labels
184
IntheLabelpropertyonthePropertiespanel,specifytheswitchvaluethatwill causethissteptoexecuteatruntime. To match... Thatexactstring TheStringrepresentationoftheobjectsvalue Example for Boolean objecttrue Example for Integer object123 Anystringfittingthecriteriaspecifiedbytheregular expression Example/^REL/ Anemptystring Anullvalue Anyunmatchedvalue(thatis,executethestepifthevalue doesnotmatchanyotherlabel) Ablankfield $null $default Aregular expression Specify... Astring Aconstrained objectvalue
Setotherpropertiesasneeded.
185
186
IftheREPEATstepisachildofanotherflowstep,thefailureispropagatedtoitsparent.
187
IfyouspecifymultiplechildrenunderaREPEATstep,thefailureofanyoneofthe childrenwillcausetheentiresetofchildrentobereexecuted. TheREPEATstepimmediatelyexitsasetofchildrenatthepointoffailure(thatis,if thesecondchildinasetofthreefails,thethirdchildisnotexecuted). WhenRepeat onissettoFAILURE,thefailureofachildwithinaREPEATstepdoes notcausetheREPEATstepitselftofailunlesstheCountlimitisalsoreached. TheTimeoutpropertyfortheREPEATstepspecifiestheamountoftimeinwhichthe entireREPEATstep,includingallofitspossibleiterations,mustcomplete.Whenyou useREPEATtoretryonfailure,youmaywanttoleavetheTimeoutvalueat0(no limit)orsetittoaveryhighvalue.Youcanalsosetthepropertytothevalueofa pipelinevariablebytypingthenameofthevariablebetween%symbols. Asadeveloper,youmustbethoroughlyfamiliarwiththeprocessesyouinclude withinaREPEATstep.Makecertainthatthechildstepsyouspecifycansafelybe repeatedintheeventthatafailureoccurs.YoudontwanttouseREPEATifthereis thepossibilitythatasingleaction,suchasacceptinganorderorcreditinganaccount balance,couldbeappliedtwice. To build a REPEAT step that re-executes failed steps 1 IfyouareinsertingaREPEATstepintoanexistingflowservice,displaythatservice intheeditorandhighlightthestepimmediatelyabovewhereyouwanttheREPEAT stepinserted. Click ontheeditortoolbar.
2 3
CompletethefollowingfieldsonthePropertiespanel: For this property... Comments Scope Specify... Anoptionaldescriptivecommentforthisstep. Thenameofadocument(IDataobject)inthepipelinetowhich youwanttorestrictthisstep.Ifyouwantthissteptohaveaccess totheentirepipeline,leavethispropertyblank.
188
Label
Count
Repeat interval
Repeat on 4
FAILURE
Setthepropertiesforthechildstepasneeded.
189
2 3
CompletethefollowingfieldsonthePropertiespanel: For this property... Comments Scope Specify... Anoptionaldescriptivecommentforthisstep. Thenameofadocument(IDataobject)inthepipelineto whichyouwanttorestrictthisstep.Ifyouwantthisstepto haveaccesstotheentirepipeline,leavethispropertyblank. Themaximumnumberofsecondsthatthisstepshouldrun.If thistimeelapsesbeforethestepcompletes,theserverwaitsfor thesteptocompleteandthenraisesanexception. Ifyouwanttousethevalueofapipelinevariableforthis property,typethevariablenamebetween%symbols(for example,%expiration%). Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeout blank.
Timeout
190
Specify... Anoptionalnameforthisspecificstep,oranull,unmatched, oremptystring($null,$default,blank). Important! IfyouusethisstepasatargetforaBRANCHor EXITstep,youmustspecifyavalueinthelabelproperty.For moreinformationabouttheBRANCHandEXITsteps,see TheBRANCHSteponpage 176orTheEXITStepon page 198.
Count
Repeat interval
Repeat on 4
SUCCESS
Setthepropertiesforthechildstepasneeded.
191
192
If you want the server to Exitthesequencewhenanystepinthesequencesucceeds. (Executioncontinueswiththenextstepintheflowservice.) Thissettingisusefulforbuildingasetofalternativestepsthatare eachattemptedatruntime.Onceoneofthemembersofthesetruns successfully,theremainingstepsinthesequenceareskipped. WhenaSEQUENCEexitsunderthiscondition,theserverconsiders theSEQUENCEstepsuccessful,evenifallitschildrenfail.Ifachild failsunderthiscondition,anychangesthatitmadetothepipeline arerolledback(undone),andprocessingcontinueswiththenext childstepintheSEQUENCE. Executeeverystepinthesequenceevenifoneofthestepsinthe sequencefails. TheserverconsidersaSEQUENCEstepsuccessfulaslongasit executesallofitschildrenwithinthespecifiedtimeoutlimit.The successorfailureofachildwithinthesequenceisnottakeninto consideration.Ifachildfailsunderthiscondition,anychangesthat itmadetothepipelinearerolledback(undone),andprocessing continueswiththenextchildstepintheSEQUENCE.
DONE
Note: Rollbackoperationsareperformedonthefirstlevelofthepipelineonly.Thatis, firstlevelvariablesarerestoredtotheiroriginalvaluesbeforethestepfailed,butthe serverdoesnotrollbackchangestoanydocumentstowhichthefirstlevelvariables refer. Note: AfailureinaMAPstep(thatis,afailureinoneofthetransformers)willcause thecontainingSEQUENCEtoexitwhenyousetExit ontoFAILURE.However,aMAP stepthatdoesnotfailwillnotcausethecontainingSEQUENCEtoexitwhenyouset Exit ontoSUCCESS.Thatis,aMAPcanfailbutitdoesnotsucceed.
193
The body of the loop must be indented beneath the LOOP step.
194
The LOOP step executes once for each member of the array specified in Input array.
195
2 3
CompletethefollowingfieldsonthePropertiespanel: For this property Comments Scope Specify Anoptionaldescriptivecommentforthisstep. Thenameofadocument(IDataobject)inthepipelineto whichyouwanttorestrictthisstep.Ifyouwantthisstepto haveaccesstotheentirepipeline,leavethispropertyblank. Themaximumnumberofsecondsthatthisstepshouldrun.If thistimeelapsesbeforethestepcompletes,theserverwaitsfor thesteptocompleteandthenraisesanexception. Ifyouwanttousethevalueofapipelinevariableforthis property,typethevariablenamebetween%symbols(for example, %expiration%). Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeout blank.
Timeout
196
Specify AnoptionalnameforthisspecificLOOPstep,oranull, unmatched,oremptystring($null,$default,blank). Important! IfyouusethisstepasatargetforaBRANCHor EXITstep,youmustspecifyavalueintheLabelproperty.For moreinformationabouttheBRANCHandEXITsteps,see TheBRANCHSteponpage 176orTheEXITStepon page 198.
Input array
Output array
Setthepropertiesforthechildstepasneeded.
UsethePipelinetabtolinktheelementsoftheinputarraytotheinputvariables requiredbyeachchildoftheLOOPstep.Formoreinformationaboutusingthe Pipelinetab,seeChapter 8,MappingDatainaFlowService. Important! WhenyoubuildaLOOPstep,makesurethatyouspecifytheoutputarray variableintheLOOPOutput arraypropertybeforecreatingalinktotheoutputarray variablewithinaMAPorINVOKEstepinthebodyoftheLOOP.Ifyouspecifythe outputarrayvariableaftercreatingalinktoit,thelinkwillfailatruntime.Youcan testthestepinDevelopertoseeifthelinksucceeds.Ifthelinkfails,deletethelinkto theoutputarrayvariableandthenrecreateit.
197
198
CompletethefollowingfieldsonthePropertiespanel: For this property Specify Comments Label Anoptionaldescriptivecommentforthisstep. Anoptionalnameforthisspecificstep,oranull,unmatched,or emptystring($null,$default,blank). Important! IfyouusethisstepasatargetforaBRANCHstep,you mustspecifyavalueintheLabelproperty.Formoreinformation abouttheBRANCHstep,seeTheBRANCHSteponpage 176. Exit from Theflowstepfromwhichyouwanttoexit.Specifyoneofthe following: Specify $loop $parent $flow Label To exit from the... NearestancestorLOOPorREPEATflowstep. Parentflowstep,regardlessofthetypeofstep. Entireflow. Nearestancestorflowstepthathasalabelthat matchesthisvalue. Note: Ifthelabelyouspecifydoesnotmatchthelabel ofanancestorflowstep,theflowwillexitwithan exception. Signal Whethertheexitistobeconsideredasuccessorafailure.Specify oneofthefollowing: Specify SUCCESS FAILURE To Exittheflowserviceorflowstepwithasuccess condition. Exittheflowserviceorflowstepwithafailure condition.Anexceptionisthrownaftertheexit.You specifytheerrormessagewiththeFailure message property.
Failure message
199
200
What Is Data Mapping? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Does the Pipeline Tab Contain? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic Mapping Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
201
202
This stage...
1
Represents... Theexpectedstateofthepipelinejustbeforetheselectedservice executes. Pipeline Indepictsthesetofvariablesthatareexpectedtobeinthe pipelinebeforetheserviceexecutes(basedonthedeclaredinput andoutputparametersoftheprecedingservices). Service Indepictsthesetofvariablestheselectedserviceexpectsas input(asdefinedbyitsinputparameters). OnthePipelinetab,youcaninsertpipelinemodifiersatthisstage toadjustthecontentsofthepipelinetosuittherequirementsofthe service.Forexample,youcanlinkvariables,assignvaluesto variables,dropvariablesfromthepipeline,oraddvariablestothe pipeline.Modificationsthatyouspecifyduringthisstageare performedimmediatelybeforetheserviceexecutesatruntime.
203
This stage...
2
Represents... Theexpectedstateofthepipelinejustaftertheserviceexecutes. Service Outdepictsthesetofvariablesthattheselectedservice producesasoutput(asdefinedbyitsoutputparameters). Pipeline Outdepictsthesetofvariablesthatareexpectedtobeinthe pipelineaftertheserviceexecutes.Itrepresentsthesetofvariables thatwillbeavailabletothenextserviceintheflow.Iftheselected service(INVOKEstep)isthelaststepintheflowservice,Pipeline Out displaystheoutputvariablesfortheflowservice(asdeclaredonthe Input/Outputtab). OnthePipelinetab,youcaninsertpipelinemodifiersatthisstage toadjustthecontentsofthepipeline.Forexample,youcanlink variables,assignvaluestovariables,dropvariablesfromthe pipeline,oraddvariablestothepipeline.Modificationsthatyou specifyduringthisstageareperformedimmediatelyafterthe serviceexecutesatruntime.
204
ThePipeline IncolumnrepresentsinputtotheMAPstep.Itcontainsthenamesofallof thevariablesinthepipelineatthispointintheflow. TheTransformers columndisplaysanyservicesinsertedintheMAPsteptocomplete valuetransformations.FormoreinformationaboutinvokingservicesinaMAPstep, seeInsertingaTransformerintoaMAPSteponpage 229. ThePipeline Out columnrepresentstheoutputoftheMAPstep.Itcontainsthenames ofvariablesthatwillbeavailableinthepipelinewhentheMAPstepcompletes. WhenyoufirstinsertaMAPstepintoyourflow,Pipeline InandPipeline Outareidentical. However,iftheMAPstepistheonlystepintheflowserviceoristhelaststepintheflow service,Pipeline Outalsodisplaysthevariablesdeclaredasoutputintheflowservice. OnthePipelinetab,youcaninsertpipelinemodifierstoadjustthecontentsofthe pipeline.Forexample,youcanlinkvariablesfromPipeline IntoservicesinTransformers. Youcanalsousepipelinemodifierstoassignvaluestopipelinevariables,dropvariables fromthepipeline,oraddvariablestothepipeline.
205
Pipeline Modifiers
Pipelinemodifiersarespecialcommandsthatyouapplytoadjustthepipelineatrun time.Theyexecuteimmediatelybeforeoraftertheselectedserviceortransformer, dependingonwhereyouaddthemonthePipelinetab.Usethefollowingbuttonstoadd pipelinemodifierstothepipeline: Use this modifier...
Link
To... Link a pipeline variable to a service variable.TheLinkmodifierletsyou resolvevariablenameanddatastructuredifferencesbylinking (copying)thevalueofonevariabletoanotheratruntime.For informationaboutusingthispipelinemodifier,seeLinking Variablesonpage 207. Drop a variable from the pipeline.TheDropmodifierremoves extraneousvariablesfromthepipeline.Forinformationabout usingthispipelinemodifier,seeDroppingVariablesfromthe Pipelineonpage 225. Assign a value to a variable.TheSet Valuemodifierhardcodesa valueforavariable.Forinformationaboutthispipelinemodifier, seeAssigningValuestoPipelineVariablesonpage 221.
Drop
Set Value
206
Linking Variables
Whenyouwanttocopythevalueofavariableinaserviceordocumentformatto anothervariable,youlinkthevariables.Developerconnectsserviceandpipeline variablesonthePipelinetabwithalinecalledalink.Creatingalinkbetweenvariables copiesthevaluefromonevariabletoanotheratruntime. Withinaflow,Developerimplicitlylinksvariableswhosenamesarethesameandwhose datatypesarecompatible.Forexample,theserviceinthefollowingflowtakesavariable calledAcctNumber.BecauseavariablebythisnamealreadyexistsinPipeline In,itis automaticallylinkedtotheAcctNumbervariableinService In.Developerconnects implicitlylinkedvariableswithagraylink.
207
Pipeline variables are automatically linked to service variables of the same name.
Important! ThePipelinetabdoesnotdisplayimplicitlinksforaMAPstep. Incaseswheretheservicesinaflowdonotusethesamenamesforapieceof information,usethePipelinetabtoexplicitlylinkthevariablestoeachother.Explicit linkingishowyouaccomplishnameandstructuretransformationsrequiredinaflow. Developerconnectsexplicitlylinkedvariableswithasolidblackline. OntheinputsideofthePipelinetab,usetheLink modifiertolinkavariablefromthe pipelinetotheservice.Inthefollowingexample,theserviceexpectsavaluecalled OrderTotal,whichisequivalenttothepipelinevariableBuyersTotal(thatis,theyare simplydifferentnamesforthesamedata).TousethevalueofBuyersTotalasthevaluefor OrderTotal,youlinkthepipelinevariabletotheserviceusingtheLinkmodifier. Atruntime,theserverwillcopythevaluefromthesourcevariable(BuyersTotal)tothe targetvariable(OrderTotal)beforeexecutingtheservice. Linking the pipeline to service input
When a pipeline variable name is different from the one used by the service, use the Link modifier to connect them.
208
Important! DonotlinkvariableswithdifferentObjectconstraints.Ifyoulinkvariables withdifferentobjectconstraintsandinput/outputvalidationisselected,theruntime resultisundefined. Alltheoutputvariablesthataserviceproducesareautomaticallyplacedinthepipeline. JustasyoucanlinkvariablesfromthePipeline Instagetoaservicesinputvariables,you canlinktheoutputfromaservicetoadifferentvariableinPipeline Out. Inthefollowingexample,avariablecalledTransNumberislinkedtothefieldNumina documentcalledTransactionRecord.Atruntime,theserverwillcopythevalueof TransNumbertoNum,andbothTransNumberandNumwillbeavailabletosubsequent servicesintheflow. Linking service output to the pipeline
When an output variable name is different from the name in the pipeline, use the Link modifier to connect them.
Developer automatically adds a services output variables to the pipeline and implicitly links them.
Whenyoulinkvariablesinthepipeline,keepthefollowingpointsinmind: Thevariablethatyouarelinkingfromisthesource.Forexample,whenyoulinka variableinPipeline IntooneinService In,thePipeline Invariableisthesource.When youlinkavariableinService OuttooneinPipeline Out,theService Outvariableisthe source. Thevariableyouarelinkingtoisthetarget.Forexample,whenyoulinkavariablein Pipeline IntooneinService In,theService Invariableisthetarget.Whenyoulinka variableinService OuttooneinPipeline Out,thePipeline Outvariableisthetarget. AService InvariablecanbethetargetofmorethanoneLinkmodifieronlyifyouuse arrayindexingorifyouplaceconditionsonthelinkstothevariable.
209
Bylinkingvariablestoeachother,youarecopyingdatafromthesourcevariabletothe targetvariable.(Documents,however,arecopiedbyreference.Formoreinformation, seeWhatHappensWhenIntegrationServerExecutesaLinkBetweenVariables?on page 211.) Targetvariablescanbeconnectedtoonlyonesourcevariable.Afteryoudrawalink toatargetvariable,youcannotdrawanotherlinktothetargetvariable.(Two exceptionstothisruleinvolvearrayvariablesandconditionallinks.Formore informationaboutlinkingarrayvariables,seeLinkingtoandfromArrayVariables onpage 216.Formoreinformationaboutplacingconditionsonlinksbetween variables,seeApplyingConditionstoLinksBetweenVariablesonpage 219. YoucannotcreatealinktoavariableifyoualreadyusedtheSet Valuemodifierto assignavaluetoavariable. AfteraLinkmodifierisexecuted,boththesourceandtargetvariablesexistinthe pipeline.Thetargetvariabledoesnotreplacethesourcevariable. To create a link between variables 1 2 3 Intheeditor,selecttheINVOKEorMAPstepcontainingthevariablesyouwantto link. ClickthePipelinetab. IfyouwanttocreatealinkbetweenavariableinPipeline InandoneinService In,do thefollowing: a b c 4 InPipeline In,clickthepipelinevariableyouwanttouseasthesourcevariable. InService In,clicktheinputvariableyouwanttouseasthetargetvariable. Click onthetoolbar.
IfyouwanttocreatealinkbetweenavariableinService OutandoneinPipeline Out,do thefollowing: a b c InService Out,clicktheoutputvariableyouwanttouseasthesourcevariable. InPipeline Out,clickthepipelinevariableyouwanttouseasthetargetvariable. Click onthetoolbar.
Notes:
210
Tip! Youcanalsouseyourmousetolinkvariablestooneanother.Todothis,selectthe sourcevariableanddragyourmousetotheappropriatetargetvariable. Tip! ToscrollthroughthePipeline InandPipeline Outtreesindependently,displaythe lefthandscrollbar.Click todisplaythelefthandscrollbar.Click tohidethe lefthandscrollbar.ThelefthandscrollbarisonlyavailableonthePipelinetabfora MAPstep.Whenyouexpandatransformer,Developerhidesthelefthandscrollbar automatically.
211
Document1 is linked to Document2. After the link executes, the value of Document2 is a reference to the contents of Document1.
Step 3: The value of String1 is changed to modified after the link executes
The value of String1 is changed to modified. This action changes the value of the string in Document2 as well.
212
InStep3,thevalueoftheString1inDocument1wassettomodified.However,the valueofString1inDocument2changedalso.ThisisbecauseinStep2oftheflowservice, thevalueofDocument1wascopiedtoDocument2byreference.Changestothevalueof Document1inlaterflowstepsalsochangethevalueofDocument2. Topreventthevalueofthetargetvariablefrombeingoverwrittenbychangestothe valueofthesourcevalueinsubsequentstepsintheflowservice,youcandooneofthe following: Whenworkingwithdocumentvariables,linkeachchildofthedocumentvariable individually.Thismethodcanbetimeconsumingandmightsignificantlyincrease thememoryandtimerequiredtoruntheservice.However,thismightbethebest approachifthetargetdocumentvariableneedsonlyafewvaluesfromthesource documentvariable. Afteryoulinkthesourcevariabletoatargetvariable,usetheDropmodifiertodrop thesourcevariable.Onlythetargetvariablewillhavethereferencetothedata.This methodensuresthatthevalueofthetargetvariablewillnotbeoverwrittenina subsequentstep,butdoesnotincreasethememoryandtimerequiredtoexecutethe service. Createaservicethatperformsacopybyvalue.Insertthisservice(asanINVOKEstep orasatransformer)andlinkthevariablestotheserviceinsteadoflinkingthemto eachother.(Inthecaseofdocumentvariables,youcouldcreateaJavaservicethat clonestheIDataobjectunderlyingthedocument.)Insituationswhereyoulinkone documentvariabletoanother,usingacloningservicewouldrequirelesstimethan linkingthecontentsofadocumentvariablefieldbyfield.
213
214
Examples of Structural Transformations on the Pipeline Tab ThestructuraltransformationsyoucanperformbylinkingvariablesonthePipelinetab canbemorecomplexthantransformingaStringtoaStringlist.Forexample,youcan combinetwoStringlistsintoonedocumentlistthroughlinking.Thefollowingsection explainsacommonstructuraltransformationthatyoucancompletevialinkinginthe pipeline. Converting a String List to a Document List YoucanconvertaStringlisttoadocumentlistusingthePipelinetab.Inthefollowing diagram,aLististheStringlistyouwanttoconverttoadocumentlist.Thevariable documentLististhedocumentlisttowhichyouwanttocopythevaluescontainedinthe Stringlist.documentListhasaStringchildaString.ToconverttheStringlisttoadocument list,linkaListtoaString. Converting a String list to a document list
TwoStringlistscanbecombinedintoonedocumentlistthroughdatamappinginthe pipeline.Forexample,ifintheabovescenarioyoualsohadaStringlistvariablenamed bList,anddocumentListhadtwoStringchildrennamedaStringandbString,youcould combinethetwoStringlistsbylinkingaListtoaStringandbListtobString. Converting two String lists to a document list
215
216
You can specify an index value when linking to or from an array variable
You can specify the index for the element in buyerAddress that you want to link to each field in address.
Note: DeveloperusesbluelinksonthePipelinetabtoindicatethatproperties (conditionsorindexvaluesforarrays)havebeenappliedtothelinkbetween variables. TospecifytheindexfortheelementinthebuyerAddressvariabletobecopiedtothe FirstNamefield,selectthelinkbetweenthevariables,clicktheIndicespropertysEdit buttoninthePropertiespaneltospecifytheindex. Ifthesourceortargetvariableisanarray,Developerdisplaysatextboxnexttothe variable(inthiscase,buyerAddress).Ifthesourceortargetvariableisnotanarray, DeveloperdisplaysthewordsFieldnotindexablenexttothevariablename(inthis case,FirstName).Forexample,ifyouwanttolinkthefirstelementofthebuyerAddress variabletotheFirstNamefieldinaddress,type0inthefieldnexttobuyerAddress.(Index numberinginarraysbeginsat0.) Link indices
Indicates the index of the element in the buyerAddress String list that you want to copy to the FirstName field. Indicates the target variable is not an array.
217
Guidelines for Linking to and from Array Variables Whenyouarelinkingtoorfromanarrayvariable,keepthefollowingpointsinmind: Tolinktoorfromanelementinanarrayvariable,youneedtoknowtheindexforthe elementspositioninthearray.Arrayindexnumberingbeginsat0(thefirstelement inthearrayhasanindexof0,thesecondelementhasanindexof1,andsoon). Todynamicallyspecifytheindex,youcansettheindextothevalueofapipeline variable.ThevariableyouspecifymustbeaString.Touseapipelinevariable,specify thevariablenameenclosedinpercentsigns(%).Forexample,ifthepipelinecontains thevariableitemNumberthatwillcontaintheindexyouwanttouseatruntime, specify%itemNumber%fortheindex.Forthelinktoexecutesuccessfullyatruntime, thevalueofthevariablemustbeanonnegativeinteger. Ifyoulinktoanarrayvariableandspecifyanindexthatdoesnotexist,Developer increasesthelengthofthearraytoincludethespecifiedarrayindex.Forexample, supposethataStringlisthaslength3.YoucanlinktotheStringlistandspecifyan indexof4;thatis,youcanlinktothefifthpositionintheStringlist.Atruntime,the IntegrationServerincreasesthelengthoftheStringlistfrom3to5. EachelementinanarraycanbethesourceortargetofaLinkmodifier;thatis,each elementinthearraycanbethestartorendofalink.Forexample,ifasourceString listvariablecontainsthreeelements,youcanlinkeachofthethreeelementstoa targetvariable. Ifthesourceandtargetvariablesarearrays,youcanspecifyanindexforeach variable.Forexample,youcanlinkthethirdelementinasourceStringlisttothefifth elementintargetStringlist. Ifyoudonotspecifyanarrayindexforanelementwhenlinkingtoorfromarrays, thedefaultbehaviorofthePipelinetabwillbeused.Forinformationaboutthedefault behaviorofthePipelinetab,seeDefaultPipelineRulesforLinkingtoandfromArray Variablesonpage 433. IfyouarelinkingtoorfromaStringtable,youneedtospecifyanindexvalueforthe rowandcolumn. Whenyoulinkadocumentordocumentlistvariabletoanotherdocumentor documentlistvariable,thestructureofthesourcevariabledeterminesthestructureof thetargetvariable.Formoreinformation,seeLinkingtoDocumentandDocument ListVariablesonpage 213. Thefollowingprocedureexplainshowtolinktoorfromanarrayvariable.
218
To create a link to or from an array variable 1 2 3 4 5 6 CreatealinkbetweenthevariablesusingtheproceduredescribedinTocreatealink betweenvariablesonpage 210. Clickthelinkthatconnectsthevariables. OnthePropertiespanel,clicktheIndicespropertysEditbutton.Developerdisplays theLinkIndicesdialogbox. Ifthesourcevariableisanarrayvariable,underSource, nexttothesourcevariable name,typetheindexthatcontainsthevalueyouwanttolink. Ifthetargetvariableisanarrayvariable,underDestination,nexttothedestination variablename,typetheindextowhichyouwanttolinkthesourcevalue. ClickOK. Note: Atruntime,thelink(copy)failsifthesourcearrayindexcontainsanullvalueor ifyouspecifyaninvalidsourceortargetindex(suchasaletterornonnumeric character).TheIntegrationServergeneratesjournallogmessages(atdebuglevel6or higher)whenlinkstoorfromarrayvariablesfail.
219
Pipeline IntotheOrderTotalvariableinService InonlyiftheBuyersTotalhasavaluethatis notnull.AfteryouconnectthetwovariableswiththeLinkmodifier,youwouldeditthe propertiesandaddtheconditionthatneedstobetrue. A blue link indicates that a condition is applied to the link connecting the variables
Use the Properties panel to view or create a condition for the link.
DeveloperusesabluelinkonthePipelinetabtoindicatethatproperties(thatis, conditionsorindexvaluesforarrays)havebeenappliedtoalinkbetweenvariables. Note: Youcannotaddconditionstothelinksbetweenimplicitlylinkedvariables. Linking Multiple Source Variables to a Target Variable Byapplyingconditionstothelinksbetweenvariables,youcanlinkmorethanonesource variabletothesametargetvariable.Whenyoudrawmorethanonelinktothesame targetvariable,atmost,onlyoneoftheconditionsyouapplytothelinkscanbetrueat runtime.Theconditionsmustbemutuallyexclusive. Atruntime,webMethodsIntegrationServerexecutesallconditionallinkswhose conditionsevaluatetotrue.Ifmorethanoneconditionallinktothesametargetvariable evaluatestotrue,thevalueofthetargetvariablewillbetheresultofwhicheverlink executeslast.Becausetheorderinwhichlinksareexecutedatruntimeisnotguaranteed, thefinalvalueofthetargetvariablemayvary. Tip! Iftheconditionsforlinkstothesametargetvariablearenotmutuallyexclusive, considerusingaflowservicecontainingaBRANCHstepinstead.InBRANCHsteps, childstepsareevaluatedinatoptobottomsequence.webMethodsIntegrationServer executesthefirstchildstepthatevaluatestotrueandskipstheremainingchildsteps. FormoreinformationabouttheBRANCHstep,seeTheBRANCHStepon page 176.
220
To apply a condition to the link between variables 1 2 3 4 CreatealinkbetweenthevariablesusingtheproceduredescribedinTocreatealink betweenvariablesonpage 210. Clickthelink(blackline)thatconnectsthevariables. OnthePropertiespanel,settheEvaluate copy conditionpropertytoTrue. IntheCopy conditionpropertytextbox,typetheconditionyouwanttoplaceonthe link. Forinformationaboutthesyntaxusedinconditions,seeAppendix D,Conditional Expressions. Important! Whendrawingmorethanonelinktothesametargetvariable,makesure thattheconditionsassignedtoeachlinkaremutuallyexclusive. Note: Youcantemporarilydisabletheconditionplacedonalink.Formore information,seeDisablingaConditionPlacedonaLinkBetweenVariableson page 312.
221
222
223
To assign a value to a variable in the pipeline 1 2 3 4 5 Intheeditor,selecttheINVOKEorMAPstepcontainingthevariableyouwantto alter. ClickthePipelinetab. Selectthevariabletowhichyouwanttoassignavalue. Click onthetoolbar.
IntheInputFordialogbox,specifythevalueyouwanttoassigntothisvariable.
224
RightclickandselectCopy. Selectthevariableorvariablestowhichyouwanttoassignthecopiedvalue, rightclickandselectPaste. Note: YoucanonlycopyandpastevaluesforvariablesthatareinService InorPipeline Out. Note: Youcanonlypastethesetvalueifthetargetvariableisthesamedatatypeasthe sourcevariableandifthetargetvariablehaseitheranidenticalstructuretothesource variableorhasnodefinedstructure.
225
To drop a variable from the pipeline 1 2 3 4 Intheeditor,selecttheINVOKEorMAPstepwhosepipelinevariablesyouwantto drop. ClickthePipelinetab. Selectthevariablethatyouwanttodrop. Click onthetoolbar.
226
To add a variable to the pipeline 1 2 3 Intheeditor,selecttheINVOKEorMAPstepthatrepresentsthestageofthepipeline atwhichyouwanttoaddanewvariable. ClickthePipelinetab. Selectthepointwhereyouwanttoaddthenewvariable. Note: InanINVOKEstep,youcanaddanewvariabletoPipeline In,Service In, Service Out,orPipeline Out.InaMAPstep,youcanonlyaddnewvariablesin Pipeline Out. 4 5 6 Click andselectthetypeofvariablethatyouwanttocreate.
227
YoucanthinkoftransformersasaseriesofINVOKEstepsembeddedinaMAPstep.And likeINVOKEsteps,whenyouinsertatransformer,youneedtocreatelinksbetween pipelinevariablesandthetransformer.Youcanalsosetpropertiesforthetransformer andvalidatetheinputand/oroutputofthetransformer.Becausetransformersare containedwithinaMAPstep,theydonotappearasaseparateflowstepintheeditor. Transformersarewellsuitedforusewhenmappingdatafromonedocumentformatto another.Whenyoumapdatabetweenformats,youusuallyneedtoperformseveral name,structure,andvaluetransformations.Byusingtransformers,theflowservicein whichyoumapdatabetweenformatscouldpotentiallyconsistofasingleMAPstepin wheretransformersandlinksbetweenvariableshandleallofthedatatransformations.In thisway,youcouldseeyourentiredocumenttodocumentmappinginasingleview. Tip! Youcancreateaflowservicethatusestransformerstoconvertdatabetween documentformats(suchasanIDOCtoanXMLdocumentorRosettaNetPIPtoa proprietaryformat).Youcouldtheninvokethisserviceinotherflowserviceseach timeyouneedtoconvertbetweenthespecificdocumentformatsbeforeyoubegin processingdata. MAP step with transformers
228
Formoreinformationaboutbuiltinservices,seethewebMethodsIntegrationServerBuilt InServicesReference.
229
To insert a transformer 1 2 3 Intheeditor,selecttheMAPstepinwhichyouwanttoinsertatransformer. ClicktheTransformersareaonthePipelinetab. Click onthePipelinetabtoolbarandthenselecttheserviceyouwanttoinvoke. Iftheserviceyouwanttoinsertdoesnotappearinthelist,selectBrowsetoselectthe servicefromtheNavigationpanel.ThetransformerappearsunderTransformers onthe Pipelinetab. Selectthetransformerand,inthePropertiespanel,setitsproperties: For this property... Service Specify... Thefullyqualifiednameoftheservicethatwillbeinvokedat runtimeasatransformer.Whenyouinsertatransformer, Developerautomaticallyassignsthenameofthatserviceto theserviceproperty.Ifyouwanttochangetheservicethatis invokedbyatransformer,specifytheservicesfullyqualified nameinthefolderName:serviceNameformatorclick toselect aservicefromalist. Whetherornotyouwanttovalidatetheinputtothe transformeragainstthesignatureoftheservice.SelectTrueto validatetheinputofthetransformer.SelectFalseifyoudonot wanttovalidatetheinputofthetransformer. Forinformationaboutvalidatingtransformers,seeValidating InputandOutputforTransformersonpage 234. Validate output Whetherornotyouwanttovalidatetheoutputofthe transformeragainstthesignatureoftheservice.SelectTrueto validatetheoutputofthetransformer.SelectFalseifyoudo notwanttovalidatetheoutputofthetransformer. Forinformationaboutvalidatingtransformers,seeValidating InputandOutputforTransformersonpage 234. 5 ClickOK. Forinformationaboutdebuggingtransformers,seeDebuggingTransformerson page 237. Tip! WhenyouexpandatransformerintheTransformersareaofthePipelinetab,you canseetheService InvariablesandtheService Out variablesandalloftheexplicitlinks betweenthetransformerandthepipeline.Youmightfinditeasiertolinktransformer variableswhenyouarezoomedinonthetransformer.
Validate input
230
231
TocreatealinkbetweenatransformeroutputvariableandaPipeline Outvariable,do thefollowing: a b c SelectthetransformeranddragyourmousetothevariableinPipeline Outtowhich youwanttolinkthetransformervariable. IntheLink Fromlist,selectthetransformervariablethatyouwanttolinktothe selectedPipeline Outvariable. Repeatsteps aandbforeachoutputvariableproducedbythetransformer. YoucanlinkatransformeroutputvariabletomorethanonePipeline Outvariable. Important! Developerdoesnotautomaticallyaddtheoutputofatransformertothe pipeline.Ifyouwanttheoutputofatransformertoappearinthepipelineafterthe transformerexecutes,youneedtoexplicitlylinktheoutputvariabletoavariablein Pipeline Out. Important! Ifyoudonotlinkanyoutputvariablesorthetransformerdoesnothaveany outputvariables,thetransformerwillnotexecute.
Transformer Movement
Whenyoulinktoandfromaselectedtransformer,itmovesupanddowninthe Transformerscolumn.Thismovementorjumpingisbydesigntohelpminimizethe distancebetweenthetransformerandthevariableyouarelinkingitto. Transformersexhibitthefollowingbehaviorormovement: WhenatransformerisselectedandyouselectavariableinPipeline InorPipeline Out, thetransformerjumpsormovesupordownintheTransformerscolumnsothatitis directlyacrossfromtheselectedpipelinevariable. Whenyoufinishlinkingatransformeranditisnolongerselected,Developer anchorsoralignsthetransformernexttothehighestPipeline Outvariableitislinked to. Tostopthetransformerfromjumping,clickthetransformeragainorclickintheempty areasofthePipelinetab. Note: ToexpandyourviewofthePipelinetab,dragthemovableborderabovethetab. ThePipelinetabexpandstofitintheDeveloperwindow.
232
What Is Dimensionality? Dimensionalityreferstothenumberofarraystowhichavariablebelongs.Forexample, thedimensionalityofasingleStringis0,thatofasingleStringlistordocumentlistis1, andthatofasingleStringtableis2.AStringthatisachildofadocumentlisthasa dimensionalityof1.AStringlistthatisachildofadocumentlisthasadimensionality of 2. Example Inthefollowingexample,theunitPricevariablecannotbelinkedtonum1becausethe unitPricevariablehasadimensionalityof1(string(0)+documentlist(1)=1)andnum1 hasadimensionof0. unitPrice cannot be linked to num1 because of dimensionality differences
233
5 6
Copying Transformers
YoumaywanttousethesametransformermorethanonceinaMAPstep.Forexample, youmightwanttoconvertallthedatesinapurchaseordertothesameformat.Insteadof usingthe buttontolocateandselecttheservice,youcancopyandpastethe transformerservice. YoucanalsocopytransformersbetweenMAPstepsinthesamefloworMAPstepsin differentflowservices.
234
Important! Copyingatransformerdoesnotcopythelinksbetweentransformer variablesandpipelinevariablesoranyvaluesyoumighthaveassignedto transformervariablesusingtheSet Valuemodifier. To copy a transformer 1 2 3 4 5 Intheeditor,selecttheMAPstepcontainingthetransformerserviceyouwantto copy. ClickthePipelinetab. UnderTransformers,selectthetransformerserviceyouwanttocopy.Rightclickthe transformerandthenselectCopy. Topastethetransformer,clickanywhereunderTransformers.Rightclickandselect Paste. Linktheinputandoutputvariablesofthetransformerusingtheprocedures describedinLinkingVariablestoaTransformeronpage 231.
Expanding Transformers
Youmightfinditeasiertocreatelinkstotransformerswhenyouexpandthetransformer. Whenyouexpandatransformer,youcanseetheService InandtheService Outvariables forthetransformerandallofthelinksbetweenthepipelineandthetransformer variables. Pipeline tab with an expanded transformer
235
Note: Ifyouexpandatransformer,youcanusetheSet Valuemodifiertoassignavalue toavariableinService In. To expand and collapse the contents of a transformer Toexpandthecontentsofatransformer,clickComposeExpand. Tocollapsethecontentsofatransformer,clickComposeCollapse. Tip! Youcanalsoexpand/collapseatransformerbydoubleclickingit. Note: IfIntegrationServerdisplaysamessagestatingthatthetransformercannot befound,thentheserviceinvokedbythetransformerhasbeenrenamed,moved, ordeleted.Youmustusethetransformerpropertiestorenamethetransformer. Seethefollowingsectionformoreinformation.
Renaming Transformers
IfIntegrationServerdisplaysthemessageTransformernotfoundwhenyoutryto expandatransformerorwhenyoupointthemousetothetransformer,thentheservice referencedbythetransformerhasbeenrenamed,moved,ordeleted.Youneedtochange theServicepropertyofthetransformersothatthetransformerpointstothemoved,or renamedservice. Iftheservicereferencedbythetransformerhasbeendeleted,youmaywanttodeletethe transformer. Tip! Youcanenablesafeguardssothatyoudonotinadvertentlyaffectorbreakother serviceswhenyoumove,rename,ordeleteaservice.Formoreinformation,see SpecifyingDependencyCheckingSafeguardsonpage 47. To rename a transformer 1 2 3 4 UsetheNavigationpaneltodeterminethenewnameorlocationoftheservicecalled bythetransformer. Opentheflowservicecontainingthetransformeryouwanttorename. Intheeditor,selecttheMAPstepcontainingthetransformer.Then,onthePipelinetab, selectthetransformeryouwanttorename. IntheServicepropertyonthePropertiespanel,deletetheoldnameandtypeinthe servicesnewfullyqualifiednameinthefolderName:serviceNameformat,orclick to selectaservicefromalist.
236
Debugging Transformers
Whenyoutestanddebugaflowservice,youcanusethefollowingtestingand debuggingtechniqueswithtransformers: StepintoaMAPstepandstepthroughtheexecutionofeachtransformer.Formore informationaboutsteppingintoandoutofaMAPstep,seeUsingtheStepTools withaMAPSteponpage 306. Setabreakpointonatransformersothatserviceexecutionstopswhenthe transformerisencountered.Formoreinformationaboutsettingbreakpoints,see SettingBreakpointsonpage 307. Disableatransformersothatitdoesnotexecuteatruntime.Formoreinformation aboutdisablingtransformers,seeDisablingTransformersonpage 311. Note: YoucanalsousethePipelinedebugpropertywhentestinganddebuggingthe flowservicetoviewtheactivityofatransformer.ThePipelinedebugproperty enablesyoutoeasilytestanotherserviceagainstthecurrentsetofpipelinevaluesor ifyouwanttorestorethepipelinetothisexactstatelaterinthedebuggingprocess.
237
238
239
Creating an IS Schema
AnISschemaisafreestandingelement intheNavigationpanelthatactsasthe blueprintormodelagainstwhichyouvalidateanXMLdocument.TheISschema providesaformaldescriptionofthestructureandcontentforavalidinstancedocument (theXMLdocument).Theformaldescriptioniscreatedthroughthespecificationof constraints.AnISschemacancontainthefollowingtypesofconstraints: Structural constraintsinanISschemadescribetheelements,attributes,andtypesthat appearinavalidinstancedocument.Forexample,anISschemaforapurchaseorder mightspecifythatavalid<lineItem>elementmustconsistofthe<itemNumber>, <size>,<color>,<quantity>,and<unitPrice>elementsinthatorder. Content constraints inanISschemadescribethetypeofinformationthatelementsand attributescancontaininavalidinstancedocument.Forexample,the<quantity> elementmightberequiredtocontainavaluethatisapositiveinteger. Duringdatavalidation,thevalidationengineinwebMethodsIntegrationServer comparestheelementsandattributesintheinstancedocumentwiththestructuraland contentconstraintsdescribedforthoseelementsandattributesintheISschema.The validationengineconsiderstheinstancedocumenttobevalidwhenitcomplieswiththe structuralandcontentconstraintsdescribedintheISschema.Formoreinformation aboutdatavalidation,seeChapter 10,PerformingDataValidation. YoucancreateISschemasfromanXMLschema,aDTD(DocumentTypeDefinition),or anXMLdocumentthatreferencesanexistingDTD.ForinformationaboutcreatingIS schemas,seeCreatinganISSchemaonpage 245.
240
Schema editor
Specifies the target namespace to which the schema belongs.
...to view and/or edit the component in the schema details area.
Schema Browser
TheschemabrowserdisplaysthecomponentsofanISschemainaformatthatmirrors thestructureandcontentofthesourcefile.Theschemabrowsergroupstheglobal elementdeclarations,attributedeclarations,simpletypedefinitions,andcomplextype definitionsfromthesourcefileunderthetoplevelheadingsELEMENTS,ATTRIBUTES, SIMPLETYPES,andCOMPLEXTYPES.Forexample,theELEMENTSheadingcontains alloftheglobalelementdeclarationsfromtheXMLschemaortheDTD. Ifthesourcefiledoesnotcontainoneoftheseglobalcomponents,thecorresponding headingisabsent.Forexample,ifyoucreateanISschemafromanXMLschemathatdoes notcontainanyglobalattributedeclarations,theschemabrowserdoesnotdisplaythe ATTRIBUTESheading.AnISschemacreatedfromaDTDneverdisplaystheSIMPLE TYPESorCOMPLEXTYPESheadingsbecauseDTDsdonotcontaintypedefinitions. Note: ADTDdoescontainattributedeclarations.However,theschemabrowserdoes notdisplaytheATTRIBUTESheadingforISschemasgeneratedfromDTDs.Thisis becauseanattributedeclarationinaDTDassociatestheattributewithanelement type.Accordingly,theschemabrowserdisplaysattributesaschildrenoftheelement typedeclarationtowhichtheyareassigned.Formoreinformation,seethe webMethodsIntegrationServerSchemaReference. TheschemabrowserusesuniquesymbolstorepresentthecomponentsoftheISschema. EachofthesesymbolsrelatestoacomponentofanXMLschemaoraDTD.Thefollowing tableidentifiesthesymbolforeachcomponentthatcanappearinanISschema.
241
Note: Inthefollowingtable,globalreferstoelements,attributes,andtypesdeclaredor definedasimmediatechildrenofthe<schema>elementinanXMLschema.All elementtypedeclarationsinaDTDareconsideredglobaldeclarations. Symbol Description Element declaration.Anelementdeclarationassociatesanelementnamewith atypedefinition.Thissymbolcorrespondstothe<element>declarationin anXMLschemaandtheELEMENTdeclarationinaDTD. Element reference.Anelementreferenceisareferencefromanelement declarationinacontentspecificationtoagloballydeclaredelement. InanISschemageneratedfromanXMLschema,thissymbolcorresponds totheref="globalElementName"attributeinan<element>declaration. InanISschemageneratedfromDTD,thissymbolappearsnexttoan elementthatisachildofanotherelement.Theparentelementhasonly elementcontent. Any element declaration. InXMLschema,an<any>elementdeclarationisa wildcarddeclarationusedasaplaceholderforoneormoreundeclared elementsinaninstancedocument. InaDTD,anelementdeclaredtobeoftypeANYcancontainany wellformedXML.Thissymbolcorrespondstoanelementdeclaredtobeof typeANY. Becausean<any>elementdeclarationdoesnothaveaname,theschema browserusesAnyasthenameoftheelement. Attribute declaration.Anattributedeclarationassociatesanattributename withasimpletypedefinition.ThissymbolcorrespondstotheXMLschema <attribute>declarationortheattributeinaDTDATTLISTdeclaration. Attribute reference.Anattributereferenceisareferencefromacomplextype definitiontoagloballydeclaredattribute.Thissymbolcorrespondstothe ref="globalAttributeName"attributeinanattributedeclaration. DTDsdonothaveattributereferences.Consequently,attributereferences donotappearinISschemasgeneratedfromDTDs. Any attribute declaration.Ananyattributedeclarationisawildcard declarationusedasaplaceholderforundeclaredattributesinaninstance document.Thissymbolcorrespondstothe<anyAttribute>declarationin anXMLschema. Becausean<anyAttribute>declarationdoesnotspecifyanattributename, theschemabrowserusesAnyasthenameoftheattribute.
242
Symbol
Description Simple type definition.Asimpletypedefinitionspecifiesthedatatypefora textonlyelementoranattribute.Unlikecomplextypedefinitions,simple typedefinitionscannotcarryattributes.Thissymbolcorrespondstothe <simpleType>elementinanXMLschema. Ifthesimpletypedefinitionisunnamed(ananonymoustype),theschema browserdisplaysAnonymousasthenameofthesimpletypedefinition. Complex type definition.Acomplextypedefinitiondefinesthestructureand contentforelementsofcomplextype.(Elementsofcomplextypecan containchildelementsandcarryattributes.)Thissymbolcorrespondsto the<complexType>elementinanXMLschema. Ifthecomplextypedefinitionisunnamed(ananonymoustype),the schemabrowserdisplaysAnonymousasthenameofthecomplextype definition. Sequence content model. Asequencecontentmodelspecifiesthatthechild elementsintheinstancedocumentmustappearinthesameorderinwhich theyaredeclaredinthecontentmodel.Thissymbolcorrespondstothe <sequence>compositorinanXMLschemaorasequencelistinanelement typedeclarationinaDTD. Choice content model.Achoicecontentmodelspecifiesthatonlyoneofthe childelementsinthecontentmodelcanappearintheinstancedocument. Thissymbolcorrespondstothe<choice>compositorinanXMLschemaor achoicelistinaDTDelementtypedeclaration. All content model.Anallcontentmodelspecifiesthatchildelementscan appearonce,ornotatall,andinanyorderintheinstancedocument.This symbolcorrespondstothe<all>compositorinanXMLschema. Mixed content. Elementsthatcontainmixedcontentallowcharacterdatato beinterspersedwithchildelements.Thissymbolcorrespondstothe mixed="true"attributeinanXMLschemacomplextypedefinitionoraDTD elementlistinwhichthefirstitemis#PCDATA. Empty content.InanXMLschema,anelementhasemptycontentwhenits associatedcomplextypedefinitiondoesnotcontainanyelement declarations.Anelementwithemptycontentmaystillcarryattributes. InaDTD,anelementhasemptycontentwhenitisdeclaredtobeoftype EMPTY.
243
... the schema details area displays information about that element.
... the schema details area displays fields for viewing/editing the simple type.
244
Creating an IS Schema
InDeveloper,youcancreateISschemasfromXMLschemadefinitions,DTDs,andXML documentsthatreferenceanexistingDTD.TheresultingISschemacontainsallofthe definedtypes,declaredelements,anddeclaredattributesfromthesourcefile. Note: TheactualworkofcreatinganISschemaisperformedbytheschemaprocessor. TheschemaprocessoristhesubsystemofthewebMethodsIntegrationServerthat compilesanISschemafromasourcefile. Note: YoucanfindsampleXMLschemadefinitionsinthefollowingdirectory: Developer_directory\samples\xml\xsd.YoucanalsofindXMLschemadefinitions andDTDsontheWebsitesforthesegroups:(www.w3c.organd www.openapplications.org). To create an IS schema 1 2 3 OntheFilemenu,clickNew. IntheNewdialogbox,selectSchema,andthenclickNext. IntheNewSchemadialogbox,nexttoFolder,selectthefolderwhereyouwantto savetheISschema.
245
IntheNewSchemadialogbox,selectoneofthefollowingtospecifythesourceforthe ISschema. Specify... XML DTD XML Schema To... CreateanISschemabasedonanexistingDTDreferencedbyanXML document. CreateanISschemabasedonaDTD. CreateanISschemabasedonanXMLschemadefinition.
Important! YoucancreateanISschemafromanXMLdocumentonlyiftheXML documentreferencesanexistingDTD. 6 7 ClickNext. IntheEnter the URL or select a local filebox,dooneofthefollowing:
ToaddtheISschematothedefaultschemadomain,selectUse default schema domain. ToaddtheISschemastoaspecifiedschemadomain,selectUse specified schema domainandprovidethenameoftheschemadomaininthetextbox.Aschema domainnamemustbeastringthatisavalidnameofanelementinIntegration Server.FormoreinformationaboutnamingrestrictionsforIntegrationServer elements,seeGuidelinesforNamingElementsonpage 46. Formoreinformationaboutschemadomains,seeAboutSchemaDomainson page 245.
246
ClickFinish.DevelopergeneratestheISschemausingthedocumentyouspecified anddisplaysitintheeditor. Note: YoumightreceiveerrorsorwarningswhencreatinganISschemafromanXML schemadefinitionorDTD.Formoreinformationabouttheseerrorsandwarnings, seeAppendix G,ValidationErrorsandExceptions. Note: WhencreatinganISschemafromanXMLschemadefinition,Developer validatestheschemaanddoesnotcreatetheISschemaiftheXMLschemadefinition isnotvalid.Formoreinformation,seeISSchemaGenerationErrorsandWarnings onpage 497.
247
The string simple type cannot be edited. This globally defined simple type can be edited. This simple type cannot be edited because it refers to a globally defined simple type. This anonymous simple type can be edited.
248
SimpletypesinanISschemacanbeusedascontentconstraintsforfieldsinpipeline validation.Consequently,changestoasimpletypealsoaffecteveryfieldtowhichthe simpletypeisappliedasacontentconstraint. Tip! Youcancreateacustomsimpletypetoapplytoafieldasacontenttype constraint.Formoreinformationaboutcreatingacustomsimpletypeand applyingconstraintstofields,seeSettingConstrainingFacetValueson page 249. ChangestoasimpletypedefinitionaresavedintheISschema.Ifyouregeneratethe ISschemafromtheXMLschemadefinition,yourchangeswillbeoverwritten. Whenyouedittheconstrainingfacetsappliedtoasimpletypedefinition,youcan onlymaketheconstrainingfacetvaluesmorerestrictive.Theconstrainingfacets cannotbecomelessrestrictive.Formoreinformationaboutsettingvaluesfor constrainingfacets,seeSettingConstrainingFacetValuesonpage 249. Tip! Ifyouwanttoeditcomplextypedefinitions,attributedeclarations,element declarations,orthestructureoftheschema,youneedtoedittheXMLschemaand thenregeneratetheISschema. To edit a simple type definition 1 2 3 OpentheISschemathatcontainsthesimpletypeyouwanttoedit. Intheschemabrowserareaoftheeditor,selectthesimpletypethatyouwanttoedit. The symbolappearsnexttosimpletypes. Intheschemadetailsarea,specifytheconstrainingfacetsthatyouwanttoapplyto thesimpletype.Formoreinformationaboutconstrainingfacets,seeConstraining Facetsonpage 473. OntheFilemenu,clickSave.
249
Youcanviewtheconstrainingfacetvaluessetinthetypedefinitionsfromwhichasimple typewasderivedbyclickingthe Base Constraints button.Baseconstraintsarethe constrainingfacetvaluessetinallthetypedefinitionsfromwhichasimpletypeis derivedfromtheprimitivetypetotheimmediateparenttype.Theseconstraintvalues representthecumulativefacetvaluesforthesimpletype. Whenyouedittheconstrainingfacetsforasimpletypedefinition,youcanonlymakethe constrainingfacetsmorerestrictivetheappliedconstrainingfacetscannotbecomeless restrictive.Forexample,ifthelengthvalueisappliedtothesimpletype,themaxLengthor minLengthvaluescannotbesetbecausethemaxLengthandminLengthfacetsareless restrictivethanlength.
250
c 4 5 6
251
252
IntegrationServeralwaysexpandselementreferencestoelementdeclarationsof simpletypeinline.
253
IntegrationServercancreateseparateISdocumenttypesfornamedcomplextypesor expanddocumenttypesinlinewithinonedocumenttype.Formoreinformation,see ExpandingComplexDocumentTypesInlineonpage 254. IntegrationServergeneratesaseparateISdocumenttypeforanyreferencedcomplex typeandgeneratesanISdocumenttypeforanytypesderivedfromthereferenced complextypes. YoucanspecifywhetherornotIntegrationServergeneratesISdocumenttypesforall complextypesregardlessofwhetherthetypesarereferencedornot.When watt.core.schema.generateAllTypeDocumentsissettotrueIntegrationServer generatesanISdocumenttypeforeverycomplextypedefinitionintheXMLschema. Whenthispropertyissettofalse,IntegrationServergeneratesaseparateIS documenttypeforacomplextypeonlyifthecomplextypeisreferencedorisderived fromareferencedcomplextype. IntegrationServercancreateonefieldforasubstitutiongrouporcreatefieldsfor everymemberelementinasubstitutiongroup.Formoreinformation,see GeneratingFieldsforSubstitutionGroupsonpage 256. Expanding Complex Document Types Inline IntegrationServerprocessescomplextypesfromanXMLschemainoneoftwoways, dependingonanoptionyouselectwhenyoucreateanewISdocumenttype.Onewayis toexpandthecomplextypeasaninlinedocumenttypeintheeditor.Theotherwayis togenerateaseparateISdocumenttypeforeachcomplextypeintheschema,with referencestothosedocumenttypes. Example XML Schema
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://usecases/xsd2doc/01" xmlns:uc="http://usecases/xsd2doc/01" > <xsd:element name="eltA" type="uc:documentX" /> <xsd:complexType name="documentX"> <xsd:sequence> <xsd:element name="eltX_E" type="xsd:string" /> <xsd:element name="eltX_F" type="uc:documentY" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="documentY"> <xsd:sequence> <xsd:element name="eltY_G" type="xsd:string" /> <xsd:element name="eltY_H" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:schema>
254
Ifyouselecttheoptiontogeneratecomplextypesasseparatedocumenttypes,the schemaprocessorgeneratesthedocumenttypesasfollows.Inthisexample,theschema processorgeneratedthreeISdocumenttypesoneforthecomplextypenamed documentY,oneforthecomplextypenameddocumentX(withareferencetodocumentY), andonefortherootelementeltA(withreferencestodocumentXanddocumentY): Complex types generated as separate document types
255
Theschemaprocessorgeneratesallthreedocumenttypesinthesamefolder. Note: Ifthecomplextypeisanonymous,theschemaprocessorexpandsitinlinerather thangenerateaseparatedocumenttype. IftheXMLschemayouareusingtogenerateanISdocumenttypecontainsrecursive complextypes(thatis,elementdeclarationsthatrefertotheirparentcomplextypes directlyorindirectly),youcanavoiderrorsinthedocumenttypegenerationprocessby selectingtheoptiontogeneratecomplextypesasseparatedocumenttypes.(Selectingthe optiontoexpandcomplextypesinlinewillresultininfinitelyexpandingnested documents.) Generating Fields for Substitution Groups IntegrationServerprocessessubstitutiongroupelementsinoneoftwoways,depending onthevalueofthewatt.core.schema.generateSubstitutionGroupsproperty: Whenthispropertyissettotrue,theschemaprocessorimportsallsubstitutiongroup members(headelementandsubstitutableelements)asoptionalfields,eventhough theyaredefinedasrequiredelementsintheXMLschemadefinition. Whenthispropertyissettofalse,theresultingdocumenttypecontainsafieldthat correspondstotheheadelementinthesubstitutiongroup,butdoesnotcontainany elementsformembersofthesubstitutiongroup.Thisisthedefault. Iftheheadelementisdeclaredasabstract,theIntegrationServerdoesnotincludethat elementintheISdocumenttype. To create an IS document type from an XML document, DTD, or XML schema 1 2 3 OntheFilemenu,clickNew. IntheNewdialogbox,selectDocument Type andclickNext. IntheNewDocumentTypedialogbox,dothefollowing: a b InthelistnexttoFolder,selectthefolderinwhichyouwanttosavetheIS documenttype. IntheNamefield,typeanamefortheISdocumenttypeusinganycombinationof letters,numbers,and/ortheunderscorecharacter.Forinformationaboutreserved wordsorcharacters,seeAboutElementNamesonpage 45. ClickNext.
256
UnderSelect a source,selectoneofthefollowing: Select... XML DTD XML Schema To... CreateanISdocumenttypethatmatchesthestructureandfieldsin anXMLdocument. CreateanISdocumenttypethatmatchesthestructureandfieldsin aDTD. CreateanISdocumenttypethatmatchesthestructureandfieldsin anXMLschemadefinition.
5 6
ToaddtheISschematothedefaultschemadomain,selectUse default schema domain. ToaddtheISschemastoaspecifiedschemadomain,selectUse specified schema domainandprovidethenameoftheschemadomaininthetextbox.Aschema domainnamemustbeastringthatisavalidnameofanelementinIntegration Server.FormoreinformationaboutnamingrestrictionsforIntegrationServer elements,seeGuidelinesforNamingElementsonpage 46. Formoreinformationaboutschemadomains,seeAboutSchemaDomainson page 245.
Dooneofthefollowingbasedonyourselectioninstep4:
257
IfyouselectedXML Schema,clickNext anddothefollowing: 1 SelecttheelementsthatyouwanttouseastherootelementsfortheIS documenttype.TheISdocumenttypewillcontainalloftheselectedroot elements. Toselectmultipleelements,presstheCTRLkeywhileselectingelements. 2 UnderComplex type processing,selectExpand complex types inlineifyouwant complextypestobeexpandedwithintheISdocumenttype.Thatis,the complextypewillbeadocumentvariablewithintheISdocumenttype. SelectGenerate complex types as document typesifyouwantseparateIS documenttypescreatedforthecomplextypesintheXMLschemadefinition. TheresultingISdocumenttypecontainsdocumentreferencesinplaceofa documentvariableforthecomplextype. 3 SelecttheGenerate all element references as document type referencescheckboxif youwantIntegrationServertoreplaceallreferencestoglobalelementswith documentreferenceseveniftheelementisreferencedonlyonce.Integration ServergeneratesanISdocumenttypeforeachreferencedelement. LeavethecheckboxclearedifyouwantIntegrationServertoreplacean elementreferencewithadocumentreferenceonlyiftheelementisreferenced morethanonce.Whenanelementisreferencedonlyonce,Developerreplaces theelementreferencewithadocumentfield. 4 SelecttheappropriateoptiontospecifywhetherDevelopershouldprocess complextypesbyexpandingtheminlineintheeditororbygeneratingthem asseparateISdocumenttypes.ClickNext. IfyouwanttheISdocumenttypetousedifferentprefixesthanthosespecified intheXMLschemadefinition,selecttheprefixyouwanttochangeandentera newprefix.Repeatforeachnamespaceprefixthatyouwanttochange. TheprefixyouassignmustbeuniqueandmustbeavalidXMLNCName 6 ClickFinish.DevelopergeneratestheISdocumenttype(s)anddisplaysthem intheeditor.DeveloperalsogeneratesanISschemaanddisplaysitinthe Navigationpanel.
DevelopercreatestheISdocumenttypeandsavesitontheIntegrationServer. Developermightcreatemultipledocumenttypesdependingonthecontentsofthe sourcefileandtheprocessingoptionsyouselected.Ifyouwanttoaddoreditfieldsin theISdocumenttype,seeCreatinganEmptyISDocumentTypeonpage 251. Note: YoumightreceiveerrorsorwarningswhencreatinganISdocumenttype fromaDTDorXMLSchemadefinition.Formoreinformationabouttheseerrors andwarnings,seeValidationErrorsonpage 478.
258
259
Important! IfyoudonotselecttheOverwrite existing elements when importing referenced elementscheckboxandtheBrokerdocumenttypereferencesanelementwiththe samenameasanexistingIntegrationServerelement,Developerwillnotcreatethe publishabledocumenttype. Important! Ifyouchoosetooverwriteexistingelementswithnewelements,keepin mindthatdependentsoftheoverwrittenelementswillbeaffected.Forexample, supposetheaddressdocumenttypedefinedtheinputsignatureofaflowservice deliverOrder.OverwritingtheaddressdocumenttypemightbreakthedeliverOrderflow serviceandanyotherservicesthatinvokeddeliverOrder. To create an IS document type from a Broker document type 1 2 3 OntheFilemenu,clickNew. IntheNewdialogbox,selectDocument Type andclickNext. IntheNewDocumentTypedialogbox,dothefollowing: a b c 4 5 InthelistnexttoFolder,selectthefolderinwhichyouwanttosavetheIS documenttype. IntheNamefield,typeanamefortheISdocumenttypeusinganycombinationof letters,numbers,and/ortheunderscorecharacter. ClickNext.
UnderSelect a source,selectBroker Document Type,andclickNext. IntheNewDocumentTypedialogbox,dothefollowing: a IntheBroker Namespacefield,selecttheBrokerdocumenttypefromwhichyou wanttocreateanISdocumenttype.TheBroker Namespacefieldlistsallofthe BrokerdocumenttypesontheBrokerterritorytowhichtheIntegrationServeris connected. IfyouwanttoreplaceexistingelementsintheNavigationpanelwithidentically namedelementsreferencedbytheBrokerdocumenttype,selecttheOverwrite existing elements when importing referenced elementscheckbox. Important! Overwritingtheexistingelementscompletelyreplacestheexisting elementwiththecontentofthereferencedelement.Anyelementsonthe IntegrationServerthatdependonthereplacedelement,suchasflowservices, ISdocumenttypes,andspecifications,mightbeaffected.
260
YoucanassociateonlyoneISdocumenttypewithagivenBrokerdocumenttype. IfyoutrytocreateapublishabledocumenttypefromaBrokerdocumenttype thatisalreadyassociatedwithapublishabledocumenttypeonyourIntegration Server,Developerdisplaysanerrormessage. InthePublicationcategoryofthePropertiespanel,theBroker doc typeproperty displaysthenameoftheBrokerdocumenttypeusedtocreatethepublishable documenttype.Or,ifyouarenotconnectedtoaBroker,thisfielddisplaysNot Publishable.Youcannoteditthecontentsofthisfield.Formoreinformationabout thecontentsofthisfield,seethePublishSubscribeDevelopersGuide. OnceapublishabledocumenttypehasanassociatedBrokerdocumenttype,you needtomakesurethatthedocumenttypesremaininsync.Thatis,changesinone documenttypemustbemadetotheassociateddocumenttype.Youcanupdate onedocumenttypewithchangesintheotherbysynchronizingthem.For informationaboutsynchronizingdocumenttypes,seethePublishSubscribe DevelopersGuide.
261
262
263
Using an IS Document Type to Build a Document Reference or Document Reference List Field
YoucanuseanISdocumenttypetobuildadocumentreferenceordocumentreference listfield.ByreferencinganISdocumenttypeinsteadofcreatinganewone,youcan reducethetimerequiredtocreatefieldsandmaintainbetterconsistencyforfieldnames. Youmightfindreferencingfieldsespeciallyusefulforinformationthatisrepeatedover andoveragain,suchasaddressinformation. Tip! Youcanalsouseapublishabledocumenttypetobuildadocumentreferenceor documentreferencelistfield.
264
To use a document type to build a document reference or document reference list 1 Onthe Input/Outputtab,click Click... Document Reference Document Reference List 2 3 4 5 To... CreateadocumentfieldbasedonanISdocumenttype. CreateadocumentlistfieldbasedonanISdocument type. onthetoolbarandselectoneofthefollowing:
IntheNamefield,typethefullyqualifiednameoftheISdocumenttypeorselectit fromthelistnexttoFolder. ClickOK. Typethenameofthefield. PressENTER. Important! Ifyouarecreatingadocumentreferenceordocumentreferencelistfield basedonanISdocumenttype,youcannotdirectlyadd,delete,ormodifyits membersontheInput/Output tab.Toeditthereferenceddocumentordocument list,selectitintheNavigationpanel,lockit,andthenedititsfieldsintheeditor. Tip! YoucanalsoaddadocumentreferencebydragginganISdocumenttypefrom theNavigationpaneltotheboxbelowtheValidate inputorValidate outputcheckboxes ontheInput/Outputtab.
265
OnthePropertiespanel,theGeneralcategorycontainsthepropertiesofthefieldandthe Constraintscategorycontainsvalidationconstraintsforthefield.(Formoreinformation aboutspecifyingvalidationconstraints,seeApplyingConstraintstoVariableson page 273.) Note: UsetheXML Namespacepropertytoassignanamespacenametoafield.The namespacenameindicatesthenamespacetowhichthefieldbelongs.When generatingXMLschemadefinitionsandWSDLdocuments,theIntegrationServer usesthevalueoftheXML Namespacefieldalongwiththefieldname(thelocalname)to createaqualifiedname(QName)forthefield.Formoreinformationaboutsettingthe XMLNamespaceproperty,seetheWebServicesDevelopersGuide. TheText Field,Password,Large Editor,andPick List optionsoftheString display typeproperty affecthowyouinputdataforthefieldasfollows.Theseoptionsarenotavailablefor ObjectsandObjectlists. If you want the input Enteredinatextfield Enteredasapassword,withasterisksreflectedinsteadofcharacters Select... Text Field (default) Password
Enteredinalargetextareainsteadofatextfield.Thisisusefulifyou Large Editor expectalargeamountoftextasinputforthefield,oryouneedto haveTABornewlinecharactersintheinput Tobelimitedtoapredefinedlistofvalues UsethePick list choicespropertysEditbuttontodefinethevaluesthat willappearaschoiceswhenDeveloperpromptsforinputatruntime. Note: Whenexecutingaservice,ifyouwantanullvaluetobeavailableasthefirst optioninthePick List,setthedev.uicontrols.picklist.putNullStringAtTop configurationparameterinthedeveloper.cnffilelocatedinthe Developer_directory\configdirectorytotrue.Bydefault,thisconfigurationparameter issettofalseandDeveloperaddsthenullvaluetotheendofthePick List. Pick List
266
Creating a Specification
AspecificationisafreestandingISelementthatdefinesasetofserviceinputsand outputs.Ifyouhavemultipleserviceswiththesameinputandoutputrequirements,you canpointeachservicetoasinglespecificationratherthanmanuallyspecifyindividual inputandoutputfieldsineachservice. Usingspecificationsprovidesthefollowingbenefits: Itreducestheeffortrequiredtobuildeachflow. Itimprovesaccuracy,becausethereislessopportunitytointroduceatypingerror whendefiningafieldname. Itmakesfuturespecificationchangeseasiertoimplement,becauseyoucanmakethe changeinoneplace(thespecification)ratherthanineachindividualservice. Ifyouuseaspecification,keepinmindthat: Anychangethatyoumaketothespecificationisautomaticallypropagatedtoall servicesthatreferencethatspecification.(Thishappensthemomentyousavethe updatedspecificationtotheserver.) Aspecificationwhollydefinestheinputandoutputparametersforaservicethat referencesit.Thismeansthatyoucannotdirectlyaltertheservicesinputandoutput parametersthroughitsInput/Outputtab.(Developerdisplaystheparameters,butdoes notallowyoutochangethem.)Tomakechangestotheinputandoutputparameters oftheservice,youmustmodifythespecification(whichaffectsallservicesthat referenceit)ordetachthespecificationsoyoucanmanuallydefinetheparameterson theservicesInput/Outputtab. YoucreateaspecificationwithDeveloper.Youassignaspecificationtoaserviceusingthe Input/Outputtabfortheservice.
267
To create a specification 1 2 3 OntheFilemenu,clickNew. IntheNewdialogbox,selectSpecification,andclickNext. IntheNewServiceSpecificationdialogbox,dothefollowing: a b InthelistnexttoFolder,selectthefoldertowhichyouwanttosavethe specification. IntheNamefield,typeanameforthespecificationusinganycombinationof letters,numbers,andtheunderscorecharacter. Important! Developerdoesnotallowtheuseofcertainreservedwords(suchasfor, while,andif )asnames.Ifyouspecifyanamethatisareservedword,youwill receiveanerrormessage.Whenthishappens,useadifferentnameortryaddinga letterornumbertothenameyouspecifiedtomakeitvalid. c 4 ClickFinish.
Ifyouwantthisspecificationtoreferenceanotherspecification,dothefollowingin theeditor: a b InSpecification Referencefield,typethespecificationsnameorclick fromalist. Skiptherestofthisprocedure. Important! Typically,youdonotbuildaspecificationbyreferencinganother specification.However,itisusefultodothisinthesituationwhereyouwilluse thespecificationwithagroupofserviceswhoserequirementsareexpectedto change(thatis,theymatchanexistingspecificationnowbutareexpectedto changeatsomepointinthefuture).Referencingaspecificationgivesyouthe convenienceofusinganexistingspecificationandtheflexibilitytochangethe specificationforonlythatsinglegroupofservicesinthefuture. toselectit
IfyouwanttoreferenceanISdocumenttypefortheInputorOutputhalfofthe specification,dothefollowing: a IntheInputorOutputfield(dependingonwhichhalfofthespecificationyouwant toassigntheISdocumenttypeto),typetheISdocumenttypenameorclick to selectitfromalist.YoucanalsodraganISdocumenttypefromtheNavigation paneltotheboxbelowtheValidate inputorValidate outputcheckboxesonthe Input/Outputtab.ForinformationaboutcreatingISdocumenttypes,seeCreating anISDocumentTypeonpage 250. Tip! YoucanselectapublishabledocumenttypeoranISdocumenttypeto definetheinputoroutputhalfofthespecification.
268
1 2 3
269
270
10
What Is Data Validation? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Applying Constraints to Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Performing Input/Output Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Performing Document Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Performing Pipeline Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Performing XML Validation in webMethods Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . Performing Validation from within a Java Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Validation Errors and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
271
272
273
To apply constraints to a variable 1 Selectthevariabletowhichyouwanttoapplyconstraints. YoucanapplyconstraintstovariablesinISdocumenttypes,variablesina specification,andvariablesdeclaredontheInput/Outputtab. 2 IntheConstraintscategoryonthePropertiespanel,dothefollowing: a Ifyouwanttorequiretheselectedvariabletoexistatruntime,settheRequired propertytoTrue.Iftheexistenceofthevariableisoptional,setthispropertyto False. Ifyouwanttoallowavariabletohaveanullvalue,settheAllow null propertyto True.Ifyouwantthevalidationenginetogenerateanerrorwhenthevariablehas anullvalue,settheAllow null propertytoFalse. Iftheselectedvariableisadocumentordocumentlistandyouwanttoallowitto containundeclaredchildvariables,settheAllow unspecified fieldspropertytoTrue. IfthispropertyissettoFalse,anychildvariablesthatexistinthepipelinebutdo notappearinthedeclareddocumentfieldwillbetreatedaserrorsatruntime. Note: ThestateoftheAllow unspecified fieldspropertydetermineswhetherthe documentisopenorclosed.Anopendocumentpermitsundeclaredfields (variables)toexistatruntime.Acloseddocumentdoesnotallowundeclared fieldstoexistatruntime.TheIntegrationServerconsidersadocumenttobe openiftheAllow unspecified fieldspropertyissettoTrueandconsidersa documenttobeclosediftheAllow unspecified fieldspropertyissettoFalse. d IftheselectedvariableisaString,Stringlist,orStringtable,andyouwantto specifycontentconstraintsforthevariable,click andthendooneofthe following:
274
Note: AcontenttypecorrespondstoasimpletypefromanXMLSchema definition.AllofthechoicesintheContent typelistcorrespondtosimpletypes definedinXMLSchemaPart2:Datatypes. e IftheselectedvariableisanObjectorObjectlist,fortheJava wrapper typeproperty, selecttheJavaclassforthevariablecontents.IfyoudonotwanttoapplyaJava classoriftheJavaclassisnotlisted,selectUNKNOWN. FormoreinformationaboutsupportedJavaclassesforObjectsandObjectlists, seeJavaClassesforObjectsonpage 431. 3 4 Repeatthisprocedureforeachvariabletowhichyouwanttoapplyconstraintsinthe ISdocumenttype,specification,serviceinput,orserviceoutput. OntheFilemenu,clickSave.
275
276
ClicktheCustomizebutton.Developermakestheconstrainingfacetfieldsbelowthe Content typelistavailablefordataentry(thatis,changesthebackgroundofthe constrainingfacetfieldsfromgreytowhite).Developerchangesthenameofthe contenttypetocontentType_customized. InthefieldsbelowtheContent typelist,specifytheconstrainingfacetvaluesyouwant toapplytothecontenttype.Formoreinformationaboutconstrainingfacets,see ConstrainingFacetsonpage 473. ClickOK.Developersavesthechangesasanewcontenttypenamed contentType_customized. Note: TheconstrainingfacetsdisplayedbelowtheContent typelistdependonthe primitivetypefromwhichthesimpletypeisderived.Primitivetypesarethebasic datatypesfromwhichallotherdatatypesarederived.Forexample,ifthe primitivetypeisstring,Developerdisplaystheconstrainingfacetsenumeration, length,minLength,maxLength,andpattern.Formoreinformationaboutprimitive types,refertoXMLSchemaPart2:Datatypesat http://www.w3.org/TR/xmlschema2/. Important! Developerthrowsexceptionsatdesigntimeiftheconstrainingfacetvalues foracontenttypearenotvalid.Formoreinformationabouttheseexceptions,see Appendix G,ValidationErrorsandExceptions
277
Note: Thedeclaredinputandoutputparametersforaservicearesometimescalledthe signatureoftheservice. Youcanspecifythatyouwanttoperforminput/outputvalidationforaserviceinthe followingways: Input/Output tab.SetpropertiesontheInput/Outputtabtoinstructthevalidationengine inwebMethodsIntegrationServertovalidatetheinputsand/oroutputsoftheservice everytimetheserviceexecutes.Ifaclientcallstheserviceandtheinputsareinvalid, theservicefailsanddoesnotexecute. INVOKE step properties.Setupinput/outputvalidationviatheINVOKEstepproperties toinstructthevalidationenginetovalidatetheserviceinputand/oroutputonly whenitiscalledfromwithinanotherflowservice.Atruntime,iftheinputsand/or outputsoftheserviceareinvalid,theINVOKEflowstepthatcallstheservicefails. Todeterminewhichmethodtouse,determinewhetherornotyouwanttheserviceinput andoutputvaluesvalidatedeverytimetheserviceruns.Ifyouwanttovalidatetheinput andoutputvalueseverytimetheserviceruns,specifyvalidationviatheInput/Outputtab. Forexample,ifyourservicerequirescertaininputtoexistorfallwithinaspecifiedrange ofvalues,youmightwantthepipelinevalidatedeverytimetheserviceruns. Iftheinputand/oroutputvaluesdonotneedtobevalidatedeverytimetheservice executes,setupvalidationviatheINVOKEstepproperties.Specifyinginput/output validationviatheINVOKEsteppropertiesallowsyoutodecideonacasebycasebasis whetheryouwantvalidationperformed.
278
Note: Ifyouspecifyinput/outputvalidationviatheINVOKEstepandaninputor outputvalueisinvalid,theserviceitselfdoesnotactuallyfail.Thevalidationengine validatesinputvaluesbeforewebMethodsIntegrationServerexecutestheservice.If theserviceinputisnotvalid,theINVOKEflowstepfortheservicefails.Similarly,the validationenginevalidatesoutputvaluesafterwebMethodsIntegrationServer executestheservice.Iftheserviceoutputisnotvalid,theINVOKEflowstepforthe servicefails.Whetherornottheentireflowservicefailswhenanindividualflowstep failsdependsontheexitconditionsfortheservice.Forinformationaboutspecifying exitconditions,seeUsingSEQUENCEtoSpecifyanExitConditiononpage 192.
Service input values will be validated every time the service executes.
279
Inputs to the invoked service will be validated. Outputs of the service will not be validated.
Important! KeepinmindthattheValidate inputandValidate outputpropertiesare independentofanyvalidationsettingsthatyoumighthavealreadysetintheservice. IfyouselecttheValidate input and/orValidate outputcheckboxesontheInput/Outputtab oftheinvokedservice,theneverytimetheserviceexecutes,input/outputvalidation isperformed.Ifyoualsospecifyinput/outputvalidationviatheINVOKEstep, duplicatevalidationwillresult,possiblyslowingdowntheexecutionoftheservice.
280
281
Inpipelinevalidation,anISdocumenttypeistheblueprintormodelagainstwhichyou validatethepipeline.TheconstraintsappliedtothevariablesintheISdocumenttype determinewhatcanandcannotbeincludedinthepipeline.Formoreinformationabout applyingconstraintstovariables,seeApplyingConstraintstoVariablesonpage 273. Tovalidatethepipeline,invokethebuiltinservice pub.schema:validatePipeline.Thisservice instructsthevalidationenginetocomparethepipelinecontentsagainstaspecifiedIS documenttype.Thepipelineisvalidwhenitconformstothestructuralandcontent constraintsappliedtotheISdocumenttype.Thepub.schema:validatePipelineservicereturns astringthatindicateswhethervalidationwassuccessfulandanIDataarray(errors variable)thatcontainsanyvalidationerrors.Formoreinformationaboutthe pub.schema:validatePipelineservice,seethewebMethodsIntegrationServerBuiltInServices Reference.
282
283
// check <isValid> to see whether <object> is valid and process accordingly IDataCursor validCursor = validResult.getCursor(); if(validCursor.first("isValid")) { if (IDataUtil.getString(validCursor).equals("false")) { IData [] vr = IDataUtil.getIDataArray(validCursor, "errors"); System.out.println ( vr.length+" ERROR(s) found with example"); for (int j=0; j < vr.length; j++ ) { System.out.println( vr[j].toString() ); } } } validCursor.destroy(); . . .
Foradditionalinformationaboutpub.schema:validateandpub.schema:validatePipeline,seethe SchemaservicesinthewebMethodsIntegrationServerBuiltInServicesReference.
Validation Exceptions
Ifyouusethepub.schema:validateandpub.schema:validatePipelineservicestoperformdata validation,youcandeterminewhethertheserviceshouldsucceedorfailifthedatabeing validatedisinvalid.Youmightwantaservicetosucceedevenifthedataisinvalid.Inthe pub.schema:validateandpub.schema:validatePipelineservices,thevalueofthefailIfInvalidinput variabledetermineswhetheraservicefailsbecauseofaninvalidobject.
284
Ifthepub.schema:validateandpub.schema:validatePipelineservicefails,webMethods IntegrationServerthrowsavalidationexception.Avalidationexceptionisgeneratedif oneofthefollowingistrue: Errorsaredetectedintheobject(XMLnode,pipeline,ordocument(IDataobject)) thatispassed(forexample,nullvalue). Thebasicvalidationcontractisviolated(forexample,abinarytreeispassedinstead ofadocument(IDataobject)asexpected). Youspecifythattheserviceshouldfailiftheobjecttobevalidated(XMLnode, pipeline,ordocument(IDataobject))didnotconformtotheISschemaorIS documenttype(forexample,failIfInvalid=true).Ifthisisthereasonfortheexception, webMethodsIntegrationServerinsertsthevalidationerrorsintotheexception message.
285
286
11
Testing and Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing Services from Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing Services from a Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing Services that Expect XML Documents as Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working in Debug Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling Flow Steps, Transformers, and Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modifying the Current Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving and Restoring the Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Other Debugging Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
287
Testing Services
Youcantestanytypeofservice(flowservicesorcodedservices)withDeveloper, eliminatingtheneedtobuildspecialclientssimplyfortesting.Italsoallowsyoutoeasily passdifferentsetsoftestdatatoyourservice,whichmakesiteasytotestyourservice underavarietyofdataconditions. YoucanuseDevelopertotestservicesintwoways: From Developer. Withthistechnique,Developeristheclient.Thatis,Developer invokestheserviceandreceivestheresults. From a browser.Withthistechnique,DeveloperformulatestheURLnecessaryto invoketheserviceandpassesthatURLtoyourbrowser.Yourbrowseractually invokestheserviceandreceivestheresults.Whenyoudevelopservicesforbrowser basedclients(especiallyoneswhoseoutputwillbeformattedusingoutput templates)youwillwanttotestthoseservicesatleastonceusingthistechnique.
288
289
Notes: Iftheserviceexecutestocompletion,itsresultsappearontheResultspanel.Formore informationabouttheResultspanel,seeViewingtheResultsoftheServiceon page 293. Iftheservicethrowsanexception,anerrormessagedisplays.ClickDetailsinthe messageboxtoviewthecallstackandthestateofthepipelinewheretheerror occurred.Formoreinformationabouterrorsthatoccurwhiletestingaservice,see RunTimeExceptionsonpage 295.
YoucanmanuallytypeyourinputvaluesintotheInputdialogboxor,ifyousavedthe inputvaluesfromanearliertest,youcanloadthemfromafile.
290
Note: IfyourserviceexpectsObjectvariablesthatdonothaveconstraintsassignedor anObjectdefinedasabyte[],youwillnotbeabletoenterthosevaluesintheInput dialogbox.Totestthesevaluesinaservice,youmustalsocreateaservicethat generatesinputvaluesforyourservice.Thenyouneedtoconstructatestharness(a flowservicethatexecutesboththeservicethatproducesthetestdataandtheservice youwanttotest)andusethatharnesstotestyourservice. To enter values by typing them 1 2 OpentheserviceandexecuteitasdescribedinTestingServicesfromDeveloperon page 289orTestingServicesfromaBrowseronpage 298. ForeachvariablelistedintheInputdialogbox,typeaninputvalue.Iftheservice takescomplexvariablessuchasaStringlists,documents,ordocumentlists,usethe followingbuttonstospecifythevariablesindividualelements. Use this To... Addarowtothevariable. Insertablankrowabovethecurrentlyselectedrow. Addacolumntothevariable. Deletetheselectedrowfromthevariable. Deletetheselectedcolumnfromthevariable. 3 IfyouwantDevelopertopassemptyStringstotheservice,selectthe Include empty values for String Typescheckbox.Whenyouselectthischeckbox,emptyStringsare passedwithazerolengthvalue.Ifyoudonotselectthischeckbox,emptystringsare notpassedtotheservice. Note: WhenyouentervaluesforconstrainedobjectsintheInputdialogbox, Developerautomaticallyvalidatesthevalues.Ifthevalueisnotofthetypespecified bytheobjectconstraint,Developerdisplaysamessageidentifyingthevariableand theexpectedtype.
291
292
VariablesthatexistintheInputdialogbox,butnotinthefile,aresettonull. BesidesloadingvaluesthatweresavedfromtheInputdialogbox,youcanalsoload valuesthatweresavedusingpub.flow:savePipelineToFileserviceortheSave Pipeline commandsontheFilemenu.Inaddition,youcanchangevaluesinthepipeline duringtesting.Forinformationaboutsavingthestateofthepipeline,seeSavingand RestoringthePipelineonpage 315.Forinformationaboutmodifyingvaluesinthe pipeline,seeModifyingtheCurrentPipelineonpage 313. To load input values that have been saved to a file 1 2 3 OpentheserviceandexecuteitasdescribedinTestingServicesfromDeveloperon page 289. WhentheInputdialogboxappears,clickLoad.TheLoadFiledialogboxappears. Selectthefilecontainingtheinputvaluesthatyouwanttoload.
293
WhenviewingtheResultspanel,keepthefollowingpointsinmind: TheResultspanelrepresentsthecontentsofthepipeline. TheResultspanelshowsallvariablesplacedinthepipelinebytheservice,notjust thosethatweredeclaredintheservicesinput/outputparameters. Variablesthataserviceexplicitlydropsfromthepipelinedonotappearonthe Resultspanel. YoucanbrowsethecontentsoftheResultspanel,butyoucannotedititdirectly. YoucansavethecontentsoftheResultspaneltoafileandusethatfiletorestorethe pipelineatalaterpoint.Foradditionalinformationaboutsavingandrestoringthe contentsoftheResultspanel,seeSavingandRestoringthePipelineonpage 315. Ifyourunaserviceandanerroroccurs,resultsarenotdisplayedintheResultspanel. However,youcanclicktheDetailsbuttonintheerrormessageboxtoexaminethe stateofthepipelineatthepointwheretheexceptionoccurred. Whendebuggingaflowserviceinstepmode,youcanusetheResultspanelto examinethestateofthepipelineaftereachflowstep.Youcanoptionallyloada differentpipelineormodifytheexistingpipelinebetweensteps.Forinformation aboutloadingapipelineintheResultspanel,seeSavingandRestoringthePipeline onpage 315.Forinformationaboutmodifyinganexistingpipeline,seeModifying theCurrentPipelineonpage 313. WhenyouuseabreakpointortheTrace to Here commandtohaltexecutionofaflow service,youcanusetheResultspaneltoexaminethepipelineatthatpointwhereyou haltedtheflow.Youmayalsooptionallyloadadifferentpipelineormodifythe existingpipelineatthispoint.ForinformationaboutloadingapipelineintheResults panel,seeSavingandRestoringthePipelineonpage 315.Forinformationabout modifyinganexistingpipeline,seeModifyingtheCurrentPipelineonpage 313. VariableswhoseobjecttypesarenotdirectlysupportedbytheDeveloperwillappear intheResultspanel,butbecauseDevelopercannotrenderthevaluesofsuchobjects, avaluedoesnotappearintheValuecolumn.Instead,theValuecolumndisplaysthe objectsJavaclassmessage. Variablesthatcontaincom.wm.util.TableobjectsappearasdocumentlistsintheResults panel.
294
To copy and paste elements from the Results panel 1 DisplaytheResultspanelandselecttheelementthatyouwanttocopy.(When copyingelementsfromthelowerhalf,youcanselectagroupofcontiguouselements bypressingtheSHIFTkeyandselectingthefirstandlastelementinthegroupthat youwanttocopy.) OntheEdit menu,clickCopy. Selectthefieldintowhichyouwanttopastetheinformation,thenclickEditPaste After.(IfthePastecommandisnotavailable,itindicatesthattheinformationcannotbe pastedintotheselectedfield.)
2 3
Run-Time Exceptions
IfaservicethatyourunfromDeveloperthrowsanexception,Developerreportstheerror inamessagebox. YoucanclicktheDetailsbuttontodisplaythecallstackandthepipelineatthepoint wheretheerroroccurred. Note: TheIntegrationServerlogsdetailsaboutruntimeexceptions,includingthecall stack,thestacktrace,andthecauseoftheerror,intheIntegrationServererrorlog.This informationisusefulfordebuggingservicesinaproductionenvironment.Youcan controlthelevelofdetailwrittentothelogbysettingthe watt.server.deprecatedExceptionLoggingparameter.Formoreinformationaboutthis parameterandtheIntegrationServererrorlog,seeAdministeringwebMethodsIntegration Server.
295
The Details button shows the call stack and the pipeline
296
297
298
299
Trace to Here
Trace Into
Important! Thedebugcommandsareonlyavailableforflowservices.WhenaJava serviceisselected,thesecommandsarenotavailable. Whenyoufirstenterdebugmode,processingalwaysstartsfromthefirststepintheflow service.Completedstepsaremarkedwithagrayoutline.Astepthatisinprocessoris thenextinlinetobeprocessedismarkedwithagreenoutline.Whenyoustepthougha flowserviceoryouhaltexecutionusingabreakpointortheTrace to Herecommand,the greenoutlineindicateswhichstepwillexecutewhenyouresumeprocessing. Tip! YoucanremovethegrayandgreentracelinesbyusingtheTestResetcommand. Note,however,thatthiswillalsoendyourdebuggingsession. ThefollowingexampleshowsaflowservicethatisbeingexecutedusingtheStep command.Asyoucansee,theBRANCH on PaymentTypestephasthreetargets.Thegray outlineshowswhichpathwasexecuted.ThegreenoutlineindicatesthatBRANCH on /AuthorizationCodeisthestepthatwillexecutewhenthenextStepcommandisperformed.
300
301
Note: Totracethroughatoplevelservice,youmusthaveExecute,Read,andList accesstotheservice.Totracethroughalltheserviceswithinatoplevelservice,you musthaveExecute,List,andReadaccesstoallservicesthatthetoplevelservice invokes.FormoreinformationaboutACLsandthetracetools,seeACLsand Testing/DebuggingServicesonpage 121. To trace to the end of a service 1 2 Opentheservicethatyouwanttotrace. OntheTestmenu,clickTrace.
302
To trace to a specified point 1 2 Opentheservicethatyouwanttotrace. Intheeditor,selecttheflowstepuptowhichyouwanttotrace.(Developerwilltrace allstepsupto,butnotincluding,theoneyouselect.) Note: Ifthepointtowhichyouwanttotraceresidesinachildoftheservicethat youaretesting,youmustusethebreakpointfeaturetotracetothatpoint.For informationaboutsettingbreakpoints,seeSettingBreakpointsonpage 307. 3 OntheTestmenu,clickTrace to Here.
WhenDeveloperreachestheselectedflowstep,ithalts.Atthispoint,youmaydo anyofthefollowing:
303
Note: Tostepthroughatoplevelservice,youmusthaveExecute,Read,andList accesstotheservice.Tostepthroughalltheserviceswithinatoplevelservice,you musthaveExecute,List,andReadaccesstoallservicesthatthetoplevelservice invokes.FormoreinformationaboutACLsandthesteptools,seeACLsand Testing/DebuggingServicesonpage 121. Note: Whenyoustepintoachildflow,Developerdisplaysthechildflowintheeditor. Notethatatanypointwhilesteppingthroughaflowservice,youcandoanyofthe following: ExaminethecontentsoftheResultspanel. Modify,save,and/orrestorethecontentsoftheResultspanel. SelectastepintheflowserviceanduseTrace to Heretotracetothatpoint.
304
2 3 4
305
2 3 4
306
Setting Breakpoints
Abreakpointisapointinaflowservicewhereyouwantprocessingtohaltwhenyou executethatflowservicewithcertaindebugmodes.Breakpointscanhelpyouisolatea sectionofcodeorexaminedatavaluesataparticularpointintheexecutionpath.For example,youmightwanttosetapairofbreakpointsbeforeandafteraparticular segmentofaflowsothatyoucanexaminethepipelineontheResultspanelbeforeand afterthatsegmentexecutes. Whenworkingwithbreakpoints,keepthefollowingpointsinmind: Breakpointsarenotpersistent.TheyexistonlyduringthelifeoftheDeveloper sessiononthecurrentserverinwhichyousetthem.WhenyoucloseDeveloperor refreshthesessiononthecurrentserver,yourbreakpointsarecleared.(Notethat resettingdebugmodedoesnotclearyourbreakpoints.) BreakpointsarealsolocaltoyourDevelopersessiononthecurrentserver. Breakpointsthatyousetonyourmachinedonotaffectotherdevelopersoruserswho mightbeexecutingordebuggingservicesinwhichyouhavesetbreakpoints. BreakpointsareonlyrecognizedwhenyouexecuteaservicewiththeTrace Into commandfromDeveloper.Ifyouexecuteaserviceusinganyoftheothertestingor debuggingcommands,breakpointsareignored. IfyouarecachingservicesbyusingtheGeneral areaoftheOptionsdialogbox,and yourflowservicehasabreakpoint,youcannotclearthecacheoftheflowserviceuntil thebreakpointisremoved.Formoreinformationaboutcaching,seeConfiguringa ServicesUseofCacheonpage 142. Tosetabreakpointinaservice,youmusthaveReadaccesstoaservice.However,if theserviceisinvokedwithinanotherservice(atoplevelservice)towhichyouhave Readaccess,youcansetabreakpointontheservicewithinthetoplevelservice.
307
To clear a breakpoint from a flow step 1 2 3 Opentheflowserviceinwhichyouwanttoclearabreakpoint. Intheeditor,selectthebreakpointstep. OntheTest menu,clickClear Breakpoint.Thestepsiconreturnstoitsnormalcolor, indicatingthatitisnolongerabreakpoint. OR 1 2 3 OntheTestmenu,clickBreakpointstodisplaythecurrentlistofbreakpointsonthe currentserver. Inthelist,selectthebreakpointthatyouwanttoclear. ClickRemove.
308
3 4
1 2 3
309
Disablingastepisusefulinmanytestinganddebuggingsituations.Forexample,you mightwanttodisableoneormorestepstoisolateaparticularsegmentofaflow,similar tothewayyoumightcommentoutasectionofsourcecodeinaprogramyouare testing. Beawarethatdisablingastepsetsapersistentattributethatissavedintheflowservice. Onceyoudisableastep,itremainsdisableduntilyouexplicitlyreenableitwith Developer. Important! Theruntimeeffectofdisablingastepisthesameasdeletingit.Disablinga keysteporforgettingtoreenableadisabledstepcanbreakthelogicofaservice and/orcausetheservicetofail.Developerallowsyoutodisableanystepinaflow service,butitisyourresponsibilitytousethisfeaturecarefully.
310
To disable a step in a flow service 1 2 3 Opentheflowservicethatyouwanttoedit. Intheeditor,selectthestepthatyouwanttodisable. OntheComposemenu,clickDisable Step.Thestepdims,indicatingthatitisdisabled. To enable a step in a flow service 1 2 3 Opentheflowservicethatyouwanttoedit. Intheeditor,selectthedisabledstepthatyouwanttoreenable. OntheComposemenu,clickEnable Step.
Disabling Transformers
YoucanalsousetheComposeDisable StepcommandtodisableatransformerinaMAP step.Transformersthatyoudisablearenotexecutedatruntime.Infact,webMethods IntegrationServerdoesnotexecuteanyofthelinksbetweenpipelinevariablesandthe variablesforadisabledtransformer. DisabledtransformersappeardimmedwhenviewedinDeveloper. Disabled transformers are not executed at run time
311
To disable a transformer in a MAP step 1 2 3 4 Opentheflowservicethatyouwanttoedit. Intheeditor,selecttheMAPstepcontainingthetransformerthatyouwanttodisable. OnthePipelinetab,selectthetransformeryouwanttodisable. OntheComposemenu,clickDisable Step. Thetransformerdims,indicatingthatitisdisabled. To enable a transformer in a MAP step 1 2 3 4 Opentheflowservicethatyouwanttoedit. Intheeditor,selecttheMAPstepcontainingthedisabledtransformerthatyouwant toenable. OnthePipelinetab,selectthedisabledtransformerthatyouwanttoenable. OntheComposemenu,clickEnable Step.
312
To enable a condition placed on a link between variables 1 2 3 4 Opentheflowservicethatyouwanttoedit. Intheeditor,selecttheINVOKEorMAPstepcontainingthelinkwiththecondition youwanttoenable. OnthePipelinetab,selectthelinkwiththeconditionthatyouwanttoenable. IntheGeneralcategoryofthePropertiespanel,settheEvaluate copy conditionproperty toTrue.
313
To modify values in the current pipeline 1 2 3 4 5 6 UsetheStep,Step Into,orTrace to Herecommandtoloadvaluesintothepipelineforthe currentstep. IntheResultspanel,selectthenameofthevariableforwhichyouwanttochangethe value. RightclickandselectModify Value. IntheModifyValuedialogbox,typethenewpipelinevalueforthevariable. ClickOK.ThevalueischangedintheResultspanel. Todebugtherestoftheservicewiththenewpipelinevalue,usetheStep,Step Into,or Trace to Herecommand.Keepinmindthatthevalueisonlychangedforthecurrent debuggingsession;itisnotchangedpermanently. To drop values from the current pipeline 1 2 3 4 UsetheStep,Step Into,orTrace to Herecommandtoloadvaluesintothepipelineforthe currentstep. IntheResultspanel,selectthenameofthevariablethatyouwanttodropfromthe pipeline. RightclickandselectDrop.ThevariabledisappearsfromtheResultspanel. Todebugtherestoftheservicewiththedroppedpipelinevalue,usetheStep,Step Into,orTrace to Herecommand.Keepinmindthatthevalueisonlydroppedforthe currentdebuggingsession;itisnotdroppedpermanently.
314
315
316
4 5
Foradditionalinformationaboutpub.flow:savePipelineToFile,seethewebMethodsIntegration ServerBuiltInServicesReference.
317
Dependingonyouractioninthepreviousstep,dooneofthefollowing: If you selected... Restore Pipeline Locally Restore pipeline from Server Do this to specify the file name... Selectthefilethatyouwanttoload. Specifythenameofthefilethatyouwanttoload. Developerretrievesthefilefrom IntegrationServer_directory\pipeline.
318
merge
4 5
Foradditionalinformationaboutpub.flow:restorePipelineFromFile,seethewebMethods IntegrationServerBuiltInServicesReference.
319
320
(underWindows)
Ifyoudonotexplicitlysetthedebugswitchwhenyoustarttheserver,thedefaultvalue specifiedinthewatt.debug.levelparameterisused.Thedefaultvalueof watt.debug.levelisInfo. Onceyoustarttheserver,thedebuglevelisset.Whentheserverisrunning,youcan changethedebuglevelusingtheIntegrationServerAdministrator.Ifyoudonotknow thedebuglevelunderwhichyourwebMethodsIntegrationServeroperates,seeyour webMethodsIntegrationServeradministrator. InsteadofrunningtheentireIntegrationServeratahigherdebuglevel,youcanincrease thelogginglevelforaspecificfacilityinIntegrationServer.Forexample,youmightset thelogginglevelfortheServicesfacilitytoTrace.Formoreinformationabout configuringserverlogging,seewebMethodsAuditLoggingGuide. Important! DebuglevelsaboveInfoproducelotsofdetailandcanquicklygeneratean extremelylargelogfile.YoushouldnotrunyourserverattheDebugorTracelevels exceptforbriefperiodswhenyouareattemptingtotroubleshootaparticularissue. Youmayalsooptionallyredirectserverlogmessagestotheconsoleinsteadofafile usingthelog nonestartupswitch.Formoreinformationaboutthisswitchand debuglevels,seeStartingthewebMethodsIntegrationServerinAdministering webMethodsIntegrationServer.
321
Tousepub.flow:debugLog,takethefollowinggeneralsteps: 1 2 Invokepub.flow:debugLogatthepointwhereyouwanttheservicetowriteamessageto theserverlog. Setthefollowingparameters: Key message Description AStringthatspecifiesthemessagethatyouwantwrittentoserverlog. Thiscanbealiteralstringthatyouassigntomessage,however,for debuggingpurposes,itisoftenusefultolinkthisparametertoa pipelinevariablewhoseruntimevalueyouwanttocapture.
322
Key function
Description Optional. AStringthatidentifiesyourservice.TheStringyouspecify willappearinthesecondcolumnofthemessagethatdebugLogwritesto serverlog.Thepurposeofthislabelistoidentifywhichcomponent postedthemessagetothelog. Ifyoudonotassignavaluetofunction,debugLogomitsthelabel. However,keepinmindthatassigningavaluetofunctionwillmakeit easierforyoutolocateyourservicesmessagewhenyouexaminethe logfile.Althoughyoucanassignatextstringofanylengthtofunction, onlythefirst6charactersappearinthelog.
level
3 4
323
Tousepub.flow:tracePipeline,takethefollowinggeneralsteps: 1 2 Invokepub.flow:tracePipelineatthepointwhereyouwanttheservicetodumpacopyof thepipelinetotheserverlog. Setthefollowingparameters: Key level Description Optional. AStringspecifyingthedebuglevelsunderwhichthepipeline willbepostedtothelog.Iftheserverisrunningatadebuglevellower thanthevaluesetinlevel,thepipelineisnotwrittentothelogfile. Ifyoudonotspecifylevel,Fatalisassumed,whichmeansthatthe pipelineispostedtothelogfileregardlessofwhichdebuglevelthe serverisrunningat.Formoreinformationaboutdebuglevel,see ServerDebugLevelsonpage 321. 3 4 Savetheservice.(IfyouareusingyourownIDE,youwillneedtorecompilethe service,reregisteritonwebMethodsIntegrationServer,andreloaditspackage.) Executetheservice.Foradditionalinformationaboutpub.flow:tracePipeline,seethe webMethodsIntegrationServerBuiltInServicesReference.
324
12
Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building Services Using Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Java Services Are Organized on the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building Java Services with Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building Java Services with Your Own IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building Services Using C/C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building Services Using COM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Invoking Methods from Existing COM and DCOM Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
325
Basic Concepts
InadditiontousingthebuiltinservicesthatwebMethodsIntegrationServerprovides, youcancreatecustomizedservicesinavarietyofprogramlanguages.Thisallowsyouto createalibraryofcustomcodethatcanbeaccessedandexecutedfromaflowserviceor fromaclientapplication. ThischapterdescribeshowtocreateyourownservicesusingJava,C/C++,andVisual Basic. Important! Javaisthenativelanguageforservices.Whenyoucreateservicesinother languages,youmustwrapthemtoappearasaJavaclasstowebMethodsIntegration Server.
326
327
328
Specify the inputs and outputs of the service. Thisstageisoptional,but recommended.Duringthisstage,youdefinetheservicesinputsand outputs(ifyouknowthese)inDevelopersIDE.Forinformationabout thisstage,seeGeneratingJavaCodefromServiceInputandOutput Parametersonpage 333. Create the Java service using Developer. Duringthisstage,youwriteyour programinDevelopersIDE.Forinformationaboutthisstage,see CreatingaJavaServicewithDevelopersIDEonpage 332. Specify the services run-time parameters. Duringthisstage,youassign parametersthatconfiguretheruntimeenvironmentforthisservice.For informationaboutthisstage,seeSettingRunTimeOptionsforaJava Serviceonpage 335.
Stage 2
Stage 3
BeforeyoucreateaJavaservice,youmust: Make sure the package in which you want to create the service already exists. Ifthepackage doesnotalreadyexist,useDeveloperortheIntegrationServerAdministratorto createit.Fordetails,seeCreatingaPackageonpage 76. Make sure the folder in which you want to create the service already exists. Ifthefolderdoes notalreadyexist,useDevelopertocreateit.Fordetails,seeCreatingNewElements onpage 45. Make sure that all Java and C services are unlocked or locked by you in the folderinwhichyou wanttocreatethenewservice.Fordetails,seeLockingJavaandC/C++Serviceson page 101. Important! AllJavaservicesthatbelongtothesamefolderresideinthesameJavaclass file.Thisclasshasthesamenameasthefolder.
329
TherequiredcodeatthetopoftheJavaserviceeditordefinesastaticandfinalmethod withasingleinputparameter:anIDataobject.Theblockofrequiredcodeatthebottom returnsthepipelinetothecaller. WhenyoubuildaJavaservice,youtype(orpaste)yourcodeinthetextboxintheJava serviceeditor.Thefollowingexampleshowsaservicethatgetstwovaluesfromthe pipelineandusesthemtocomputeasalestax.Itputsthecomputedtaxintothepipeline. You use the Java service editor to write the body of your service
330
TheExtendsfieldallowsyoutospecifyasuperclassfortheimplementation.Youarenot requiredtospecifyasuperclass. Note: Itisuseful,butnotnecessary,toextendtheclass com.wm.app.b2b.server.Service.Thisclassincludesstaticmethodsforvarious commontasks,likeretrievingthecurrentsessionIDandformattingerrormessages. TheImplementsfieldspecifiesthenamesofJavainterfacesthatyouwanttoimplementin theextendedclass. TheImportsfieldspecifiesthenamesofadditionalJavapackageswhoseclassesare availabletothecurrentclass.WhenyoucreateaJavaservicewithDeveloper,severalJava packagesareautomaticallyaddedtotheimportlist. TheSourcefieldallowsyoutodefineglobalvariablesandmethodsthataresharedbyall servicesinthecurrentfolder.Thisisusefulforbuildingshareddatastructuresand supportingfunctionsthatarenotintendedtobeexposedasservices.Forexample,you mightusetheSourcefieldtodefineanaccounttableandthemethodstousedtoaccessit forasetofservicesthatcreate,get,anddeleteaccountinformation.
331
Implements
TypethenameofavalidJavaclassname(fullyqualifiedif necessary).Youdonotneedtotypetheimplementskeyword.
332
333
DeveloperwillgeneratethefollowingJavacodeforyourservice:
// pipeline IDataCursor pipelineCursor = pipeline.getCursor(); StringState = IDataUtil.getString( pipelineCursor, "State" ); StringAmount = IDataUtil.getString( pipelineCursor, "Amount" ); pipelineCursor.destroy(); // pipeline IDataCursor pipelineCursor_1 = pipeline.getCursor(); IDataUtil.put( pipelineCursor_1, "Tax", "Tax" ); pipelineCursor_1.destroy();
WhenDevelopergeneratescodefromtheserviceinput/outputparameters,itputsthe codeontheClipboard.Fromthere,youcanpasteitintoyourprogram(atthetopofthe JavaserviceeditororinyourownIDE)andmodifyitasnecessary. Note: webMethodsIntegrationServerreturnseverythingthatyourserviceputsinto thepipeline,regardlessofwhatisdeclaredasitsinput/outputparameters.Declaring aservicesinputandoutputparametersdoesnotfilterwhatvariablestheservice actuallyreceivesorreturnsatruntime.Itsimplyprovidesaformaldescriptionof whattheservicerequiresasinputandproducesasoutput. To generate Java code from the service input/output parameters 1 OpentheJavaserviceforwhichyouwanttogeneratecode(ifyouarecreatingthe JavaserviceinyourownIDE,useDevelopertocreateanew,emptyJavaservicethat youwilluseonlyforthepurposeofdeclaringasetofinput/outputparameters). ClicktheInput/Output tabanddefinetheinputsandoutputsforthisserviceiftheyare notalreadyspecified.Formoreinformationaboutdefininginputsandoutputsfora service,seeTodeclareinputandoutputparametersforaserviceonpage 136. IfyouwanttogeneratecodeforasubsetofthevariablesontheInput/Outputtab,select thosevariables. OntheToolsmenu,clickGenerate Code. OntheCodeGenerationdialogbox,selectFor implementing this serviceandclickNext. Specifythefollowingoptions. Under this... Specification Which fields? 7 8 Specify... Whetheryouwanttogeneratecodefortheinputvariables,the outputvariables,orboth. Whetheryouwanttogeneratecodeforallvariablesinthe Input/Outputtaborjusttheselectedvariables.
3 4 5 6
ClickFinish.DevelopergeneratescodeandplacesitontheClipboard. PastethecontentsoftheClipboardintoyoursourcecode.
334
Thensdirectorycontainsinformationabouttheservicesinthatpackage.Anentryin thenamespacedirectorycorrespondstoaserviceorafolder.Thecontentsofeachentry dependonwhatkindofentryitis. Service entriescontaininformationaboutpropertiesoftheservice(forexample, statelessness),theinputandoutputparametersoftheservice(iftheyhavebeen defined),andJavaorXMLsourceifthesourceisavailableforthatservice. Folder entriescontaininformationaboutthefolder.Thisinformationisusuallylimited toJavasourcefortheservicesinthatfolder,ifavailable. ForJavaservices,informationabouttheserviceisstoredinthenamespacedirectory. However,thecompiledcodeforthatservice(thatis,theclassfile)isstoredinthecode subdirectory.Thefollowingshowsthedirectorypathtotheclassfilesinthepurch package.
IntegrationServer_directory\packages\purch\code\classes\recording\ accounts.class
335
WhenyouuseDevelopertobuildaJavaservice,itautomaticallyupdatesandmaintains thefolderandserviceinformationinthenamespace.However,ifyoubuildaJavaservice inyourownIDE,youmustuseautilitycalledjcodetocompileyourserviceandgenerate thenecessaryfilesinthenamespace. Important! Althoughyoumaywanttoexaminethecontentsofthenamespace directoriesonyourwebMethodsIntegrationServer,donotmodifythisinformation byhand.OnlymodifythisinformationusingtheappropriatewebMethodstoolsor utilities.Inappropriatechanges,especiallytothensdirectoryoftheWmRoot package,candisableyourserver.
336
Create an empty Java service using webMethods Developer (optional).During thisstage,useDevelopertocreateanemptyJavatemplatethatyoucan useaguidelineforcodingyourownservice(seeCreatingaJavaService withDevelopersIDEonpage 332). Specify the input and output parameters (signature) of the service.Duringthis stage,youdefinetheservicesinputsandoutputs(ifyouknowthese).You canuseDevelopertogeneratetheinputandoutputcodethatyoucan pasteintoyourprogram(seeGeneratingJavaCodefromServiceInput andOutputParametersonpage 333). Create the Java service using your IDE. Duringthisstage,youwriteand compileyourprograminyourIDE.Formoreinformationaboutthis stage,seeWritingtheSourceCodeforaServiceonpage 336. Saving and compiling your code using jcode (optional). Duringthisstage,you canmakeyoursourcecodeavailableforeditingbyDeveloperbyusing thejcodeutility.Forinformation,seeCommentingCodeforthe webMethodsIntegrationServeronpage 337. Publish the service to the webMethods Integration Server.Duringthisstage,you registeryourserviceontheIntegrationServerusingthejcodeutility.For information,seeUsingthejcodeUtilityonpage 338.
Stage 2
Stage 3
Stage 4
Stage 5
337
Thefollowingcodefragmentshowsthetagsusedtomarkthebeginningandendofthe importsection.
. . . // --import import // --. . .
Make Mode
Youusethismodetoexaminesourcefilesforoneormorefoldersinapackageand compilethosethathavebeenmodifiedsincetheywerelastcompiled.Thejcodeutility willreportwhichfileswerecompiled,aswellasanyerrorsthatwereencounteredduring theprocess. Tomakeallthecodeinapackage,typethefollowingonthecommandline:
jcode makeall Package
338
Tocompilesourcefiles,thejcodeutilityinvokestheJDKJavacompiler,javacusingthe followingcommand:
javac classpath pathName d classDir fileList
Fragment Mode
YouusethismodetoupdatetheJavacodefragmentsandservicesignatures(inputand outputparameters)inthenamespacebasedonthejcodetagsinthesourcecodefile.The originalsourcefileisnotmodified,butnamespaceinformationisupdatedandthesource codefortheservicebecomesavailablethroughDeveloper. Tofragmentallthecodeinapackage,typethefollowingonthecommandline:
jcode fragall Package
Tofragmentonlythecodeforasinglefolder(thatis,asingleJavasourcefile),typethe followingonthecommandline:
jcode frag Package Folder
Composite Mode
Compositemodeistheoppositeoffragmentmode.Youusethismodetobuildasource filebasedonthecodefragmentscurrentlydefinedinthenamespace. Important! Theexistingsourcefile,ifthereisone,isoverwrittenbythesourcefile producedbyjcode.UserlocksinDeveloperwillnotpreventthis,sincethejcode utilityoperatesindependentlyoflockingfunctionality. Toconstructasourcefilebasedonthecurrentinformationinthenamespace,typethe followingonthecommandline:
jcode comp Package Folder
Important! IfyourJavasourcecodecontainsanynonASCIIcharacters,settheproperty watt.server.java.source=Unicode | UnicodeBig | UnicodeLittle.Thedefaultvalue isfile.encoding.WhenUnicodeisset,thecompilecommandlinespecifiedinthe propertywatt.server.compile.unicodeisused.Thedefaultvalueofthispropertyis javac -encoding Unicode -classpath {0} -d {1} {2}.
339
Toupdate(makeandfrag)allthecodeinallpackagesonwebMethodsIntegration Server,typethefollowingatthecommandline:
jcode upall
ToforceamakeandfragonallpackagesonwebMethodsIntegrationServer,type:
jcode hailmary
340
341
6 7
342
The Shared tab contains code that loads the library containing the C program
The Input/Output tab declares the input/output parameters for the service
ThenamesofthefileswillmatchtheservicenameyouspecifiedinDeveloper.
343
Forexample,ifyourservicenameisPostPO,youwouldcopyPostPO.ctoPostPOImpl.c. YoucreatetheprogramintheserviceNameImpl.cfile,nottheoriginalfile.Thisisthe fileinwhichthemakefileexpectstofindyoursourcecode.(Thisstepistakento maintainacopyoftheoriginalsourcefiletowhichyoucanrefer,orrevertbackto, duringyourdevelopment.) 3 EdittheserviceNameImpl.cfileasnecessarytobuildyourservice. Thisfilewillcontaininstructivecommentsthatwillguideyourdevelopment.You canalsorefertowebMethodsCAPIforinformationabouthowtousethe webMethodsC/C++APItomakethedatainyourserviceavailabletootherservices. ThisfileislocatedinDeveloper_directory\doc\api\c\index.html. 4 Editthemakefiletocustomizeitforyourdevelopmentenvironment.Setthe followingpathsettings: Set... JDKDIR SEVRDIR To... TothedirectorythatcontainstheJavaDevelopmentKit. ThedirectoryinwhichwebMethodsIntegrationServeris installed.
344
Requirements
TousewebMethodsIntegrationServerwithCOMorDCOM,yourwebMethods IntegrationServermustberunningJavaVirtualMachine1.2orlater. Important! IfyoumodifyVisualBasiccodeintendedforusewithwebMethods IntegrationServerlibraries,donotusethedebugmodeintheVisualBasic developmentenvironmenttotestyourcode.(Thedebuggerdoesnotmaintain referencestowebMethodsIntegrationServerlibraries.)Instead,usealoggingfeature inyourdevelopmentenvironmenttotestthecode.
345
346
347
348
13
Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building a Java Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building a C/C++ Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building a Visual Basic Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building an Excel Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building a Browser-Based Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
349
Basic Concepts
webMethodsDeveloperenablesyoutoautomaticallygenerateclientcodeinavarietyof languagesandforseveralenvironments.Clientcodeisapplicationcodethatinvokesa serviceonawebMethodsIntegrationServer.Ittypicallyperformsthefollowingbasic tasks: Promptstheuserforinputvalues(ifyourservicetakesinput) Placestheinputsintoaninputdocument(ifyourservicetakesinput) OpensasessiononwebMethodsIntegrationServer Invokesaservice Receivesoutputfromtheservice ClosesasessiononwebMethodsIntegrationServer Displaystheoutputtotheuser TheclientcodethatDevelopergeneratescanserveasagoodstartingpointforyourown development.
Assumptions
webMethodsIntegrationServerisrunning. AfullyfunctionalJDKisinstalled.IfyouareusingtheJVMthatwasinstalledwith theIntegrationServer,nofurtheractionisneeded.IfyouareusingadifferentJVM, dothefollowingtoobtainthefilestheIntegrationServerneedstosupportsigned libraries:
350
Do the following... Ensurethattheunlimitedstrengthjurisdictionpolicyfiles (local_policy.jarandUS_export_policy.jar)areinstalledaspartof yourJVMinstallation. Ifthesefilesarenotinstalled,downloadthemasfollows: IfyouarerunningtheSunJDK1.4.*,downloadthefilesfrom http://java.sun.com/j2se/1.4.1/download.html/. IfyouarerunningtheIBMJDK1.4.*,downloadthefilesfrom http://www106.ibm.com/developerworks/java/jdk/security/.
JDK1.5.*
IfyouwanttouseanyclassesintheEntrustToolkit,theclasspathmustcontainthe following:
Software AG_directory\common\lib\ext\enttoolkit.jar
Limitations
WhenDevelopergeneratesclientcode,itignoresinputoroutputvariablesthatareof typeObjectorObjectlist.Clientcodeisnotgeneratedforthesevariables. WhenDevelopergeneratesclientcode,Developerreplacesanyspaceinavariable namewithanunderscore. TheclientcodethatDevelopergeneratesdoesnotsupportmultipleinputoroutput variableswiththesamename. Ifyouwanttooverridetheselimitations,youwillneedtomodifytheclientcodethat Developergenerates.
351
Procedure
UsethefollowingproceduretogenerateJavaclientcodethatinvokesaservice: To generate Java client code that invokes a service 1 2 3 4 5 Opentheserviceforwhichyouwanttogenerateclientcode. OntheToolsmenu,clickGenerate Code. IntheCodeGenerationdialogbox,selectFor calling this service from a client,andthen clickNext. IntheLanguagefield,selectJava,andthenclickNext. SpecifythedirectorywhereyouwantDevelopertoplacethegeneratedclientcode. Eitherselectanexistingdirectoryortypethepathforanewdirectory.Ifyoutypethe pathforanewdirectory,Developercreatesthedirectory. ClickFinish. DevelopergeneratesthefilethatcontainstheJavaclientcode(ServiceName.java)and aReadme.txtfile.TheJavaclientcodeiswrittentotheharddiskinISO8859_1,the charactersetinwhichthefileisencoded. Modifythegeneratedclientcodetomeetyoursitesneeds.Youcanupdatetheclient codetoinvokebuiltinservicesandtousetheprovidedJavaAPI.Forinformation aboutthebuiltinservicesthatareavailable,seethewebMethodsIntegrationServer BuiltInServicesReference.DocumentationfortheJavaAPIcanbefoundat Developer_directory\doc\api\Java\index.html. Tocompleteyourclientapplication,refertotheReadme.txtfilelocatedinthesame directoryasyourclientcode.
ServiceName.java
352
Assumptions
webMethodsIntegrationServerisrunning. AplatformthathastheC/C++compiler(forexample,GCC)isinstalled.webMethods generatescodeforthefollowingplatforms:Windows,Solaris,HPUX,Linux,AIX. Thewmisclient.jarfileisintheclasspathforDeveloper.Theclient.jarfileisa webMethodsfilethatislocatedintheSoftware AG_directory\common\libdirectory. TheMakefacilityisinstalled. JDK1.1.xisinstalled(ifyouintendtousetheClibrariesprovidedwithIntegration ServerandDeveloper). Important! TheprovidedClibrariesarebuiltusingJDK1.1.7.Ifyouwanttousea differentversionoftheJDKtocompileC/C++services,youneedtorebuildtheC/C++ librarieswiththatJDKandthenreplacetheoldlibraryfileswiththerebuiltones.For moreinformationaboutrebuildingtheClibraries,seetheREADMEinstalledwith theC/C++SDK. TorebuildtheClibraries,youneedusetheC/C++SDK.TheC/C++SDKisnot installedbydefault.ToinstalltheC/C++SDK,selectitfromthelistofinstallable componentsduringinstallation.
Limitations
TheclientcodethatDevelopergeneratesdoesnotsupportmultipleinputoroutput variableswiththesamename. WhenDevelopergeneratesclientcode,Developerreplacesanyspaceinavariable namewithanunderscore. Ifyouwanttooverridetheselimitations,youwillneedtomodifytheclientcodethat Developergenerates.
353
Procedure
UsethefollowingproceduretohaveDevelopergenerateC/C++clientcodethatinvokesa service: To generate C/C++ client code that invokes a service 1 2 3 4 5 Opentheserviceforwhichyouwanttogenerateclientcode. OntheToolsmenu,clickGenerate Code. IntheCodeGenerationdialogbox,selectFor calling this service from a client;thenclick Next. IntheLanguagefield,selecttheC/C++platformforwhichyouarecreatingclientcode. ClickNext. IdentifythedirectorywhereyouwantDevelopertoplacethegeneratedclientcode. Eitherselectanexistingdirectoryortypethepathforanewdirectory.Ifyoutypethe pathforanewdirectory,Developercreatesthedirectory. ClickFinish. DevelopergeneratesthefilethatcontainstheCclientcode(ServiceName.c),afilethat containscompilingsettings(ServiceName.mak),andaCReadme.txtfile. Modifythegeneratedclientcodetomeetyoursitesneeds.Youcanupdatetheclient codetoinvokebuiltinservicesandtousethewebMethodsCAPI.Forinformation aboutthebuiltinservicesthatareavailable,seethewebMethodsIntegrationServer BuiltInServicesReference.FordocumentationabouttheCAPI,see Developer_directory\doc\api\C\index.html. Tocompleteyourclientapplication,refertotheCReadme.txtfilelocatedinthesame directoryasyourclientcode.
ServiceName.mak ServiceName.c
354
Assumptions
webMethodsIntegrationServerisrunning. VisualBasicVersion6isinstalled. webMethodsTypeLibraryisinstalled. Note: ThewebMethodsTypeLibraryisaCOMobjectthatVisualBasicusestointeract withwebMethodsIntegrationServer.ThewebMethodsTypeLibraryisautomatically installedwhenyouinstallDeveloper.
Environment Setup
YoursystemPATHenvironmentvariablemustincludethefollowingdirectory: Software AG_directory\jvm\win150\jre\bin\client OR Software AG_directory\jvm\win160\jre\bin\client
Limitations
TheclientcodethatDevelopergeneratessupportsonlyinputvaluesandoutput valuesoftypeString,Stringlist,andStringtable. TheclientcodethatDevelopergeneratesdoesnotsupportmultipleinputoroutput variableswiththesamename. WhenDevelopergeneratesclientcode,Developerreplacesanyspaceinavariable namewithanunderscore. Ifyouwanttooverridetheselimitations,youwillneedtomodifytheclientcodethat Developergenerates.
355
Procedure
UsethefollowingproceduretohaveDevelopergenerateVisualBasicclientcodethat invokesaservice. To generate Visual Basic client code that invokes a service 1 2 3 4 5 Opentheserviceforwhichyouwanttogenerateclientcode. OntheToolsmenu,clickGenerate Code. IntheCodeGenerationdialogbox,selectFor calling this service from a client,andclick Next. IntheLanguagefield,selectVisual Basic 5/6,andclickNext. IdentifythedirectorywhereyouwantDevelopertoplacethegeneratedclientcode. Eitherselectanexistingdirectoryortypethepathforanewdirectory.Ifyoutypethe pathforanewdirectory,Developercreatesthedirectory. ClickFinish. Developergeneratesseveralfiles,includingtheserviceNameReadMe.txtfile.Thisfile containsdetailedinformationaboutallthegeneratedfiles.Refertoittocomplete yourclientapplicationandforinformationaboutdeployingyourclientapplication.
General Files
File Name ServiceName.vbp ServiceNameReadme.txt Description TheVisualBasicprojectfile. Thefilethatcontainsinformationandinstructionsforthe VisualBasicclientcode.Refertothisfileforinformation aboutdeployingyourVisualBasicclientapplication.
356
frmSetup.frm
ServiceName.cls
File Containing the Code that Interacts with webMethods Integration Server
File Name wmVBConnection.bas Description Codeusedasalayerofabstractiontointeractwith webMethodsIntegrationServer.
357
Assumptions
webMethodsIntegrationServerisrunning. Excel97orExcel2000isinstalled. webMethodsTypeLibraryisinstalled. Note: ThewebMethodsTypeLibraryisaCOMobjectthatVisualBasicusestointeract withwebMethodsIntegrationServer.ThewebMethodsTypeLibraryisautomatically installedwhenyouinstallDeveloper.
Limitations
TheclientcodethatDevelopergeneratesonlysupportsinputvaluesoftypeString andoutputvaluesoftypeString,Stringlist,andStringtable. TheclientcodethatDevelopergeneratesdoesnotsupportmultipleinputoroutput variableswiththesamename. WhenDevelopergeneratesclientcode,Developerreplacesanyspaceinavariable namewithanunderscore. Ifyouwanttooverridetheselimitations,youwillneedtomodifytheclientcodethat Developergenerates.
Procedure
UsethefollowingproceduretohaveDevelopergenerateExcelclientcodethatinvokesa service. To generate Excel client code that invokes a service 1 2 3 4 5 Opentheserviceforwhichyouwanttogenerateclientcode. OntheToolsmenu,clickGenerate Code. IntheCodeGenerationdialogbox,selectFor calling this service from a client,andclick Next. IntheLanguagefield,selectExcel 97/2000,andclickNext. IdentifythedirectorywhereyouwantDevelopertoplacethegeneratedclientcode. Eitherselectanexistingdirectoryortypethepathforanewdirectory.Ifyoutypethe pathforanewdirectory,Developercreatesthedirectory.
358
8 9
ServiceName.bas
ServiceName.cls
359
Assumptions
webMethodsIntegrationServerisrunning. Theinputvaluesfortheservicesyouwanttoinvokearedetermined.Youwillneedto includetheinputvaluesintheURLthatyouusetoinvokeaservice.
Limitations
WhenyoutestaserviceusingtheRun in Browsercommand,onlyinputvaluesofthetype StringandStringlistwillbepassedtotheservice.Inputvaluesofthetypedocument, documentlist,Object,andObjectlistwillnotbedisplayedwhentheWebpageisserved.
360
http://IS_server:5555/invoke/sample.webPageDemo/getProductCost?sku=A1&quantity=1
Item
1 2 3
Description IdentifiesthewebMethodsIntegrationServeronwhichtheserviceyouwant toinvokeresides. Specifiestherequiredkeywordinvoke,whichtellswebMethods IntegrationServerthattheURLidentifiesaservicethatistobeinvoked. Identifiesthefolderinwhichtheservicetoinvokeresides.Separate subfolderswithperiods.Thisfieldiscasesensitive.Besuretousethesame combinationofupperandlowercaselettersasspecifiedinthefoldername onwebMethodsIntegrationServer. Identifiestheservicethatyouwanttoinvoke.Thisfieldiscasesensitive.Be suretousethesamecombinationofupperandlowercaselettersasspecified intheservicenameonwebMethodsIntegrationServer. Specifiestheinputvaluesfortheservice.Specifyaquestionmark(?)before theinputvalues.Thequestionmarksignalsthebeginningofinputvalues. Eachinputvalueisrepresentedasvariable=value.Thevariableportioniscase sensitive.Besuretousethesamecombinationofupperandlowercaseletters asspecifiedinyourservice.Ifyourservicerequiresmorethanoneinput value,separateeachvariable=valuewithanampersand(&). Note: OnlyspecifythispartoftheURLwhenusingtheHTTPGETmethod.
361
SpecifytheURLfortheserviceintheACTIONattributeandPOSTintheMETHODattribute. Forexample:
<FORM ACTION="/invoke/sample.webPageDemo/getProductCost" METHOD="POST">
362
Note: AvoidusinginputvariablenamesthatendinList.AlthoughtheIntegration ServerwillacceptvariablenamesendinginList,theresultingIDatamaynotbe structuredinthewayyouneed.Forexample,ifyouweretopassinavariablecalled skuList,theresultingIDatawillcontainaStringcalledskuListandaStringlist calledskuListList.Moreover,ifyouweretopassinvariablesnamedskuand skuList,subsequentskuandskuListvariablesinthequerystringmaynotbe placedintheIDatafieldsasexpected. IfyoumustuseListattheendofyourvariablename,considerusinglist (lowercase)orappendingoneormorecharactersattheendofthename(forexample, abcListXX). Whentheserverreceivesmultipleinputvaluesthatareassociatedwiththesamevariable name,theStringvariableintheIDataobjectcontainsonlythevalueofthefirstvariable; theStringlistvariablecontainsallvalues.Forexample,thefollowingshowsaURLthat containstwovaluesforthevariableyearandtheresultingIDataobjectthattheserver creates:
/invoke/sample.webPageDemo/checkYears?year=1998&year=1999
Ifthebrowseruserselectsallcheckboxes,thedocumentthatispostedtowebMethods IntegrationServerwillcontainthreevaluesforthevariablenamedColor.Thefollowing showstheIDataobjectthattheserverpassestotheservice: Key Color ColorList Value blue blue green red Data Type String Stringlist
363
364
14
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Submitting and Receiving XML in a String Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Submitting and Receiving XML in $xmldata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Submitting and Receiving XML via HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Submitting and Receiving XML via FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Submitting and Receiving XML via E-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
365
Overview
YoucansubmitXMLdocumentstothewebMethodsIntegrationServerfromaclient, andhavetheIntegrationServerreceiveXMLdocumentswithservicesthatyouwrite. TheIntegrationServerprovidesthefollowingautomatedmechanismsforreceiving arbitraryXMLdocuments,parsingthem,andpassingthemasinputtoaspecified service. AclientsubmitsanXMLdocumenttoaserviceinaStringvariable(ofanyname), whichthetargetserviceconvertsintoanodeusingpub.xml:xmlStringToXMLNode. AclientsubmitsanXMLdocumenttoaserviceinaspecialStringvariablenamed $xmldata,andwebMethodsIntegrationServerautomaticallyparsesthevariableand passesittotheserviceasanode. AclientpostsanXMLdocumenttoaserviceviaHTTP. AclientFTPsanXMLdocumenttoaservice. AclientemailsanXMLdocumenttoaservice. AclientsendstheXMLdocumentasanemailattachment.
366
com.wm.app.b2b.client.*; com.wm.util.*; com.wm.data.*; java.io.*; class ArbitraryXMLClient . . . //--Load XML into orders string String orders = YourLoadXMLMethod(orderFile); //--Put input values into IData object IData inputs = IDataFactory.create(); IDataCursor inputsCursor = inputs.getCursor(); inputsCursor.insertAfter("orders", orders); inputsCursor.insertAfter("authCode", authCode);
//--Submit request to server c.connect("localhost:5555", "null", null); IData outputs = c.invoke("purch", "postOrder", inputs); c.disconnect(); . . .
367
public class ArbitraryXMLClient { public static void main(String args[]) throws Exception { //--Read XML document from a specified file (or from stdin) Context c = new Context(); IData inputs = IDataFactory.create(); IDataCursor inputsCursor = inputs.getCursor(); Reader in = null; if(args.length > 0) { in = new InputStreamReader(new FileInputStream(args[0])); } else { in = new InputStreamReader(System.in); } char[] buf = new char[8192]; int count = 0; StringBuffer sb = new StringBuffer(); while((count = in.read(buf)) != -1) { sb.append(buf, 0, count); } //--Assign XML document to string variable String xmldata = sb.toString(); //--Put XML document into $xmldata in IData object inputsCursor.insertAfter("$xmldata", xmldata); //--Submit request to server c.connect("localhost:5555", "null", null); IData outputs = c.invoke("sales", "getOrder", inputs); c.disconnect(); //--Display the returned output values System.out.println(outputs); }
368
Client Requirements
SincemostbrowsersdonotallowyoutomodifytheContentTypeheaderfield,theyare notsuitableclientsforthistypeofsubmission.Clientsthatyoumightusetosubmitan XMLdocumentinthismannerarePERLscripts(whichallowsyoutobuildandissue HTTPrequests)orthewebMethodsIntegrationServerservice,pub.client:http. Regardlessofwhichclientyouuse,itmustdothefollowing: SubmitaPOSTrequesttowebMethodsIntegrationServer. AddresstherequesttotheURLofanservice(forexample, http://rubicon:5555/invoke/purch/postOrder). SettheContentTypeheaderfieldtotext/xml. ContainanXMLdocumentinthebodyofthemessage.Thedocumentmustbethe onlytextthatappearsinthebodyoftherequest.Donotassignittoaname=value pair. Important! WhenyousubmittheXMLdocument,placeanextracarriagereturn/new line(\r\n)attheendofittoindicatetheendoftheXMLdocument.
369
TheXMLdocumentthatyouwanttopost.
370
371
Client Requirements
IfyouwanttosubmitanXMLdocumenttoaservicethroughFTP,theapplication sendingthedocumentmustdothefollowing: 1 2 InitiateanFTPsessiononwebMethodsIntegrationServersFTPlisteningport. PointtothedirectorythatcontainstheservicetowhichyouwanttopasstheXML document. Example cd \ns\Purchasing\SubmitOrder Important! NotethattherootdirectoryforthisoperationisyourwebMethods IntegrationServersnamespacedirectory(ns),nottherootdirectoryofthetarget machine.Therefore,ifyouwanttoFTPafiletoaserviceinthePurchasingpackage, youuse\ns\Purchasing\ServiceNameasthepathtothatservice,not IntegrationServer_directory\ns\Purchasing\ServiceName. 3 CopytheXMLdocumenttothisdirectoryusingthefollowingcommand:
put XMLDoc.xml
or
put XMLDoc
WhereXMLDocisthenameofthefilethatyouwanttopasstowebMethods IntegrationServer.Thefileextensioncanbesomethingotherthanxmlifthe extensionsmimetypeisregisteredwiththeserverastext/xml.Alternatively,thefile extensioncanbeomittedifyouspecifythespecialkeyftp_no_extensioninthe lib/mime.typesfiletoindicateanullextension.SeeSubmittingandReceivingXML viaFTPonpage 371fordetails. Example put PurchaseOrder.xml NotethattheXMLdocumentyouFTPtowebMethodsIntegrationServerisnever actuallywrittentotheserversfilesystem.TheXMLdocumentyousendandthe outputfileitproduces(seebelow),arewrittentoavirtualdirectorysystem maintainedinyourISsession.
372
WhereXMLDoc.xmlisthenameoftheXMLfileinitiallyFTPedtotheservice.(Thefile extensioncanbesomethingotherthanxmliftheextensionsmimetypeisregistered withtheserverastext/xml.) YouretrievethisXMLdocumentusingtheFTPgetcommand.Forexample,ifyouput anXMLdocumentcalledPurchaseOrder.xmlonwebMethodsIntegrationServer,youwould usethefollowingFTPcommandtogetitsresults: Example get PurchaseOrder.xml.out Important! WerecommendthatyouuseauniquenameforeachXMLdocumentthat youFTPtowebMethodsIntegrationServer(perhapsbyattachingatimestamptothe name)sothatyoudonotinadvertentlyoverwriteotherFTPedXMLdocumentsor theirresultsduringanFTPsession. WhenyouendtheFTPsession,webMethodsIntegrationServerautomaticallydeletesthe originalfileanditsresultsfromyoursession.
373
Client Requirements
TosubmitanXMLdocumenttowebMethodsIntegrationServerviaemail,yourclient programmust: PuttheXMLdocumentinanemailattachment. SettheemailsContent-Typeheadertotext/xml. SpecifythenameoftheservicethatwillprocesstheXMLdocumentintheemails subjectline.Ifyouleavethesubjectlineempty,theXMLdocumentwillbeprocessed bytheglobalserviceifoneisdefinedor,ifnot,bythedefaultserviceassignedtothe emailport(ifonehasbeenassigned).Forinformationaboutspecifyingtheports defaultservice,seeAdministeringwebMethodsIntegrationServer. TheservicethatprocessestheXMLdocumentmusttakeanodeasinput.
374
To... AStringcontainingtheemailaddresstowhichtheresults oftheservicearesent. AStringcontaininginputparametersfortheserviceinURL querystringformat.Thefollowingexamplesetsfive parameters:one,two,andthreearesettothevalues1,2and3, respectively.Theparameters$userand$passhavespecial meaningtotheemailport.Youusetheseparametersto specifytheusernameandpasswordfortheemailport.You mustspecifythesetwoparametersifauthenticationis enabledontheemailport. Example:
one=1&two=2&three=3&$user=Administrator&$pass=manage
AStringsetto:text/xml Thebyte[]oraStringcontainingtheXMLdocument.
AStringspecifyingthefullyqualifiednameofthefile containingtheXMLdocument.
375
376
15
Subscribing to Events
378 381 387 390 391
The Event Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Event Subscriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building an Event Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Invoking Event Handlers Synchronously or Asynchronously . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
377
15 Subscribing to Events
Audit
Exception
Guaranteed Delivery
378
15 Subscribing to Events
Description OccurseachtimeIntegrationServerupdatestheserverstatistics. Theportstatuseventprovidesinformationaboutthestatusofall theportsconfiguredonIntegrationServer.Subscribetoportstatus eventstoinvokeeventhandlersthatperformactionssuchas sendingportstatusdatatoanetworkmonitoringsystemorwriting portstatusdatatoalogfile. Occurswhenthepub.replicator:generateReplicationEventserviceexecutes. Subscribetoreplicationeventstoinvokeeventhandlersthat performactionssuchasnotifyingpackagesubscriberswhena packageispublishedandmaintainingalogofpulledordistributed packages. Occurswhenanadministrativeoroperationalsecurityactiontakes placeonIntegrationServerandthatsecurityactionisconfiguredfor auditing. Administrativeactionsrefertoconfigurationchangesrelatedto IntegrationServersecurityactivities.Examplesofsecurityactions include:modificationtoauthorization,authentication,portsettings, auditsettings,SSLconfiguration,passwordlengths,androot certificates. Operationalactionsrefertosuccessfulandunsuccessfullogin attemptstoIntegrationServer,successfulorunsuccessfulaccessto IntegrationServerservices,documents,andportlets,andchangesto messagingsettings.
Replication
Security
Session
OccurswhenaclientstartsorendsasessionontheIntegration ServerorwhentheIntegrationServerterminatesaninactive session.Therearethreetypesofsessionevents:sessionstart,session end,andsessionexpire.Subscribetosessioneventstoinvokeevent handlersthatperformactionssuchasmaintainingyourownlog files. OccureachtimeIntegrationServerupdatesthestatisticslog (stats.log).Subscribetostateventstoinvokeeventhandlersthat performactionssuchasmaintainingyourownlogfileorsending serverstatisticstoanetworkmonitoringsystem. OccurwhenanIntegrationServerbeginsandfinishesprocessinga guaranteeddeliverytransaction.Therearetwotypesoftransaction events:TxStartandTxEnd.Subscribetotransactioneventsto invokeeventhandlersthatperformspecificactions(suchassending notificationorlogginginformation)whenaparticularguaranteed deliverytransactionbeginsorfinishesprocessing.
Stat events
Transaction events
379
15 Subscribing to Events
380
15 Subscribing to Events
Subscribing to an Event
YoucanusetheEventManagerinDevelopertosubscribetoaneventonthecurrent server.ThisactionregisterstheeventhandlerwiththeEventManagerandspecifies whicheventswillinvokeit.ToaccesstheEventManager,usetheToolsEvent Manager command. Use the Event Manager in Developer to subscribe to events
To subscribe to an event, specify the type of event that you want to react to... ...a filter to select the specific events you want to react to... ...and the name of the event handler that is to be executed when this event occurs.
381
15 Subscribing to Events
To subscribe to an event on the current server 1 2 3 4 OntheToolsmenu,clickEvent Manager. IntheEventManagerdialogbox,intheView event subscribers forlist,selecttheevent typetowhichyouwanttosubscribe. Click toaddanewsubscriber.
IntheEnterInputValuesdialogbox,completethefollowingfields: In this field... Specify... Service Thefullyqualifiednameoftheeventhandlerthatwillsubscribetothe event(thatis,theservicethatwillexecutewhentheeventoccurs).You caneithertypethenameintheServicefieldorclick tolocateand selecttheservicefromalist. Example: sgxorders.Authorization:LogAuthTrans Filter Apatternstringtofurtherlimittheeventsthiseventhandlersubscribes to.Filtersvarydependingontheeventtypeyouaresubscribingto. Forexample,ifyouaresubscribingtoanauditorexceptionevent, createafiltertospecifythenamesofserviceswhoseeventsthisevent handlersubscribesto(thatis,theservicesthat,whenexecuted,will invoketheeventhandlerspecifiedinService). Youcanusethe*characterasawildcard(thisistheonlywildcard characterrecognizedbythispatternstring).Thepatternstringiscase sensitive. Formoreinformationaboutcreatingeventfilters,seeCreatingEvent Filtersonpage 383. Comment Enabled Anoptionaldescriptivecommentaboutthissubscription. Whetherthesubscriptionisactiveorinactive.Settotruetoactivatethe subscription.Settofalsetodeactivatethesubscription.(Thisallowsyou totemporarilysuspendasubscriptionwithoutdeletingit.)
382
15 Subscribing to Events
Audit Event
Exception Event
GD End Event
N/A ThefilterforallGDEndeventsisthefollowing:
*
383
15 Subscribing to Events
You create a filter for... Thefullyqualifiednameoftheservicethatisbeinginvokedusing guaranteeddelivery.Createafiltertospecifytheservicesthat, wheninvokedusingguaranteeddelivery,willinvoketheevent handler. Thefollowingpatternstringspecifiesthatallservicesthatstart withthewordsendPOandbelongtoanyfolderwillinvokethe eventhandler:
*:sendPO*
N/A Thefilterforallportstatuseventsisthefollowing:
*
Replication Event
Security Event
N/A Thefilterforallsessionendeventsisthefollowing: *
N/A Thefilterforallsessionendeventsisthefollowing:
*
384
15 Subscribing to Events
Stat Event
N/A Thefilterforallstateventsisthefollowing:
*
Tx End Event
N/A ThefilterforallTxEndeventsisthefollowing:
*
Tx Start Event
N/A ThefilterforallTxStarteventsisthefollowing:
*
Will select events generated by... Theservicesgxorders.Auth:creditAuth. Allservicesinthesgxorders.Auth folder,startingwiththe characterscredit. Allservicesinthesgxorders.Auth folder. Allservicesinthesgxorders folderanditssubfolders. Allservicesstartingwiththecharacterscreditthat resideinanysubfolderwhosenamestartsthe charactersAuth.
385
15 Subscribing to Events
This filter...
*:credit* *
386
15 Subscribing to Events
Creating an empty service. Duringthisstage,youcreatetheemptyservicethat youwanttouseasaneventhandler. Declaring the input and output. Duringthisstage,youdeclaretheinputand outputparametersfortheeventhandlerbyselectingthespecificationorIS documenttypefortheeventtypeinpub.event.ThespecificationandIS documenttypeindicatetheruntimedatathatwillbecontainedintheIData objectpassedtotheeventhandler. Inserting logic, code, or services. Duringthisstage,youinsertthelogic,code,or servicestoperformtheactionyouwanttheeventhandlertotakewhenthe eventoccurs.Ifyouarebuildingaflowservice,makesuretolinkdata betweenservicesandthepipeline. Testing and debugging the service. Duringthisstage,youusethetestingand debuggingtoolsavailableinDevelopertomakesuretheeventhandler worksproperly. Subscribing to the event. Duringthisstage,youusetheEventManagerto subscribetheeventhandlertotheevent.Thisactionregisterstheevent handlerwiththeEventManagerandspecifieswhicheventswillinvokeit. Youcancreatefilterstobemoreselectiveaboutwhicheventsyousubscribe to.
Stage 3
Stage 4
Stage 5
387
15 Subscribing to Events
CreateanemptyflowserviceandnameitprocessLogon.
Stage 2
1 2 3
Onthe Input/Outputtab,nexttotheSpecification Referencefield,click ClickOK. To insert services into the event handler andselectBrowse.
IntheSelectdialogbox,navigatetoandselectthepub.event:sessionStartspecification.
Stage 3
1 2 3
Ontheeditortoolbar,click
IntheBrowsedialogbox,navigatetoandselectthepub.client:smtpservice.ClickOK. OnthePipeline tab,usetheSet Value variablesinService In: For this field to subject Specify Theemailaddressforthepersontosendeventnotificationto.
%userid% logged in
modifiertoassignvaluestothefollowing
388
15 Subscribing to Events
Stage 4
1 2 3 4
OntheTools menu,clickEvent Manager. IntheEventManagerdialogbox,intheView event subscribers forlist,selectSession Start Event. Click toaddaneweventsubscription.
IntheEnterInputValuesdialogbox,completethefollowingfields: In this field Service Filter Do this Click andusetheSelectdialogboxtonavigatetoandselectthe processLogonservice. Type: *Administrators* ThispatternstringspecifiesthattheprocessLogoneventhandlerwill executeonlywhenauserbelongingtoausergroupcontainingthe stringAdministratorslogsontotheserver. Comment Enabled Specifyadescriptivecommentaboutthissubscription. Selecttruetoactivatethesubscription.
ClickOK.Subscriptionstakeeffectimmediately.
389
15 Subscribing to Events
390
15 Subscribing to Events
391
15 Subscribing to Events
392
15 Subscribing to Events
Stage
1
Description ServiceAusesguaranteeddeliverytoinvokeServiceBontheremote IntegrationServer.WhenthelocalserverrequestsServiceB,thelocalserver generatesaGDStartevent.Bydefault,theGDStarteventisloggedtothe txoutyyyymmdd.logfile. TheremoteIntegrationServerreceivestherequestandbeginsexecuting ServiceB.WhentheremoteserverbeginsexecutingServiceB,theremote servergeneratesaTxStartevent.Bydefault,theTxStarteventisloggedto thetxinyyyymmdd.logfile. TheremoteIntegrationServerfinishesexecutingServiceBandgeneratesaTx Endevent.Bydefault,theTxEndeventisloggedtothetxinyyyymmdd.log file. TheremoteIntegrationServersendstheresultsofServiceBtotherequesting client(here,thelocalIntegrationServer). ThelocalIntegrationServerreceivestheresultsofServiceBandgeneratesa GDEndevent.Bydefault,theGDEndeventisloggedtothe txoutyyyymmdd.logfile.
4 5
Fordetailsaboutguaranteeddelivery,seetheGuaranteedDeliveryDevelopersGuide.
393
15 Subscribing to Events
394
15 Subscribing to Events
395
15 Subscribing to Events
Administrativesecurityeventsinclude: Creating,modifying,anddeletingpackages,folders,andservices. Creating,deleting,ormodifyingauthenticationrelatedinformation.Thisincludes creatingnewusers,deletingusers,changingtheirsecurityattributes(forexample, passwords),settingormodifyingthemappingbetweencertificatesandusers,andso on. Creating,deleting,ormodifyingauthorizationrelatedinformation.Thisincludes creating,modifying,anddeletingACLs. Creating,deleting,ormodifyingportsettings.Thisincludesdefiningallowedor deniedactionsontheport,portmodes(allowedordeniedbydefaultinIntegration Server),andcertificatehandling. ConfiguringSSLsettingsinIntegrationServer. ModifyingorresettingOutboundPasswords. Operationalsecurityeventsinclude: SuccessfulloginstotheIntegrationServer. UnsuccessfulloginattemptstotheIntegrationServer.Theloginattemptfailurecould bebecauseofincorrectpassword,disabledaccount,SSLfailure,orexpiredcertificate. Successfulandunsuccessfulaccessestoservices,files,andpackages. Modifyingexistingpasswords. Modifyingmessagingsettings. ForinformationonconfiguringtheSecuritylogger,seewebMethodsAuditLoggingGuide. AservicethatfunctionsasaneventhandlerforaSecurityeventshouldusethe pub.event:securityspecificationasitsservicesignature.Formoreinformationaboutthe pub.event:securityservice,seethewebMethodsIntegrationServerBuiltInServicesReference.
396
15 Subscribing to Events
397
15 Subscribing to Events
398
16
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Requirements for Retrying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building a Service that Throws an Exception for Retry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
399
Overview
Whencreatingaservice,youcanconstructandconfiguretheservicetoretry automaticallyifatransienterroroccursduringserviceexecution.Atransienterrorisan errorthatarisesfromatemporaryconditionthatmightberesolvedorrestored,suchas theunavailabilityofaresourceduetonetworkissuesorfailuretoconnecttoadatabase. TheservicemightexecutesuccessfullyiftheIntegrationServerwaitsashortintervalof timeandthenretriestheservice. TosignaltheIntegrationServertoreexecutetheservice,youcanbuildtheserviceto throwanISRuntimeExceptionwhenatransienterroroccurs.Then,ifaserviceends becauseofanISRuntimeExceptionandyousetretrypropertiesfortheservice(orthe triggercallingtheservice),IntegrationServerwillreexecutetheserviceusingthe originalserviceinput. Thisappendixprovidesguidanceforbuildingflowservicesthatretryifatransienterror occursduringserviceexecution.
400
401
402
Keepinmindthatyoumightneedtousemorethanoneservicetohandletheerror, determineifitwascausedbyatransienterror,andsetthetransienterrorflag. Makesuretoinserttheexceptionevaluationlogicwithinthecatchsequence,butafter thepub.flow:getLastErrorservice. 7 Insert a BRANCH step that branches on the value of the transient error flag. ThisBRANCH stepwilldetermineifanISRuntimeExceptionshouldbethrown.Youcanbranchona switchvalueorbranchonanexpression.Dooneofthefollowing:
Ifyouarebranchingonaswitchvalue,intheSwitchproperty,specifythenameof thepipelinevariablewhosevaluewillactastheswitch.Forexample,ifyouuse theisTransientErrorvariableastheflagtoindicatethatatransienterroroccurred, youwoulduseisTransientErrorastheswitch. Ifyouarebranchingonanexpression,settheEvaluate labelspropertytoTrue. Important! YoumustpositiontheBRANCHstepsothatitisoutsideofthetryand catchsequencesandisasiblingoftheoutersequence.Thisisbecauseexceptions thrownwithinasequenceareignoredandtheBRANCHstepwillcontainthe pub.flow:throwExceptionForRetryservice.
Invoke the pub.flow:throwExceptionForRetry service. Thisservicewrapsanexceptionand rethrowsitasanISRuntimeException. Assignthisservicealabelthatindicatesthatthisstepshouldexecutewhenthe transienterrorflagistrue.Forexample,ifyoubuilttheBRANCHsteptouse isTransientErrorissettotruewhenatransienterroroccurredandyouwantthe IntegrationServertoretrytheservice,settheLabelpropertyto:true. MakesurethatthisstepisachildoftheBRANCHstep. Youcanalsoprovidethefollowingoptionalparameterstothe pub.flow:throwExceptionForRetryservice.
403
Name wrappedException
Description AnObjectcontaininganyexceptionthatyouwanttoinclude aspartofthisISRuntimeException.Thismightbethe exceptionthatcausesthepub.flow:throwExceptionForRetryservice toexecute.Forexample,iftheserviceattemptstoconnecttoa databaseandtheconnectionattemptfails,youmightmapthe exceptiongeneratedbythedatabaseconnectionfailuretothe wrappedExceptionparameter. Astringcontainingamessagetobeloggedaspartofthis exception.
message
404
# Step 1
Description Create outer SEQUENCE that exits on SUCCESS.Thisstepcreatesasequencethat wrapsthetrysequenceandthecatchsequence.Thesequenceissettoexiton successsothattheoutersequencewillexitwhenachildstepexecutes successfully.Thatis,settingtheoutersequencetoexitonsuccessallowsthe outersequencetoexitwithoutexecutingthecatchsequencewhenthetry sequencesucceeds. Step 1.1 Description Create try SEQUENCE that exits on FAILURE.Thisstepcreatesthetry sequencethatcontainsallofthelogicyouwanttheservicetoexecute. ThisstepissettoexitonfailuresothattheIntegrationServerwill executethenextstep(thecatchsequence)withintheoutersequence. Step 1.1.1 Description Insert service logic. Thissteprepresentsthelogicthatyouwant theservicetoperform.Inmanyservices,theservicelogic mightconsistofmultipleservicesorflowsteps. Ifthetrysequenceexecutessuccessfully,theentireouter sequenceexits.TheIntegrationServerskipsthecatchsequence becausetheoutersequenceexitsuponthesuccessofanychild step(inthiscase,thetrysequence).TheIntegrationServer thenexecutesthenextstepintheflowservice(theBRANCH on/isTransientErrorstep). Ifanerroroccurswhileexecutingthisstep,thetrysequence exits(itissettoexitonFAILURE),andtheIntegrationServer executesthecatchsequence. 1.2 Create catch SEQUENCE that exits on DONE. Thisstepcreatesthecatch sequencethatcontainsthelogicthatshouldbeperformedwhenan erroroccursduringthetrysequence.Thisstepcontainslogicthat evaluatestheerrortodeterminewhethertheentireservicecanbe retried. ThecatchsequenceissettoexitonDONE.Thismeansthatthe IntegrationServerexecutesallthestepsinthecatchsequence.The IntegrationServerconsidersthecatchsequencetobesuccessfulafterall thechildstepsexecute.Becausethecatchsequenceissuccessful,the outersequenceexits(itissettoexitonSUCCESS),andtheIntegration Serverexecutesthenextstepintheflowservice. Todeterminewhetheratransienterroroccurred,thisstepcontainsthe followingsteps.
405
Description Step 1.2.1 1.2.2 Description Catch the last error.Thisstepinvokesthepub.flow:getLastError servicetocatchtheerrorthatcausedthetrysequencetofail. Determine if error was a transient error.Thisstepevaluatesthe contentsofthelastErrordocumentreturnedbythe pub.flow:getLastErrorservicetodeterminewhetherthetry sequencefailedbecauseofatransienterror.Inmanyservices, youmightusemultipleservicesorflowstepstodetermine whetheratransienterroroccurred. Set flag to indicate whether service should retry.Thisstepsetsthe transienterrorflagtoindicateifatrysequencefailedbecause ofatransienterror.Inthiscase,ifatransienterroroccurred, thetransienterrorflag(thevariableisTransientError)issetto true. Afterthisstepexecutes,theIntegrationServerexitsthecatch sequence,exitstheoutersequence,andthenexecutesthenext stepintheflowservice(theBRANCHon/isTransientError step).
1.2.3
Step 2
Check transient error flag. ThisstepspecifiesthatthevalueoftheisTransientError variableshouldbeusedtodeterminewhethertheserviceshouldthrowan ISRuntimeException. Ifthetrysequenceexecutedsuccessfully,theIntegrationServerfallsthrough totheendoftheservicebecausethevalueoftheswitchvariabledoesnot matchanyofthetargetsteps(ifthetrysequencesucceeded,isTransientErroris null).Inthiscase,theIntegrationServerconsiderstheexecutionoftheflow servicetobesuccessful. Step 2.1 Description Throws ISRuntimeException. Thisstepexecutesthe pub.flow:throwExceptionForRetryserviceifthevalueofisTransientErroris true.Thisservicewrapstheexceptiongeneratedbythetransient errorinthetrysequenceandrethrowsitasanISRuntimeException. TheIntegrationServerwillretrytheservice.
406
407
BRANCH
TheBRANCHstepselectsandexecutesachildstepbasedonthevalueofoneormore variablesinthepipeline.Youindicatethevariablesyouwanttobranchonbyspecifyinga switchvalueorbywritinganexpressionthatincludesthevariables.
if the value of choice is NameN if choice does not exist or has a value of $null if the value of choice is an empty string Otherwise
Branching on Expressions
Whenyoubranchonexpressions,yousettheEvaluate labelspropertyoftheBRANCH steptotrue.IntheLabelpropertyforeachchildstep,youwriteanexpressionthat includesoneormorevariables.Atruntime,theBRANCHstepexecutesthefirstchild stepwithanexpressionthatevaluatestotrue. Ifyouwanttospecifyachildsteptoexecutewhennoneoftheexpressionsaretrue,set thelabelofthechildstepto$default.
408
Evaluate labels is set to true if the expression of nth child is true Otherwise
ChildN $default
Properties
TheBRANCHstephasthefollowingproperties. Property Comments Scope Description Optional.Specifiesadescriptivecommentforthestep. Optional.Specifiesthenameofadocument(IDataobject)inthe pipelinetowhichyouwanttorestrictthisstep.Ifyouwantthisstepto haveaccesstotheentirepipeline,leavethispropertyblank. Optional.Specifiesthemaximumnumberofsecondsthatthisstep shouldrun.Ifthistimeelapsesbeforethestepcompletes,theserver waitsforthesteptocompleteandthenraisesanexception. Ifyouwanttousethevalueofapipelinevariableforthisproperty,type thevariablenamebetween%symbols.Forexample,%expiration%. Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeoutblank.
Timeout
409
Property Label
Description Optional.(RequiredifyouareusingthisBRANCHstepasatargetfor anotherBRANCHorEXITstep.)Specifiesanameforthisinstanceof theBRANCHstep,oranull,unmatched,oremptystring($null, $default,blank). SpecifiestheStringfieldthattheBRANCHstepusestodetermine whichchildflowsteptoexecute.TheBRANCHstepexecutesthechild flowstepwhoselabelmatchesthevalueofthefieldspecifiedinthe Switchproperty.DonotspecifyavalueifyousettheEvaluate labels propertytoTrue. Specifieswhetherornotyouwanttheservertoevaluatelabelsofchild stepsasconditionalexpressions.Whenyoubranchonexpressions,you enterexpressionsintheLabelpropertyforthechildrenoftheBRANCH step.Atruntime,theserverexecutesthefirstchildstepwhoselabel evaluatestoTrue.Tobranchonexpressions,selectTrue.Tobranchonthe Switchvalue,selectFalse.
Switch
Evaluate labels
EXIT
TheEXITstepexitstheentireflowserviceorasingleflowstep.Specifically,itmayexit fromthenearestancestorloopstep,aspecifiedancestorstep,theparentstep,orthe entireflowservice. TheEXITstepcanthrowanexceptioniftheexitisconsideredafailure.Whenan exceptionisthrown,userspecifiederrormessagetextisdisplayedbytypingitdirectlyor byassigningittoavariableinthepipeline.
410
Properties
TheEXITstephasthefollowingproperties. Property Comments Label Description Optional.Specifiesadescriptivecommentforthestep. Optional.(RequiredifyouareusingthisEXITstepasatargetfora BRANCHstep.)Specifiesanameforthisspecificstep,oranull, unmatched,oremptystring($null,$default,blank). Required.Specifiestheflowsteporservicefromwhichyouwantto exit. Specify this value $parent $loop $flow label To exit the Parentflowstep,regardlessofthetypeofstep. NearestparentLOOPorREPEATstep. Entireflow. Nearestancestorstepthathasalabelthat matchesthisvalue. Note: Ifthelabelyouspecifydoesnotmatchthe labelofanancestorflowstep,theflowwillexit withanexception. Signal Required.Specifieswhethertheexitisconsideredasuccessora failure.ASUCCESSconditionexitstheflowserviceorstep.AFAILURE conditionexitstheflowserviceorstepandthrowsanexception.The textoftheexceptionmessageiscontainedintheFailure message property. Optional.Specifiesthetextoftheexceptionmessagethatisdisplayed whenSignalissettoFAILURE.Ifyouwanttousethevalueofapipeline variableforthisproperty,typethevariablenamebetween%symbols. Forexample,%mymessage%.
Exit from
Failure message
411
INVOKE
TheINVOKEflowstepinvokesanotherservice.Youcanuseittoinvokeanytypeof service,includinganotherflowservice.
Properties
TheINVOKEstephasthefollowingproperties. Property Comments Scope Description Optional.Specifiesadescriptivecommentforthestep. Optional.Specifiesthenameofadocument(IDataobject)inthe pipelinetowhichyouwanttorestrictthisstep.Ifyouwantthisstepto haveaccesstotheentirepipeline,leavethispropertyblank. Optional.Specifiesthemaximumnumberofsecondsthatthisstep shouldrun.Ifthistimeelapsesbeforethestepcompletes,theserver waitsforthesteptocompleteandthenraisesanexception. Ifyouwanttousethevalueofapipelinevariableforthisproperty, typethevariablenamebetween%symbols.Forexample, %expiration%. Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeoutblank. Label Optional.(Requiredifyouareusingthisstepasatargetfora BRANCHorEXITstep.)Specifiesanameforthisspecificstep,ora null,unmatched,oremptystring($null,$default,blank). Required.Specifiesthefullyqualifiednameoftheservicetoinvoke. Optional.Specifieswhethertheservervalidatestheinputtothe serviceagainsttheserviceinputsignature.Ifyouwanttheinputtobe validated,selectTrue.Ifyoudonotwanttheinputtobevalidated, selectFalse. Optional.Specifieswhethertheservervalidatestheoutputofthe serviceagainsttheserviceoutputsignature.Ifyouwanttheoutputto bevalidated,selectTrue.Ifyoudonotwanttheoutputtobevalidated, selectFalse.
Timeout
Validate output
412
LOOP
TheLOOPsteptakesasinputanarrayvariablethatisinthepipeline.Itloopsoverthe membersofaninputarray,executingitschildstepseachtimethroughtheloop.For example,ifyouhaveaservicethattakesastringasinputandastringlistinthepipeline, usetheLOOPsteptoinvoketheserviceonetimeforeachstringinthestringlist. Youidentifyasinglearrayvariabletouseasinputwhenyousetthepropertiesforthe LOOPstep.Youcanalsodesignateasinglevariableforoutput.TheLOOPstepcollects anoutputvalueeachtimeitrunsthroughtheloopandcreatesanoutputarraythat containsthecollectedoutputvalues.Ifyouwanttocollectmorethanonevariable, specifyadocumentthatcontainsthefieldsyouwanttocollectfortheoutputvariable. The LOOP step
No more input array members? Yes get next member of input array
input is an array
child
child
child
Properties
TheLOOPstephasthefollowingproperties. Property Comments Scope Description Optional.Specifiesadescriptivecommentforthestep. Optional.Specifiesthenameofadocument(IDataobject)inthe pipelinetowhichyouwanttorestrictthisstep.Ifyouwantthisstepto haveaccesstotheentirepipeline,leavethispropertyblank. Optional.Specifiesthemaximumnumberofsecondsthatthisstep shouldrun.Ifthistimeelapsesbeforethestepcompletes,theserver waitsforthesteptocompleteandthenraisesanexception. Ifyouwanttousethevalueofapipelinevariableforthisproperty,type thevariablenamebetween%symbols.Forexample,%expiration%. Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeoutblank.
Timeout
413
Property Label
Description Optional.(RequiredifyouareusingthisstepasatargetforaBRANCH orEXITstep.)Specifiesanameforthisspecificstep,oranull, unmatched,oremptystring($null,$default,blank). Required.Specifiestheinputarrayoverwhichtoloop.Youmust specifyavariableinthepipelinethatisanarraydatatype(thatis, Stringlist,Stringtable,documentlist,orObjectlist). Optional.Specifiesthenameofthefieldinwhichtheserverplaces outputdataforaniterationoftheloop.Theservercollectstheoutput fromtheiterationsintoanarrayfieldwiththesamename.Youdonot needtospecifythispropertyiftheloopdoesnotproduceoutputvalues.
Input array
Output array
MAP
TheMAPstepadjuststhepipelineatanypointinaflow.Itmakespipelinemodifications thatareindependentofanINVOKEstep. WithintheMAPstep,youcan: Link(copy)thevalueofapipelineinputfieldtoaneworexistingpipelineoutput field. Dropanexistingpipelineinputfield.(Keepinmindthatonceyoudropafieldfrom thepipeline,itisnolongeravailabletosubsequentservicesintheflow.) Assignavaluetoapipelineoutputfield. Performdocumenttodocumentmappinginasingleviewbyinsertingtransformers.
414
Properties
TheMAPstephasthefollowingproperties. Property Comments Scope Description Optional.Specifiesadescriptivecommentforthisstep. Optional.Specifiesthenameofadocument(IData)inthepipelinetowhich youwanttorestrictthisstep.Ifyouwantthissteptohaveaccesstothe entirepipeline,leavethispropertyblank. Optional.Specifiesthemaximumnumberofsecondsthatthisstepshould run.Ifthistimeelapsesbeforethestepcompletes,theserverwaitsforthe steptocompleteandthenraisesanexception. Ifyouwanttousethevalueofapipelinevariableforthisproperty,typethe variablenamebetween%symbols.Forexample,%expiration%. Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeoutblank. Label Optional.(RequiredifyouareusingthisstepasatargetforaBRANCHor EXITstep.)Specifiesanameforthisspecificstep,oranull,unmatched,or emptystring($null,$default,blank).
Timeout
REPEAT
TheREPEATsteprepeatedlyexecutesitschildstepsuptoamaximumnumberoftimes thatyouspecify.ItdetermineswhethertoreexecutethechildstepsbasedonaRepeat on condition.Youcansettherepeatconditiontooneofthefollowing: Repeatifanyoneofthechildstepsfails. Repeatifalloftheelementssucceed. YoucanalsospecifyatimeperiodthatyouwanttheREPEATflowsteptowaitbeforeit reexecutesitschildsteps.
415
Yes
Yes
No
Exit
Properties
TheREPEATstephasthefollowingproperties. Property Comments Scope Description Optional.Specifiesadescriptivecommentforthisstep. Optional.Specifiesthenameofadocument(IDataobject)inthepipeline towhichyouwanttorestrictthisstep.Ifyouwantthissteptohaveaccess totheentirepipeline,leavethispropertyblank. Optional.Specifiesthemaximumnumberofsecondsthatthisstepshould run.Ifthistimeelapsesbeforethestepcompletes,theserverwaitsforthe steptocompleteandthenraisesanexception. Ifyouwanttousethevalueofapipelinevariableforthisproperty,type thevariablenamebetween%symbols.Forexample,%expiration%. Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeoutblank. Label Optional.(RequiredifyouareusingthisstepasatargetforaBRANCHor EXITstep.)Specifiesanameforthisspecificstep,oranull,unmatched,or emptystring($null,$default,blank). Required.Specifiesthemaximumnumberoftimestheserverreexecutes thechildstepsintheREPEATstep.SetCountto0(zero)toinstructthe serverthatthechildstepsshouldnotbereexecuted.SetCounttoavalue greaterthanzerotoinstructtheservertoreexecutethechildstepsuptoa specifiednumberoftimes.SetCountto-1toinstructtheservertore executethechildstepsaslongasthespecifiedRepeat onconditionistrue. Ifyouwanttousethevalueofapipelinevariableforthisproperty,type thevariablenamebetween%symbols.Forexample,%servicecount%.
Timeout
Count
416
Repeat on
IftheREPEATstepisachildofanotherstep,thefailureispropagatedtoitsparent.
417
SEQUENCE
TheSEQUENCEstepformsacollectionofchildstepsthatexecutesequentially.Thisis usefulwhenyouwanttogroupasetofstepsasatargetforaBRANCHstep. Youcansetanexitconditionthatindicateswhetherthesequenceshouldexitprematurely and,ifso,underwhatcondition.Specifyoneofthefollowingexitconditions: Exit the sequence when a child step fails.Usethisconditionwhenyouwanttoensurethat allchildstepsarecompletedsuccessfully.Ifanychildstepfails,thesequenceends prematurelyandthesequencefails. Exit the sequence when a child step succeeds. Usethisconditionwhenyouwanttodefine asetofalternativeservices,sothatifonefails,anotherisattempted.Ifachildstep succeeds,thesequenceendsprematurelyandthesequencesucceeds. Exit the sequence after executing all child steps.Usethisconditionwhenyouwantto executeallofthechildstepsregardlessoftheiroutcome.Thesequencedoesnotend prematurely. The SEQUENCE step
First... child If exit condition is not met... child If exit condition is not met... child
Properties
TheSEQUENCEstephasthefollowingproperties. Property Description
Comments Optional.Specifiesadescriptivecommentforthisstep. Scope Optional.Specifiesthenameofadocument(IDataobject)inthepipelineto whichyouwanttorestrictthisstep.Ifyouwantthissteptohaveaccessto theentirepipeline,leavethispropertyblank. Optional.Specifiesthemaximumnumberofsecondsthatthisstepshould run.Ifthistimeelapsesbeforethestepcompletes,theserverwaitsforthe steptocompleteandthenraisesanexception. Ifyouwanttousethevalueofapipelinevariableforthisproperty,typethe variablenamebetween%symbols.Forexample,%expiration%. Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeoutblank. Label Optional.(RequiredifyouareusingthisstepasatargetforaBRANCHor EXITstep.)Specifiesanameforthisspecificstep,oranull,unmatched,or emptystring($null,$default,blank).
Timeout
418
Property Exit on
Description Required.SpecifieswhentoexittheSEQUENCEstep. Specify this value... FAILURE To... Exitthesequencewhenachildstepfails.(Execution continueswiththenextflowstepintheflowservice.) TheSEQUENCEstepexecutesitschildstepsuntileither onefailsoruntilitexecutesallitschildsteps.Thisisthe default. Note: WhenaSEQUENCEstepexitsonfailure,the IntegrationServerrollsbackthepipelinecontents.That is,theIntegrationServerreturnsthepipelinetothestate itwasinbeforetheSEQUENCEstepexecuted. SUCCESS Exitthesequencewhenachildstepexecutes successfullyorafterallchildstepsfail.(Execution continueswiththenextflowstepintheflowservice.) Exitthesequenceafterallchildstepsexecute. TheSEQUENCEstepexecutesallofitschildsteps regardlessofwhethertheysucceedorfail.
DONE
419
420
Regular Expressions
422 422 422
What Is a Regular Expression? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using a Regular Expression in a Mask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Regular Expression Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
421
B Regular Expressions
Important! Charactersinregularexpressionsarecasesensitive.
retainsthefirst30charactersineachmatchingelementanddiscardstherest.
422
B Regular Expressions
()
Whenusedinanindex,thesecharactersgroupanitemwithintheregular expression. Exampledoc.p[/part(,0)+May/].text Thisexamplewouldreturnanyparagraphcontainingthestringpart followedbyoneormoreoccurrencesofthecharacters,0andthenthe charactersMay. Whenusedinamask,theyspecifycharactersthatyouwanttoretain. Example doc.p[].text[(^.{25}).*] Thisexamplewouldkeepthefirst25characterswithineachparagraph anddiscardtherest.
423
B Regular Expressions
{n,}
{0,m}
{n,m}
\b
\B
424
B Regular Expressions
\Z
\n
\r
\t
\f
\d
425
B Regular Expressions
\w
\W
\s
\S
\0
\xnn
426
B Regular Expressions
To Matchanycharacterwithinthebrackets. Exampledoc.p[/part [023]555-A/].text Thisexamplewouldreturnanyparagraphcontainingapartnumberthat startswiththenumbers0,2,or3andisfollowedbythecharacters555A. Therefore,itwouldmatchpart0555Aandpart2555A,butnotpart 4555A. Thefollowingcharactershavespecialmeaningwhenusedwithin brackets: Use this char
^
427
B Regular Expressions
428
Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Default Pipeline Rules for Linking to and from Array Variables . . . . . . . . . . . . . . . . . . . . . . . . . .
429
Data Types
DataispassedinandoutofaservicethroughanIDataobject.AnIDataobjectisthe collectionofname/valuepairsonwhichaserviceoperates.AnIDataobjectcancontain anynumberofelementsofanyvalidJavaobjects,includingadditionalIDataobjectsand IDataCodableobjects. EachelementstoredinanIDataobjectcorrespondstoadatatype.Thefollowingtable identifiesthedatatypessupportedbyDeveloper. Data Type String Stringlist Stringtable Document Icon Description Stringofcharacters. AonedimensionalString array. AtwodimensionalString array. Adatastructurethatisa containerforother variables.Documentscan containvariablesofany otherdatatype.The contentsofadocument (IDataobject)arestoredas key/valuepairswherethe variablenameisthekey. Aonedimensionalarray ofISdocumenttypes (IData[]orValues[]). Adocumentwhose structureisdefinedbyan ISdocumenttype. Java Type java.lang.String java.lang.String[] java.lang.String[][] com.wm.data.IData com.wm.util.Values Formoreinformation,seethe webMethodsIntegrationServer JavaAPIReference.
Documentlist
Document reference
Referencetoanexistingobject whichimplementsthe com.wm.data.IDatainterfaceor areferencetoanexisting com.wm.util.Valuesobject. Referencetoanexistingobject whichimplementsthe com.wm.data.IDatainterfaceor areferencetoanexisting com.wm.util.Valuesobject.
Document referencelist
430
Icon
Description Adatatypethatdoesnot fallintoanyofthedata typesdescribedinthe aboverows,andisnot declaredtobeoneofthe basicJavaclasses supportednativelyby IntegrationServer.This iconisusedforObjectsof unknowntype. AnarrayofObjectsof unknowntype.
Objectlist
Note: YoucanviewtheactualdatatypesrepresentedbyObjectorObjectlisticonsin builtinservicesbylookinguptheserviceinthewebMethodsIntegrationServerBuiltIn ServicesReference. Note: Developerdisplayssmallsymbolsnexttoavariableicontoindicatevalidation constraints.Developeruses toindicateanoptionalvariable.Developerusesthe symboltodenoteavariablewithacontentconstraint.Forinformationabout applyingconstraintstovariables,seeApplyingConstraintstoVariableson page 273.
431
ThefollowingtableidentifiestheJavaclassesyoucanapplytoObjectsandObjectlist variablesinDeveloper. Data Type boolean booleanlist byte Icon Description Trueorfalse. Aonedimensionalbooleanarray. Signedinteger.Thevaluemustbe greaterthanorequalto128but lessthanorequalto127. Aonedimensionalbytearray. Aonedimensionalbytearray. Asingleunicodecharacter. Aonedimensionalcharacter array. Dateandtime. Aonedimensionaldatearray. Doubleprecisionfloatingpoint number. Aonedimensionaldoublearray. Standardprecisionfloatingpoint number. Aonedimensionalfloatarray. Signedinteger.Thevaluemustbe greaterthanorequalto 2147483647butlessthanorequal to2147483647. Aonedimensionalintegerarray. Signedinteger.Thevaluemustbe greaterthanorequalto 9223372036854775808butless thanorequalto 9223372036854775807. Aonedimensionallongarray. Java Class java.lang.Boolean java.lang.Boolean[] java.lang.Byte
byte[] bytelist character characterlist date datelist double doublelist float floatlist integer
primitivetype java.lang.Byte[] java.lang.Character java.lang.Character[] java.util.Date java.util.Date[] java.lang.Double java.lang.Double[] java.lang.Float java.lang.Float[] java.lang.Integer
integerlist long
java.lang.Integer[] java.lang.Long
longlist
java.lang.Long[]
432
Icon
shortlist
java.lang.Short[]
433
value
X Y Z To Ascalarvariable
X Y Z
[empty]
434
To Anarrayvariablethatdoes nothaveadefinedlength
[empty]
X Y Z Then Thelengthofthesourcearray variablemustequalthelengthofthe targetarrayvariable.Ifthelengths donotmatch,thelinkwillnot occur.Ifthelengthsareequal,the elementsinthetargetarrayvariable areassignedthevaluesofthe correspondingelementsinthe sourcearrayvariable.
To Anarrayvariablethathasa definedlength
X Y Z
A B C
X Y Z Nolinkoccurs.
V W X Y Z
A B C
435
Where the value of DocumentList1 is... DocumentList1 DocumentList1 [0] a DocumentList1 [1] String1 b DocumentList1 [2] String1 c String1
436
Conditional Expressions
438 439 442 448 449 452
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Addressing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rules for Use of Expression Syntax with the Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
437
D Conditional Expressions
Overview
webMethodsIntegrationServerprovidessyntaxandoperatorsthatyoucanusetocreate expressionsforusewiththeBRANCHstep,pipelinemapping,andtriggers. InaBRANCHstep,youcanuseanexpressiontodeterminethechildstepthat webMethodsIntegrationServerexecutes.Atruntime,theIntegrationServerexecutes thefirstchildstepwhoseconditionalexpressionevaluatestotrue.Formore informationabouttheBRANCHstep,seeTheBRANCHSteponpage 176 Inpipelinemapping,youcanplaceaconditiononthelinkbetweenvariables.Atrun time,webMethodsIntegrationServeronlyexecutesthelinkiftheassignedcondition evaluatestotrue.Formoreinformationaboutapplyingconditionstolinksbetween variables,seeApplyingConditionstoLinksBetweenVariablesonpage 219. ForBroker/localtriggers,youcanfurtherrefineasubscriptionbycreatingfiltersfor thepublishabledocumenttypes.Afilterspecifiescriteriaforthecontentsofa document.Atruntime,theBrokerorIntegrationServerappliesthefiltertothe document.TheBrokerorIntegrationServerwillrouteorprocessthedocumentonly ifthedocumentmeetsthefiltercriteria.Formoreinformation,seethePublish SubscribeDevelopersGuide. Important! Ifmultipleconditionsinthetriggerspecifythesamepublishable documenttype,thefilterappliedtothepublishabledocumenttypemustbethe sameineachcondition. ForJMStriggers,youcancreatelocalfilterstofurtherlimitthemessagesaJMS triggerprocesses.Afilterspecifiescriteriaforthecontentsofthemessagebody. IntegrationServerappliesalocalfiltertothemessageaftertheJMStriggerreceives themessagefromtheJMSprovider.Ifthemessagemeetsthefiltercriteria,Integration Serverexecutesthetriggerservicespecifiedintheroutingrule. Whenyouwriteexpressionsandfilters,keepthefollowingpointsinmind: Operators,variablenames,andstringsarecasesensitive. Whitespacebetweenthetokensofanexpressionisignored. SomesyntaxthatisvalidontheIntegrationServerisnotvalidontheBroker.Ifthe syntaxisvalidforaBroker,theIntegrationServersavesthefilterwiththe subscriptionontheBroker.Ifthesyntaxisnotvalid,theIntegrationServersavesthe subscriptionwithoutthefilterontheBroker.Subscriptionsandfiltersarealways savedontheIntegrationServer. Foralistandanexampleofsyntaxthatpreventsafilterfrombeingsavedonthe Broker,seeRulesforUseofExpressionSyntaxwiththeBrokeronpage 452.
438
D Conditional Expressions
Syntax
Whenyoucreateanexpression,youneedtodeterminewhichvaluestoincludeinthe expression.Valuescanberepresentedasvariablenames,regularexpressions,numbers, andstrings.Thefollowingtableidentifiesthetypesofvaluesyoucanuseinan expressionandthesyntaxforeachvaluetype. Value Type Regular Expression Syntax /regularExpression/ Description Patternmatchingstring.Usethefollowing syntaxforpatternmatchingofvariablevalues: variableName=/regularExpression/ Formoreinformationaboutregularexpressions, seeAppendix B,RegularExpressions. Example
sku = /^WM[0-9]+/
Variable
variableName OR %variableName%
%poItems[0]%
439
D Conditional Expressions
Example
Favorite Customer Favorite Customer
Null
$null
440
D Conditional Expressions
441
D Conditional Expressions
!variableName
Operators
Expressionscanincluderelationalandlogicaloperators.Relationaloperatorsareusedto comparevaluestoeachother.Logicaloperatorsareusedtocombinemultipleexpressions intoasinglecondition.
Relational Operators
Youcanuserelationaloperatorstocomparethevalueoftwofieldsoryoucancompare thevalueofafieldwithaconstant.TheIntegrationServerprovidestwotypesof relationaloperators:standardandlexical. Standardrelationaloperatorscanbeusedinexpressionsandfilterstocomparethe contentsoffields(variables)withothervariablesorconstants. Lexicalrelationaloperatorscanbeusedtocomparethecontentsoffields(variables) withstringvaluesinBroker/localtriggerfilters. Relationaloperatorsaresometimescalledcomparisonoperators.
442
D Conditional Expressions
Evaluates to true if... ThevalueofthecustomerId variableiswebMethods. Evaluates to true if.. Thevalueoftheskuvariableis WM001.
==
a==b
443
D Conditional Expressions
Operator !=
Syntax a!=b
Evaluates to true if.. Thevalueofthequantityvariable doesnotequal0(zero). Evaluates to true if.. Thevalueofthestatevariabledoes notequalME(Maine). Evaluates to true if.. Thevalueofthepricevariableis greaterthan100. ThevalueofthecompanyID variableisgreaterthanAcme. Evaluates to true if.. ThevalueofthetotalPricevariable isgreaterthanorequalto100. ThevalueofthecompanyID variableisgreaterthanorequalto Acme. Evaluates to true if.. Thevalueofthequantityvariable islessthan5. ThevalueofthecompanyID variableislessthanAcme.
<>
a<>b
>
a>b
>=
a>=b
<
a<b
444
D Conditional Expressions
Operator <=
Syntax a<=b
445
D Conditional Expressions
Thefollowingtabledescribesthelexicaloperatorsthatyoucanuseinfilters. Operator
L_EQUALS
Evaluates to true if.. Thevalueofthe myStringvariableis abc. Evaluates to true if.. Thevalueofthe myStringvariableis notabc. Evaluates to true if.. Thevalueofthe myStringvariableis lessthanabc. Evaluates to true if.. Thevalueofthe myStringvariableis lessthanorequalto abc. Evaluates to true if.. Thevalueofthe myStringvariableis greaterthanabc. Evaluates to true if.. Thevalueofthe myStringvariableis greaterthanorequal toabc.
L_NOT_EQUALS
L_LESS_THAN
L_LESS_OR_EQUAL
L_GREATER_THAN
L_GREATER_OR_EQUAL
446
D Conditional Expressions
Logical Operators
Youcanusethefollowinglogicaloperatorsinexpressionstocreateconditionsconsisting ofmorethanoneexpression: Operator ! Syntax !expr Description Negatesthenextexpression. This example...
! (%sku% = "WM001")
Evaluates to true if.. Thevalueoftheskuvariableis notequaltoWM001. Evaluates to true if.. Thecolorvariableisnotequal toblue. Evaluates to true if.. Thevalueofthecolorvariable isblueorred. Evaluates to true if.. ThevalueofthetotalPrice variableisgreaterthan1000or thevalueofthecustomerID variableequalsFavorite Customer. Evaluates to true if.. ThevalueofthecreditCardNum variableisnullormissingorif thevalueofthecardExpireDate variableisnullormissingorif thevalueofthecardExpireDate variableislessthanorequalto thevalueoftheorderDate variable.
not
notexpr
expr|expr
||
expr||expr
or
exprorexpr
447
D Conditional Expressions
Operator &
Syntax expr&expr
&&
expr&& expr
and
exprand expr
Precedence
webMethodsIntegrationServerevaluatesexpressionsinaconditionaccordingtothe precedenceleveloftheoperatorsintheexpressions. Thefollowingtableidentifiestheprecedencelevelofeachoperatoryoucanuseinan expression. Precedence Level 1 2 3 4 5 Operators ( ) not,! =,==,!=,<>,>,>=,<,<= and,&,&& or,|,||
448
D Conditional Expressions
Addressing Variables
Inanexpression,youcanrefertothevaluesofvariablesthatarechildrenofother variablesandrefertothevaluesofelementsinanarrayvariable.Toaddresschildrenof variablesoranelementinanarray,youneedtouseadirectorylikenotationtodescribe thepositionofthevalue. Use this notation variableName To Addressavariable. Example:state Variablestate. variableName/childVariableName Addressthechildvariableofa variable(suchasafieldina document). Example:%buyerInfo/state% VariablestatewithinISdocumenttype buyerInfo. arrayVariableName[index] Addressanelementinanarray. Example:orderItems[0] Valueofthefirstelementinthe orderItemsarray. arrayVariableName[rowIndex][columnIndex] Addressanelementina twodimensionalarray(Stringtable). Example: dictionary[1][2] Valueoftheelementlocatedinthe thirdcolumnofthesecondrowinthe dictionaryarray.
449
D Conditional Expressions
%variableWithSpecialCharacters%
Addressavariablewhosename containsspecialcharacters.Variables thatcontainspecialcharactersmust beenclosedinquotationmarks. Example:%address(work)% Valueofthevariablenamed address(work). Formoreinformation,see AddressingVariablesthatContain SpecialCharactersbelow.
Notes: Toviewthepathtoavariableinthepipeline,restthemousepointeroverthevariable name.Developerdisplaysthevariablepathinatooltip. Tocopythepathtoavariableinapipeline,selectthevariable,rightclick,andselect Copy. Youcanenclosevariablenamesin%,forexample%buyerInfo/state%.Ifthevariable nameincludesspecialcharacters,youmustenclosethepathtothevariablein% (percent)symbolsandenclosethevariablenamein(quotationmarks).Formore informationaboutusingvariablesasvaluesinexpressions,seeSyntaxonpage 439.
450
D Conditional Expressions
Followingaresomeexamplesofhowtoaddressvariablesthatcontainspecialcharacters. Type...
%Date/Time% %purchaseOrder/"Date/Time%
To... AddressavariablenamedDate/Time. AddressavariablenamedDate/Timeinthe documentvariablepurchaseOrder. Note: IfyoudidnotencloseDate/Timein quotationmarks,andinsteadhad %purchaseOrder/Date/Time%or %purchaseOrder/Date/Time%,theexpression wouldaddressavariablenamedTimeina documentnamedDatethatwascontainedina documentnamedpurchaseOrder.
%address(work)/phone(cell)% %Date\\Time%
451
D Conditional Expressions
452
D Conditional Expressions
The Broker considers expressions invalid when they contain.... Fieldnameswithsyntax,characters, symbols,orwordstheBrokerconsiders restrictedorreserved
Examples
eventtype L_EQUALS addEmployee tax% < 5
Nocomparisonoperators Astandardrelationaloperatorto comparefieldsoftypeString Alexicalrelationaloperatortocompare fieldsthatarenotoftypeString AfieldoftypeStringcomparedwitha numericvalue Operatorsotherthan=,==,!=,or<>to compareanObjectconstrainedasa Booleanwithavalue AnObjectconstrainedasaBoolean comparedwithafieldoftypeString
myBoolean = "stringFieldName"
/a{1}/ /a{1,5}/
fieldName = /\w/
453
D Conditional Expressions
454
jcode tags
456 456
455
E jcode tags
jcode Template
Thefollowingcodeprovidesatemplatedescribingthetags(highlighted)thatthejcode utilityusestoidentifycodesegmentsinaJavasourcefile.
package Interface1; /** * This is an example of an empty Java source code file, * properly annotated for use with the jcode utility. */ import com.wm.app.b2b.server.Service; import com.wm.app.b2b.server.ServiceException; import com.wm.data.IData; import com.wm.data.IDataCursor; // --- <<IS-START-IMPORTS>> --// --- <<IS-END-IMPORTS>> --public class Interface0 { public static void Service1 (IData pipeline) throws ServiceException { // --- <<IS-START(Service1)>> --// --- <<IS-END>> --return; } public static void Service2 (IData pipeline) throws ServiceException { // --- <<IS-START(Service2)>> --// --- <<IS-END>> --return; } // --- <<IS-START-SHARED>> --// --- <<IS-END-SHARED>> --}
jcode Example
ThefollowingisacompleteexampleofproperlycommentedJavasourcecode.
Sample CodeIData
Thefollowingisanexampleofaclasswhoseservices(methods)takeIDataobjectsas input.
package recording; /** * This is an example of Java source code properly annotated * for use with the IS jcode utility. Note that, unless * noted otherwise, all comments will be stripped out of this * file during the process of fragmenting the code. */
456
E jcode tags
/** * == IMPORTS == * All your imports should be wrapped with the START-IMPORTS * and END-IMPORTS tags. */ // --- <<IS-START-IMPORTS>> --import com.wm.app.b2b.server.Service; import com.wm.app.b2b.server.ServiceException; import com.wm.data.IData; import com.wm.data.IDataCursor; import com.wm.data.IDataUtil; import java.util.*; // --- <<IS-END-IMPORTS>> --/** * == CLASS NAMING == * This class contains the definition of all the Java services * within the recording.accounts interface (note the recording * package declaration up top). Note that each service is * defined by a method with the same name. */ public class accounts { /** * == INDIVIDUAL SERVICES == * The createAccount service. This service expects three * parameters -- a string ("name"), a string array ("references"), * and a document type. It returns two strings ("message" and "id"). * * Note the special tags delimiting the start and end of the * service. The two lines immediately before start tag and after * the end tags are mandatory. * * Also note the use of comments to establish a signature for the * service. Each signature line has the following format: * * [direction] type:dimension:option name * * direction: "i" (input) or "o" (output) * type: * field (corresponds to instances of java.lang.String) * document type (corresponds to instances of com.wm.data.IData) * object (corresponds to instances of any other class) * option: * required (this parameter is mandatory) * optional (this parameter is optional) * name: the name of the parameter * * To indicate nesting, use a single "-" at the beginning of * each line for each level of nesting. */ public static void createAccount (IData pipeline) throws ServiceException { // --- <<IS-START(createAccount)>> --// [i] field:0:required name // [i] field:1:required references // [i] record:0:required data // [i] - field:1:required address // [i] - field:1:required phone // [o] field:1:required message
457
E jcode tags
// [o] field:1:required id IDataCursor idc = pipeline.getCursor(); String name = IDataUtil.getString(idc, "name"); String [] refs = IDataUtil.getStringArray(idc, "references"); IData data = IDataUtil.getIData(idc, "data"); // Do something with the information here. Note that this // comment inside the service body is the only one that won't // get discarded when fragmenting the service (i.e., it will // show up in Developer.) idc.last(); idc.insertAfter ("message", "createAccount not fully implemented"); idc.insertAfter ("id", "00000000"); idc.destroy(); // --- <<IS-END>> --return; } /** * == COMPLEX SIGNATURES == * The getAccount service. This service takes a single string * "id", and returns a complex structure representing the * account information. Note the use of the helper functions * (defined below). */ public static void getAccount (IData pipeline) throws ServiceException { // --- <<IS-START(getAccount)>> --// [i] field:0:required id // [o] record:1:required account // [o] - field:0:required name // [o] - field:1:required refs // [o] - record:0:required contact // [o] -- field:0:required address // [o] -- field:0:required phone IDataCursor idc = pipeline.getCursor(); if(idc.first("id")) { try { String id = IDataUtil.getString(idc); IData data = getAccountInformation(id); idc.last(); idc.insertAfter ("account", data); } catch (Exception e) { throw new ServiceException(e.toString()); } } idc.destroy(); // --- <<IS-END>> --} /** * == SHARED SOURCE == * This is where the shared code lives. This includes both * global data structures and non-public functions that aren't * exposed as Services. Note the tags delimiting the start * and end of the shared code section. */
458
E jcode tags
// --- <<IS-START-SHARED>> --private static Vector accounts = new Vector(); private static IData getAccountInformation (String id) { throw new RuntimeException ("this service is not implemented yet"); } // --- <<IS-END-SHARED>> --}
459
E jcode tags
460
461
Overview
YoucanapplycontentconstraintstovariablesintheISdocumenttypes,specifications,or servicesignaturesthatyouwanttouseasblueprintsindatavalidation.Content constraintsdescribethedataavariablecancontain.Atvalidationtime,ifthevariable valuedoesnotconformtothecontentconstraintsappliedtothevariable,thevalidation engineconsidersthevaluetobeinvalid.Formoreinformationaboutvalidation,see Chapter 10,PerformingDataValidation. Whenapplyingcontentconstraintstovariables,youcandothefollowing: Select a content type.Acontenttypespecifiesthetypeofdataforthevariablevalue, suchasstring,integer,boolean,ordate.Acontenttypecorrespondstoasimpletype definitioninaschema. Set constraining facets.Constrainingfacetsrestrictthecontenttype,whichinturn, restrictthevalueofthevariabletowhichthecontenttypeisapplied.Eachcontent typehasasetofconstrainingfacets.Forexample,youcansetalengthrestrictionfora stringcontenttype,oramaximumvaluerestrictionforanintegercontenttype. Forexample,foraStringvariablenameditemQuantity,youmightspecifyacontenttype thatrequiresthevariablevaluetobeaninteger.Youcouldthensetconstrainingfacets thatlimitthecontentofitemQuantitytoavaluebetween1and100. Thecontenttypesandconstrainingfacetsdescribedinthisappendixcorrespondtothe builtindatatypesandconstrainingfacetsinXMLSchema.TheWorldWideWeb Consortium(W3C)definesthebuiltindatatypesandconstrainingfacetsinthe specificationXMLSchemaPart2:Datatypes(http://www.w3c.org/TR/xmlschema2).
462
Content Types
ThefollowingtableidentifiesthecontenttypesyoucanapplytoString,Stringlist,or Stringtablevariables.Eachofthesecontenttypescorrespondstoabuiltinsimpletype definedinthespecificationXMLSchemaPart2:Datatypes. Note: FordetailsaboutconstraintsforObjectsandObjectlists,seeAppendix C, SupportedDataTypes. Content Types anyURI Description AUniformResourceIdentifierReference.ThevalueofanyURI maybeabsoluteorrelative. Constraining Facets enumeration,length,maxLength,minLength,pattern Note: TheanyURItypeindicatesthatthevariablevalueplaysthe roleofaURIandisdefinedlikeaURI.webMethodsIntegration ServerdoesnotvalidateURIreferencesbecauseitisimpractical forapplicationstocheckthevalidityofaURIreference. base64Binary Base64encodedbinarydata. Constraining Facets enumeration,length,maxLength,minLength,pattern boolean Trueorfalse. Constraining Facets pattern Example
true, 1, false, 0
byte
463
Description AcalendardatefromtheGregoriancalendar.Valuesneedto matchthefollowingpattern: CCYYMMDD WhereCCrepresentsthecentury,YYtheyear,MMthemonth,DD theday.ThepatterncanincludeaZattheendtoindicate CoordinatedUniversalTimeortoindicatethedifferencebetween thetimezoneandcoordinateduniversaltime. Constraining Facets enumeration,maxExclusive,maxInclusive,minExclusive, minInclusive,pattern Example
1997-08-09
(August9,1997)
dateTime
Aspecificinstantoftime(adateandtimeofday).Valuesneedto matchthefollowingpattern: CCYYMMDDThh:mm:ss.sss WhereCCrepresentsthecentury,YYtheyear,MMthemonth,DD theday,Tthedate/timeseparator,hhthehour,mmtheminutes, andsstheseconds.ThepatterncanincludeaZattheendto indicateCoordinatedUniversalTimeortoindicatethedifference betweenthetimezoneandcoordinateduniversaltime. Constraining Facets enumeration,maxExclusive,maxInclusive,minExclusive, minInclusive,pattern Example
2000-06-29T17:30:00-05:00represents5:30pmEasternStandard timeonJune29,2000.(EasternStandardTimeis5hoursbehind CoordinatedUniversalTime.)
decimal
464
duration
Alengthoftime.Valuesneedtomatchthefollowingpattern: PnYnMnDTnHnMnS WherenYrepresentsthenumberofyears,nMthenumberof months,nDthenumberofdays,Tseparatesthedateandtime,nH thenumberofhours,nMthenumberofminutesandnSthe numberofseconds.Precedethedurationwithaminus()signto indicateanegativeduration. Constraining Facets enumeration,maxExclusive,maxInclusive,minExclusive, minInclusive,pattern Example
P2Y10M20DT5H50Mrepresentsadurationof2years,10months,20 days,5hours,and50minutes
ENTITIES
ENTITY
float
465
Description Aspecificdaythatrecurseverymonth.Valuesmustmatchthe followingpattern: DD WhereDDrepresentstheday.ThepatterncanincludeaZatthe endtoindicateCoordinatedUniversalTimeortoindicatethe differencebetweenthetimezoneandcoordinateduniversaltime. Constraining Facets enumeration,maxExclusive,maxInclusive,minExclusive, minInclusive,pattern Example
---24indicatesthe24thofeachmonth
gMonth
AGregorianmonththatoccurseveryyear.Valuesmustmatchthe followingpattern: MM WhereMMrepresentsthemonth.ThepatterncanincludeaZat theendtoindicateCoordinatedUniversalTimeortoindicatethe differencebetweenthetimezoneandcoordinateduniversaltime. Constraining Facets enumeration,maxExclusive,maxInclusive,minExclusive, minInclusive,pattern Example
--11representsNovember
gMonthDay
AspecificdayandmonththatrecurseveryyearintheGregorian calendar.Valuesmustmatchthefollowingpattern: MMDD WhereMMrepresentsthemonthandDDrepresentstheday.The patterncanincludeaZattheendtoindicateCoordinated UniversalTimeortoindicatethedifferencebetweenthetimezone andcoordinateduniversaltime. Constraining Facets enumeration,maxExclusive,maxInclusive,minExclusive, minInclusive,pattern Example
--09-24representsSeptember24th
466
Description AspecificyearintheGregoriancalendar.Valuesmustmatchthe followingpattern: CCYY WhereCCrepresentsthecentury,andYYtheyear.Thepattern canincludeaZattheendtoindicateCoordinatedUniversalTime ortoindicatethedifferencebetweenthetimezoneand coordinateduniversaltime. Constraining Facets enumeration,maxExclusive,maxInclusive,minExclusive, minInclusive,pattern Example
2001indicates2001
gYearMonth
AspecificmonthandyearintheGregoriancalendar.Valuesmust matchthefollowingpattern: CCYYMM WhereCCrepresentsthecentury,YYtheyear,andMMthe month.ThepatterncanincludeaZattheendtoindicate CoordinatedUniversalTimeortoindicatethedifferencebetween thetimezoneandcoordinateduniversaltime. Constraining Facets enumeration,maxExclusive,maxInclusive,minExclusive, minInclusive,pattern Example
2001-04indicatesApril2001
hexBinary
ID
467
IDREFS
int
integer
language
468
Name
NCName
negativeInteger
NMTOKEN
NMTOKENS
469
nonPositiveInteger
normalizedString
positiveInteger
short
470
time
Aninstantoftimethatoccurseveryday.Valuesmustmatchthe followingpattern: hh:mm:ss.sss Wherehhindicatesthehour,mmtheminutes,andsstheseconds. ThepatterncanincludeaZattheendtoindicateCoordinated UniversalTimeortoindicatethedifferencebetweenthetimezone andcoordinateduniversaltime. Constraining Facets enumeration,maxExclusive,maxInclusive,minExclusive, minInclusive,pattern Example
18:10:00-05:00 (6:10pm,EasternStandardTime)Eastern StandardTimeis5hoursbehindCoordinatedUniversalTime.
token
unsignedByte
471
unsignedLong
unsignedShort
472
Constraining Facets
Whenyouapplyacontenttypetoavariable,youcanalsosetconstrainingfacetsforthe contenttype.Constrainingfacetsarepropertiesthatfurtherdefinethecontenttype.For example,youcansetaminimumvalueorprecisionvalueforadecimalcontenttype. Eachcontenttypehasasetofconstrainingfacets.Theconstrainingfacetsdescribedinthe followingtablecorrespondtoconstrainingfacetsdefinedinthespecificationXMLSchema Part2:Datatypes. Constraining Facet enumeration Description Thepossiblevaluesforthe variableatruntime. Usage Notes Ifyoualsoenteredpossible valuesusingthePick list choicespropertyinthe Generalcategoryofthe Propertiespanel,thosevalues willbedisplayedatruntime. However,theenumeration valueswillbeusedfor validation. fractionDigitsmustbelessthan orequaltototalDigits.
fractionDigits
Themaximumnumberofdigitsto therightofthedecimalpoint.For example,thefractionDigitsofthe value999.99is2. Thepreciseunitsoflength requiredforthevariablevalue. Theupperboundofarangeof possiblevalues.Therange excludesthevalueyouspecify.The variablecanhaveavaluelessthan butnotequaltomaxExclusive. Theupperboundofarangeof possiblevalues.Therange includesthevalueyouspecify.The variablecanhaveavaluelessthan orequaltomaxInclusive. Themaximumunitsoflength permittedforthevariablevalue.
length
Ifyouspecifylength,you cannotspecifyeither minLengthormaxLength. maxExclusivemustbegreater thanorequaltominExclusive. Youcannotspecify maxInclusiveandmaxExclusive forthesamecontenttype. maxInclusivemustbegreater thanorequaltominInclusive. Youcannotspecify maxInclusiveandmaxExclusive forthesamecontenttype. maxLengthmustbegreater thanorequaltominLength.
maxExclusive
maxInclusive
maxLength
473
Description Thelowerboundofarangeof possiblevalues.Therangedoes notincludethevalueyouspecify. Thevariablecanhaveavalue greaterthanbutnotequalto minExclusive. Thelowerboundofarangeof possiblevalues.Therange includesthevalueyouspecify.The variablecanhaveavaluegreater thanorequaltominInclusive. Theminimumunitsoflength permittedforthevariablevalue. Apattern(regularexpression)that thevalueofthevariablemust match.Forexample,youcanusea regularexpressiontospecifythata variablethatisastringcontent constraintmatchaSocialSecurity numberformat. Themaximumnumberofdecimal digitsallowedinavalue.For example,thetotalDigitsofthevalue 999.99is5. Thewhitespacenormalization performedonthevariablevalue. ThevalueofwhiteSpacecanbeone ofthefollowing:
preserve: Nowhitespace normalizationisperformed.
Usage Notes minExclusivemustbelessthan orequaltomaxExclusive. Youcannotspecify minInclusiveandminExclusive forthesamecontenttype. minInclusivemustbelessthan orequaltomaxInclusive. Youcannotspecify minInclusiveandminExclusive forthesamecontenttype. minLengthmustbelessthanor equaltomaxLength.
minInclusive
minLength pattern
totalDigits
totalDigitsmustbegreater thanorequaltofractionDigits.
whiteSpace
replace:
474
Note: PreviousversionsofXMLSchemacontainedtheconstrainingfacetsduration, encoding,period,precision,andscale.However,theseconstrainingfacetsarenot includedintherecommendationofXMLSchemaPart2:Datatypes.Theconstraining facetsduration,encoding,andperiodwereremoved.precisionwasrenamedtotalDigits. scalewasrenamedfractionDigits.IfyouviewacontenttypefromanISschemacreated fromanXMLSchemaDefinitionthatusedpreRecommendationversionofXML Schema(beforeMay2001)theContentTypedialogboxwilldisplaytheconstraining facetsthatwereavailableinthepreRecommendationversionofXMLSchema. Note: Thewordfixedappearsnexttothenameofaconstrainingfacetwhosevalue isfixedandcannotbechanged.Whenafacethasafixedvalue,thefacetiscalleda fixedfacet.
475
476
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Validation Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Validation Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IS Schema Generation Errors and Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
477
Overview
Thisappendixdescribesthefollowing: Validationerrors Validationexceptions ErrorsandwarningsthatmayoccurwhilegeneratinganISschema
Validation Errors
Whenyouperformvalidationusingabuiltinservice,webMethodsIntegrationServer returnsvalidationerrorsintheerrorsoutputvariableiftheobjectisinvalid.Whenyou performinput/outputvalidation,webMethodsIntegrationServerthrowsanexceptionif theinputsoroutputsareinvalid.Errormessagesarecontainedintheexception. Eachvalidationerrorcontainsacodeandadefaultmessage.Errorcodeprefixesindicate thevalidationerrortype: DTindicatesadatatypevalidationerror.Datatypevalidationerrorspertaintothe contenttypeconstraintsappliedtothevariables. NVindicatesanodevalidationerror.Nodevalidationerrorspertaintothevalidation ofanXMLnode. VVindicatesadocumentvalidationerror.Documentvalidationerrorspertaintothe structureofthedatavalues(forexample,aninvaliddocumentstructure). Thefollowingtabledescribesthevalidationerrorsyoucanreceivewhenperforming XML,pipeline,ordocumentvalidation. Error Code DT001 Message and Description [ISC.0082.9447] Value does not conform to datatype. Cause: Thevaluedoesnotmatchthespecifiedcontent type. DT002 [ISC.0082.9460] No matching enumeration value. Cause: Thevalueisnotanitemlistedintheenumeration field. DT003 [ISC.0082.9463] Length of value is not equal to specified length. Cause: Thesizeofthevaluedoesnotequalthenumber specifiedinthelengthfield.
478
Message and Description [ISC.0082.9464] Value is shorter than minimum length. Cause: Thesizeofthevalueislessthanthenumber specifiedintheminLengthfield.
DT005
DT006
DT007
[ISC.0082.9490] Number of fraction digits is greater than fractionDigits. Cause: Thenumberofdigitstotherightofthedecimal pointisgreaterthanthenumberspecifiedinthe fractionDigitsfield.
DT008
DT009
DT010
DT011
DT012
479
Message and Description [ISC.0082.9474] The input has invalid characters. Cause: ThespecifiedwhiteSpacevalueisinvalid.The valueofthewhiteSpacefieldcanbepreserve,replace,or collapse.
DTBinary001
DTBinary002
[ISC.0082.9297] Value is shorter than minimum length Cause: Sizeofthebinaryvalue,inoctets,islessthanthe valuespecifiedintheminimum lengthfield.
DTBinary003
[ISC.0082.9298] Value is longer than maximum length Cause: Sizeofthebinaryvalue,inoctets,isgreaterthan thevaluespecifiedinthemaximum lengthfield.
DTBinary004
[ISC.0082.9296] Length of value is not equal to specified length Cause: Sizeofthebinaryvalue,inoctets,isnotequalto thevaluespecifiedinthelengthfield.
DTBoolean001
DTDecimal001
DTDecimal002
DTDecimal003
[ISC.0082.9294] Value is less than minimum Cause: Thedecimalvalueislessthanthevaluespecified intheminimum exclusiveorminimum inclusivefield.
480
Message and Description [ISC.0082.9295] Value is greater than maximum Cause: Thedecimalvalueisgreaterthanthevalue specifiedinthemaximum exclusiveormaximum inclusive field.
DTDecimal005
DTDecimal006
DTDouble001
DTDouble002
[ISC.0082.9294] Value is less than minimum Cause: Thedoublevalueislessthanthevaluespecifiedin theminimum exclusiveorminimum inclusivefield.
DTDouble003
[ISC.0082.9295] Value is greater than maximum Cause: Thedoublevalueisgreaterthanthevalue specifiedinthemaximum exclusiveormaximum inclusive field.
DTDouble004
DTFloat001
DTFloat002
[ISC.0082.9294] Value is less than minimum Cause: Thefloatvalueislessthanthevaluespecifiedin theminimum exclusiveorminimum inclusivefield.
481
Message and Description [ISC.0082.9295] Value is greater than maximum Cause: Thefloatvalueisgreaterthanthevaluespecified inthemaximum exclusiveormaximum inclusivefield.
DTFloat004
DTInt001
DTInt002
[ISC.0082.9294] Value is less than minimum Cause: Theintegervalueislessthanthevaluespecifiedin theminimum exclusiveorminimum inclusivefield.
DTInt003
[ISC.0082.9295] Value is greater than maximum Cause: Theintegervalueisgreaterthanthevalue specifiedinthemaximum exclusiveormaximum inclusive field.
DTInt004
DTINTEGER001
DTINTEGER002
DTINTEGER003
[ISC.0082.9294] Value is less than minimum Cause: Theintegervalueislessthanthevaluespecifiedin theminimum exclusiveorminimum inclusivefield.
DTINTEGER004
[ISC.0082.9295] Value is greater than maximum Cause: Theintegervalueisgreaterthanthevalue specifiedinthemaximum exclusiveormaximum inclusive field.
482
Message and Description [ISC.0082.9293] No matching choice value Cause: Thelongvalueisnotanelementlistedinthe choicesfield.
DTLong002
[ISC.0082.9294] Value is less than minimum Cause: Thelongvalueislessthanthevaluespecifiedin theminimum exclusiveorminimum inclusivefield.
DTLong003
[ISC.0082.9295] Value is greater than maximum Cause: Thelongvalueisgreaterthanthevaluespecified inthemaximum exclusiveormaximum inclusivefield.
DTLong004
DTList001
DTList002
[ISC.0082.9297] Value is shorter than minimum length Cause: Sizeofthelistislessthanthevaluespecifiedinthe minimum lengthfield.
DTList003
[ISC.0082.9298] Value is longer than maximum length Cause: Sizeofthelistisgreaterthanthevaluespecifiedin themaximum lengthfield.
DTList004
DTRecurringDuration001
483
Message and Description [ISC.0082.9294] Value is less than minimum Cause: Therecurringdurationvalueislessthanthevalue specifiedintheminimum exclusiveorminimum inclusive field.
DTRecurringDuration003
[ISC.0082.9295] Value is greater than maximum Cause: Therecurringdurationvalueisgreaterthanthe valuespecifiedinthemaximum exclusiveormaximum inclusivefield.
DTRecurringDuration004
DTSTR001
DTSTR002
[ISC.0082.9297] Value is shorter than minimum length Cause: Thesizeofthestring,incharacters,islessthanthe valuespecifiedintheminimum lengthfield.
DTSTR003
[ISC.0082.9298] Value is longer than maximum length Cause: Thesizeofthestring,incharacters,isgreaterthan thevaluespecifiedinthemaximum lengthfield.
DTSTR004
DTTime001
DTTime002
[ISC.0082.9294] Value is less than minimum Cause: Thetimevalueislessthanthevaluespecifiedin theminimum exclusiveorminimum inclusivefield.
484
Message and Description [ISC.0082.9295] Value is greater than maximum Cause: Thetimevalueisgreaterthanthevaluespecified inthemaximum exclusiveormaximum inclusivefield.
DTTime004
DTTimeDuration001
DTTimeDuration002
[ISC.0082.9294] Value is less than minimum Cause: Thetimedurationvalueislessthanthevalue specifiedintheminimum exclusiveorminimum inclusive field.
DTTimeDuration003
[ISC.0082.9295] Value is greater than maximum Cause: Thetimedurationvalueisgreaterthanthevalue specifiedinthemaximum exclusiveormaximum inclusive field.
DTTimeDuration004
DTTimePeriod001
[ISC.0082.9246] Values does not conform to data type Cause: Thetimeperiodvaluedoesnotmatchdatatype specifiedintheISschema.
DTTimePeriod002
DTTimePeriod003
[ISC.0082.9294] Value is less than minimum Cause: Thetimedurationvalueislessthanthevalue specifiedintheminimum exclusiveorminimum inclusive field.
485
Message and Description [ISC.0082.9295] Value is greater than maximum Cause: Thetimedurationvalueisgreaterthanthevalue specifiedinthemaximum exclusiveormaximum inclusive field.
NV001
NV002
[ISC.0082.9002] Unable to retrieve root element Cause: XMLdocumentisempty. Response: Checkthatthedocumentisbeingsubmitted properly.
NV003
[ISC.0082.9003] Unable to locate a matching element declaration Cause: Anundeclaredelementnodeisfoundinthe instancedocument. Response: Checktomakesurethatthedocumentuses onlydeclaredelements.
NV004
[ISC.0082.9004] [attributes] property must be empty Cause: Thiselementcarriesattributesthatarenot expected. Response: Checktomakesurethatthedocumentonly useselementattributesthataredeclaredintheschema.
NV005
[ISC.0082.9005] Element information items are not allowed in [children] property Cause: Thiselementcontainschildelements;however,the elementdeclarationintheISschemaindicatesthatthe elementdoesnotcontainanychildelements. Response: Checktomakesurethatthedocumentproperly conformstotheschema.
486
Message and Description [ISC.0082.9006] Unable to locate a matching attribute declaration Cause: Thiselementcarriesanattributethatisnot declaredintheelementdeclarationintheISschema. Response: Checktomakesurethatthedocumentonly useselementattributesthataredeclaredintheschema.
NV007
[ISC.0082.9007] Missing Attribute Information Item Cause: Arequiredattributeisnotfoundinthiselement node. Response: Checktomakesurethatthedocument conformstotheschema.
NV008
[ISC.0082.9008] Invalid value - does not match fixed value Cause: Theinstancedocumentcontainsaninvalid elementbodyorattributevalue.Specifically,theelement bodyorattributevaluedoesnotmatchafixedvalue foundinthedeclaration. Response: Checktomakesurethatthedocument conformstotheschema.
NV009
[ISC.0082.9009] Child element elementName at position location is unexpected. Cause: Theelementisnotavalidchildelementorthe sequenceofchildelementsdoesnotsatisfytheorder specifiedinthecorrespondingelementdeclarationor complextypedefinition. Response: Checktomakesurethatthedocument conformstotheschema. [ISC.0082.9010] Incomplete contentone or more child elements are expected. Cause: Theelementisnotavalidchildelementorthe sequenceofchildelementsdoesnotsatisfytheorder specifiedinthedefinition. Response: Checktomakesurethatthedocument conformstotheschema.
487
Message and Description [ISC.0082.9011] Unable to locate attribute declaration Cause: Anattributedeclarationisnotfound.Itispossible thatadependentISschemathatcontainsthisattribute declarationwasremovedfromtheISNamespace.For example,ISschemapub.schema.w3c:datatypesreferencesan attributedeclaration(xml:lang)inpub.schema.w3c:xml.If youreceivethiserror,itispossiblethatpub.schema.w3c:xml wasremoved. Response: Checktomakesurethatalloftheattribute declarationsreferencedbytheschemaarepresent.
NV011
[ISC.0082.9012] Unable to locate type definition Cause: Asimpleorcomplextypedefinitionisnotfound. ItispossiblethatadependentISschemathatcontains thistypedefinitionwasremovedfromtheISNamespace. Forexample,ISschemapub.schema.w3c:structuresreferences atypedefinitioninpub.schema.w3c:datatypes.Ifyoureceive thiserror,itispossiblethatpub.schema.w3c:datatypeswas removed. Response: Checktomakesurethatallofthetype definitionsreferencedbytheschemaarepresent.
NV012
[ISC.0082.9014] Unable to locate element declaration Cause: Anelementdeclarationisnotfound.Itispossible thatadependentISschemathatcontainstheelement declarationwasremovedfromtheISNamespace. Response: Checktomakesurethatalltheelement declarationsreferencedbytheschemaarepresent.
NV013
488
Message and Description [ISC.0082.9017] typeName is not validly derived from declaredTypeName Cause: Thiserroroccurswhenthefirsttypeisusedina contextwherethesecondtypeisexpected,andeitherthe firsttypeisnotthesameasthesecondtypeorthefirst typeisnotvalidlyderivedfromthesecondtype. Response: Checktomakesurethatthecorrecttypesare specifiedintheschemaandthatthecorrect correspondingtypesareusedinthedocument.
NV015
[ISC.0082.9018] typeName is an abstract type and cannot be used directly to validate content Cause: Thespecifiedtypeisanabstracttypethathasbeen eitherdeclaredornominated.Abstracttypescannotbe usedtovalidateelementcontent. Response: Makesuretouseonlyconcretetypeswhen validatingelementcontent.
NV016
[ISC.0082.9019] elementName is an abstract element and cannot appear in an instance Cause: Theelementdeclarationidentifiestheelementas anabstractelement.Abstractelementscannotappearin instancedocuments. Response: Makesuretoonlyuseconcreteelementsin instancedocuments.
NV017
[ISC.0082.9020] QName - xsi:type is used incorrectly (declared type is anonymous) Cause: Atypeisnominatedusingxsi:typeforanelement whosedeclarationcontainsananonymoustype.Anew typecannotbederivedfromananonymoustypebecause newtypescanbederivedonlyfromnamedtypes. Response: Besuretouseonlynamedtypeswhen declaringnewtypes.
489
Message and Description [ISC.0082.9021] Contains invalid text Cause: Theschemaprocessorencounteredaninvalid pieceoftext.Itispossiblethattheinstancedocument containsasimpletypewhereelementdeclarationsare interspersedwithtext.Simpletypescannotcontain elementdeclarations. Response: Checktomakesurethatthedocument conformstotheschema.
VV001
VV002
[ISC.0082.9026]UndefinedObjectfound Cause: Adocument(IDataobject)containsanorphan variable.(ThismessageonlyappearsiftheAllow unspecified fieldspropertyintheConstraintscategoryofthe PropertiespanelisFalse.) Response: Makesurethatallvariablesaredefined,or checktheboxtoallowunspecifiedfieldsonthe constraintstaboftheVariablePropertiesdialogbox.
VV003
[ISC.0082.9027] Dimension mismatch, List expected Cause: Thevaluebeingvalidatedisascalarvalueora multidimensionalarray(Stringtable),howeverthe variableitisbeingvalidatedagainstisalist(one dimensionalarray). Response: Checktomakesurethatthedocument conformstotheschema. [ISC.0082.9028] Dimension mismatch, Single item expected Cause: Thevaluebeingvalidatedisanarrayvalue(alist oratable).Thevariableitisbeingvalidatedagainstis scalar. Response: Checktomakesurethatthedocument conformstotheschema.
490
Error Code
Message and Description [ISC.0082.9029] Dimension mismatch, Table expected Cause: Thevaluebeingvalidatedisascalarvalueoraone dimensionalarray(list).Thevariableitisbeingvalidated againstisatwodimensionalarray(table). Response: Checktomakesurethatthedocument conformstotheschema.
VV004
[ISC.0082.9030] Type mismatch, String expected Cause: ThevalueisbeingvalidatedagainstaString variable,buttheISdatatypeofthevalueisnotaString. Response: Checktomakesurethatthedocument conformstotheschema. [ISC.0082.9031] Type mismatch, Document expected Cause: ThevalueisbeingvalidatedagainstanIS documenttypevariable,buttheISdatatypeofthevalue isnotanISdocumenttype. Response: Checktomakesurethatthedocument conformstotheschema. [ISC.0082.9032] Type mismatch, Object expected Cause: ThevalueisbeingvalidatedagainstanObject variable,buttheISdatatypeofthevalueisnotanObject. Response: Checktomakesurethatthedocument conformstotheschema.
491
Validation Exceptions
Atruntime,theserviceperformingvalidationeithersucceedsorfails.Iftheservicefails, webMethodsIntegrationServerthrowsavalidationexception.Avalidationexceptionis generatedifoneofthefollowingistrue: Errorsaredetectedintheobject(XMLnode,pipeline,ordocument(IDataobject)) thatispassed(forexample,nullvalue). Thebasicvalidationcontractisviolated(forexample,abinarytreeispassedinstead ofadocument(IDataobject)asexpected). Youspecifythattheserviceshouldfailiftheobjecttobevalidated(XMLnode, pipeline,ordocument(IDataobject))didnotconformtotheISschemaorIS documenttype(forexample,failIfInvalid=true).Ifthisisthereasonfortheexception, webMethodsIntegrationServerinsertsthevalidationerrorsintotheexception message. Thefollowingtableidentifiesanddescribesthevalidationexceptionsthatcanbe generated. Default Exception Message [ISS.0062.9021] object is null When is it thrown? Realtimeand designtime Description Cause: Theobjecttobevalidateddoes notexistinthepipeline. Response: LinkanXMLnodeor documentvariabletotheobject variableinService In. [ISS.0062.9022] %NSName% object does not exists Realtimeand designtime Cause: TheISdocumenttypeorIS schemaspecifiedfortheconformsTo variabledoesnotexistintheIS Namespace. Response: Changethevalueof conformsTotobeanISdocumenttype orISschemathatexistsintheIS namespace. [ISS.0062.9024] webMethods Integration Server does not support this type of validation (may or may not support in the future) Realtimeand designtime Cause: Theobjecttobevalidatedis notoneofthetypessupportedby validation. Response: Currently,onlyXML, pipeline,anddocument(IDataobject) validationissupported.
492
Description Cause: Themin lengthiseithernota parsablenumberorconflictswithmax length. Response: Changethemin lengthvalue andmakesurethatitiswithinthe allowedrangeforthecontenttype.
Designtime
Cause: Themax lengthiseithernota parsablenumberorconflictswith minimumlength. Response: Changethemax lengthvalue andmakesurethatitiswithinthe allowedrangeforthecontenttype.
Designtime
Designtime
Cause: ThespecifiedminInclusivevalue isinvalid.Forexample,the minInclusivevalueforavariablewith contenttypeconstraintofshortmust alsobeashort. Response: MakesuretheminInclusive isavalidnumberforthespecified contenttype.
Designtime
Cause: ThespecifiedminExclusive valueisinvalid.Forexample,the minExclusivevalueforavariablewith contenttypeconstraintofshortmust alsobeashort. Response: MakesuretheminExclusive isavalidnumberforthespecified contenttype.
493
Description Cause: ThespecifiedmaxInclusive valueisinvalid.Forexample,the maxInclusivevalueforavariablewith contenttypeconstraintofshortmust alsobeashort. Response: MakesurethemaxInclusive isavalidnumberforthespecified contenttype.
Designtime
Cause: ThespecifiedmaxExclusive valueisinvalid.Forexample,the maxExclusivevalueforavariablewith contenttypeconstraintofshortmust alsobeashort. Response: MakesurethemaxExclusive isavalidnumberforthespecified contenttype.
Designtime
Designtime
Designtime
Designtime
494
Designtime
Cause: Acontenttypeconstraintis definedintermsofthecollectiveset ofconstrainingfacetvalues.Together, thesevaluesdeterminetheallowed valuesandpropertiesofthecontent type.Theconstrainingfacetvalueyou justspecifiedmayconflictwithother constrainingfacetvalues.For example,ifyouspecifylengthforthe stringcontenttype,youcannot specifymin lengthormax length. Response: Examinetheconstraining facetvaluestomakesurethevalues donotconflictwitheachother.
Designtime
495
Default Exception Message [ISS.0062.9303] Minimum is out of range (Valid range is from lowerBound to upperBound)
Description Cause: Theminimumvalueisoutof thevalidrangeforthecontenttype. Response: Changetheminimumvalue (min exclusive,min inclusive,ormin length)andmakesurethatitiswithin theallowedrangeforthecontent type.
Designtime
Cause: Thespecifiedmaximumvalue isoutofthevalidrangeforthe contenttype. Response: Changethemaximum value(max exclusive,max inclusiveor max length)andmakesurethatitis withintheallowedrangeforthe contenttype.
496
497
Code XSDC001
Message and Description [ISC.0082.9703] Duplicate declaration found in this schema definition Cause: AduplicateattributeorelementdeclarationisfoundintheXML Schemadefinition. Response: MakesuretheXMLSchemadefinitionisvalid.
XSDC002
[ISC.0082.9704] Duplicate definition found in this schema definition Cause: Aduplicatesimpletypeorcomplextypedefinitionisfoundin theXMLSchemadefinition. Response: MakesuretheXMLSchemadefinitionisvalid.
XSDC003
[ISC.0082.9705] Definition not found Cause: Asimpletypeorcomplextypedefinitionismissingfromthe XMLSchemadefinition. Response: MakesurethedatatypedefinitionispresentintheXML Schemadefinition.
XSDC004
XSDC005
[ISC.0082.9707] Base type definition not found Cause: Abasetypedefinitionthatisusedtoderiveeitherasimpletype orcomplextypeismissingfromtheXMLSchemadefinition. Response: MakesurethebasetypedefinitionispresentintheXML Schemadefinition.
XSDC006
[ISC.0082.9708] Type derivation not OK Cause: Anerror.Asperthespec(s)fromtheW3C,thetypederivation isnotOK. [ISC.0082.9709] Type derivation not OK: attribute declaration to be restricted is not found in the base type definition Cause: Inacomplextypederivation,anattributedeclarationrestrictsthe useofanattribute.However,thisattributedeclarationisnotfoundin thebasetypedefinition. Response: Makesurethattheattributedeclarationispresentinthebase typedefinition.
498
Code
Message and Description [ISC.0082.9710] Type derivation not OK: attribute declaration to be prohibited is not found in the base type definition Cause: Inacomplextypederivation,anattributedeclarationprohibits theuseofanattribute.However,thisattributedeclarationisnotfound inthebasetypedefinition. Response: Makesurethattheattributedeclarationispresentinthebase typedefinition.
XSDC008
[ISC.0082.9712] Incorrect facet (s) specified: typeName throws errorMessage. Cause: Constrainingfacetsappliedtothedatatypeareincorrector cannotbeusedwiththedatatype. Response: Usetheerrormessagestodeterminewhichconstraining facetstoremovefromthetypedefinition.
XSDC009
XSDC080
[ISC.0082.9701] Duplicate declaration found in this schema folderName:schemaNamewith the same target namespace Cause: Warnsthatanidenticalattributedeclarationorelement declarationisfoundinthespecifiedschemawiththesametarget namespace.Theschemaprocessorcreatestheschemabutdoesnot includetheduplicatedeclaration.Instead,theschemacontainsa pointertothefirst(original)declaration. Response: Nonerequired.
XSDC081
[ISC.0082.9702] Duplicate definition found in this schema folderName:schemaName with the same target namespace Cause: Warnsthatanidenticalsimpletypeorcomplextypedefinitionis foundinthespecifiedschemawiththesametargetnamespace.The schemaprocessorcreatestheschemabutdoesnotincludetheduplicate typedefinition.Instead,theschemacontainsapointertothefirst (original)typedefinition. Response: Nonerequired.
499
Code
Message and Description [ISC.0082.9106] Complex type TypeName is recursive. webMethods Integration Server does not support creating a document type from an XSD with a recursive complex type. Cause: TheXMLSchemacontainsarecursivecomplextypedefinition. TheIntegrationServerdoesnotsupportgeneratingadocumenttype fromanISschemacontainingarecursivecomplextype.Thiserroronly occurswhenyougenerateanISdocumenttypefromanXMLSchema. Response: Iftheschemayouareusingtogenerateadocumenttype containsarecursivecomplextypedefinition,selecttheGenerate complex types as document typesoptionwhenyoucreateanewdocumenttype fromanXMLSchemainDeveloper.
500
Index
Symbols
_env field 261 ! 447 != 444 " 451 ( 451 ) 451 / 451 \ 451 & 448 && 448 % 451 277 < 444 <= 445 <> 444 = 443 == 443 > 444 >= 444 | 447 || 447 $xmldata 367 adding folders 131 packages 76 transformers 229 variables to pipeline link 226 addressing variables in expressions and filters 449 variables with special characters 450 alarm events definition of 378, 391 reasons generated 391 uses of 391 all content model 243 Allow unspecified fields option 274 and operator 448 annotating source code for jcode 337 anonymous type definitions 243 any attribute declaration 242 any element declaration 242 anyURI content constraint 463 API for Java services 332 applying conditions to links 219 constraints to variables 273, 462 areas of Developer window behavior and operation 35 editor 31 focus 35 general layout 25 Navigation panel 26 Properties panel 33 Recent Elements tab 31 resizing 37 Results panel 35 switching perspectives 38 UDDI Registry tab 29 zooming 37 arithmetic services 229 array variables default behavior for linking 433 definition of 433 guidelines for linking 218 linking to or from array variables 216, 433 linking to or from scalar variables 216, 433 linking to transformers 232
A
access control 114 ACLs assigning to elements 114, 117 assigning to packages and folders 117 checking for services 115 defined 114 element creation, view, and deletion implications 122 inheritance 119 locking implications 121 requirements for using Developer 22 testing and debugging implications 121 viewing on a server 120 actions, performing on IS elements 36 adapter notifications described 262 guidelines for moving and copying 53 adapter services, retry behavior 401
501
Index
assigning default value to a variable 222 replication services 90 shutdown services 90 startup services 90 universal names to services 154 values to pipeline variables 221, 222 variable values to a variable 223 version numbers to packages 83 attribute declaration 242 reference 242 audit data, when generated 158 audit events definition of 378, 392 when generated 158 Audit level property 165 auditing configuring 157 failed and successful services 159, 163 failed services 159 for errors 162 for recovery, described 163 for resubmission purposes 162 long-running services 164 service retry 151 services 157 use cases 162 auditing options overwritten by server property 165 setting for a service 164 auditLog server property 165
B
base64Binary content constraint 463 blank labels in BRANCH steps 180 blue links, in the Pipeline tab 217 booleans content constraint 463 in filters, Broker restrictions 453 BRANCH step branching on empty values 180 branching on expressions 179 branching on null values 180 branching on switch value 176 creating 184 creating a multi-step child for 182 definition of 128, 408
Evaluate labels property 179 specifying default step 181 specifying label value 177 specifying switch variable 177 switch value 176 using conditional expressions 179 using in a flow 176 using SEQUENCE as a target of 182 using with regular expressions 177 breakpoints and the Trace Into command 307 clearing from flow steps 308 clearing from transformers 308 listing all 309 locating in flow services 309 overview 307 point when processing halts 307, 308 removing 309 setting in flow services 307 setting on a flow step 307 setting on a transformer 308 Broker filter collation locale 445 filter rules 452 Broker document type, creating publishable document type from 259 Broker document types using to create publishable document type 259 Broker/local trigger definition of 27 Broker/local triggers creating filters for 438 browser clients creating 360 invoking services from 361, 362 testing from 298 building event handler sample 388 event handlers 387 flow services 126 built-in services for arithmetic operations 229 for date/time transformations 229 for document (IData object) validation 281 for pipeline validation 282 for remote services 174 for string manipulation 229 for XML validation 282 invoking 174 throwExceptionForRetry 153 byte content constraint 463
502
Index
C
C/C++ clients creating 353, 354 creating a make file 354 C/C++ services compiling with a make file 341 creating 341, 342 caching definition of 142 elements to improve Developer performance 70 services not suited for 143 services suited for 143 setting 145 using prefetch 144 call stack 296 catch sequence, in service retry 401 changing level of a step 171 passwords 41 position of a step 170 child flows described 171 stepping in/out of child flows 305 tracing 303 choice content model 243 circular dependencies, between packages 87 class files location of 335 clearing breakpoints on flow steps 308 breakpoints on transformers 308 client applications creating browser-based 360 creating C/C++ 353 creating Excel 358 creating Java 350 creating Visual Basic 355 closed documents, described 274 closing a session on webMethods Integration Server 39 coded services, about 326 collapsing transformers 235 white space 474 COM objects invoking as services 345 using with webMethods components 345 COM services creating 345
com.wm.app.b2b.server.ISRuntimeException class 153 combining Trace and Step commands 301 commands Disable Step 310, 311 Enable Step 310, 311 Load Pipeline Locally 318 Reset 301 Restore Pipeline from Server 318 Restore Pipeline Locally 318 Save Pipeline from Server 318 Save Pipeline Locally 316 Save Pipeline to Server 316 Set Breakpoint 307 Step 300, 304, 305 Step Into 300, 304, 305 Step Out 304, 305 Trace 300, 302 Trace Into 300, 302, 303 Trace to Here 300, 302, 303 comments for jcode 337 Comments property, definition 172, 412 compiling C/C++ services 344 error in Java compiler location 333 Java services 333, 338 services with Developer 333 services with jcode 338, 340 specifying the Java compiler 333 complex type definition all content model 243 anonymous 243 choice content model 243 described 243 empty content 243 expanding as inline IS document type 254 generating as separate IS document types 254 mixed content 243 recursive structures 254 sequence content model 243 composite mode (jcode) 339 conditional expressions addressing variables 449 addressing variables with special characters 450 lexical operators 445 logical operators 447 operator precedence 448 standard relational operators 443 syntax 439 using with pipeline links 219 using with the BRANCH step 179
503
Index
conditional links creating 221 described 219 disabling 312 conditions applying to links 219 disabling on links 312 connecting to webMethods Integration Server 23, 39 constraining facets applying 277 described 273, 473 for pipeline validation 462 constraints content 240, 463 definition of 273 for IS schemas 240 for XML validation 240 structural 240 viewing for variables 277 content constraints applying to variables 273 constraining facets 273, 473 editing for simple types 248 for String variables, definition of 463 for validation 463 for variables, definition of 273 for XML validation 240 in IS schemas 240 in IS schemas, definition of 240 content models all 243 choice 243 empty 243 mixed 243 sequence 243 content types applying to variables 274 constraint symbol 277 customizing 276 specifiying constraining facet values 277 context-sensitive menus 36 Control steps BRANCH 128, 176 EXIT 128, 198 LOOP 128, 194 REPEAT 128, 186 SEQUENCE 128, 192
converting string lists to document (IData object) lists 215 copying by reference, definition of 211 by value, definition of 211 elements from the Results panel 295 IS elements 51 pipeline values 224 set values 224 transformers 234 creating code for Java services 333 event filters 383 event filters for services 385 event handler sample 388 event handlers 387 flow services 130, 131 folders 131, 341 IS elements 45 IS schemas 245 Java services with an IDE 337 Java services with C/C++ 341 Java services with Developer 329, 332 Java services with Visual Basic 345 Java services with your own IDE 335 links to array variables 433 links to document (IData object) variables 213 packages 76 specifications for C/C++ services 341 version numbers for packages 83 cursors 327 customizing content types 276
D
dagger symbol, next to variable icon 277 data transformations, definition of 202 data types icons to represent 133 linking with Pipeline tab 214 supported by webMethods Integration Server 430 tables 433 data validation allowing undeclared variables 274 applying constraints 273 benefits of 272 blueprints for 272 closed variables 274 content constraints 273
504
Index
definition of 272 document (IData object) validation 281 errors 478 exceptions 284, 492 input/output validation definition of 278 performing via Input/Output tab 279 performing via INVOKE step properties 280 open variables 274 pipeline validation 281 requiring variable existence 274 structural constraints 273 types of 272 XML validation 282 date content constraint 464 date conversion services 229 dateTime content constraint 464 DCOM objects invoking as services 345 using with webMethods Integration Server 345 debug level, setting on server 321 debugging flow services breakpoints 307 combining trace and step 301 disabling a single flow step 310 disabling a transformer 311 disabling conditions on links 312 dumping the pipeline to serveryyyymmdd.log 323 enabling a single flow step 310 enabling a transformer 311 modifying the pipeline 313 overview 288, 299 resetting debug mode 301 stepping into a child flow 305 stepping into a transformer 306 stepping through a flow 300, 304 tracing a flow 300, 302 tracing into a child flow 303 using server debug facility 320, 321 debugLog service 322 decimal content constraint 464 declaring input and output parameters 133 input for a service 133 output for a service 135 default value, assigning to a pipeline variable 222 defining packages 76
deleting breakpoints on transformers 308 event subscriptions 387 IS elements 58 links between variables 219 packages 82 dependencies, package identifying 86 removing 87 dependents checking when renaming IS elements 47 confirming before deleting elements 47 finding service and document (IData object) 64 safeguards for updating 48 details perspective 38 Developer window, toolbar 30 Developer. See webMethods Developer dimensionality, definition of 233 directories Java services 335 Disable Step command 310, 311 disabling a condition placed on a link 312 a flow step 310 a transformer 311 dispatch services for COM 345 for DCOM 345 document (IData object) validation definition of 281 errors 478 exceptions 492 performing 281 document data type 430 document list data type converting from String list 215 definition of 430 document reference data type creating 264 definition of 430 document reference list data type creating 264 definition of 430 Document Type Definitions. See DTDs document types. See IS document types documentation accessing for packages 81 creating for packages 80 using effectively 17
505
Index
documents (IData objects) applying content constraints 462 assigning to a document or document list 250, 265 assigning to a specification 250 benefits of 250 creating 250 errors when creating from DTD or XML Schema 497 finding dependents 47 linking 213 open and closed 274 pipeline validation 282 printing 263 using as service parameters 250, 264 viewing in browser 263 double content constraint 465 DROP modifier 206, 225 dropping values from the pipeline 225 DTDs creating documents (IData objects) from 250 creating IS document types from 252 creating IS schemas from 245 IS schema generation warnings 497 duration content constraint 465
E
edit perspective 38 editing elements. See editor event subscriptions 386 flow services 126 properties 34 Service property 173 simple types in IS schema 248 editor described 31 help about 42 hiding and showing 37 inserting flow steps into 169 resizing 37 supported data types 133 tabs 31 viewing and editing elements in 32 element declaration 242 element lock copying, moving, and deleting 104 removing. See unlocking elements system lock 98 user lock 98
element reference 242 elements (IS) See also editor 47 assigning ACLs 117 caching to improve Developer performance 70 copying 51 creating 45 cutting 51 definition of 44 deleting 58 displayed in editor 31 displayed in Navigation panel 26 displayed in Recent Elements tab 31 displayed in UDDI Registry tab 29 double-clicking to open 49 editing 47 exporting 82 finding dependents 47 finding in Navigation panel 60 finding unresolved references 66 fully-qualified names 45 guidelines copying 51 creating 45 deleting 58 general actions 48 moving 51 opening and closing 49 renaming 55 help for properties 42 locating in Navigation panel 33 locking 47 moving 51 naming guidelines 46 overwriting when creating publishable document types 259 pasting 51 performing actions 48 performing actions on 36 permissions 114 references 65 renaming 55 saving 57 single-clicking does not open 49 unlocking 47 viewing as HTML 47 emailing XML to a service 374
506
Index
empty content 243 strings in filters 445 values, branching on 180 Enable service audtiting options, described 158 Enable Step command 310, 311 enabling flow steps 310 service auditing 158 transformers 311 end-to-end linking 228 entering input for a service 290 ENTITIES content constraint 465 ENTITY content constraint 465 enumeration constraining facet 473 envelope field in publishable document types 261 usage restrictions 261 error auditing, described 162 error handling, in flow services 192 errors data validation 478 document (IData object) generation 497 flow service generation 497 IS schema generation 497 pipeline validation 478 Evaluate labels property 184 event filters creating 383 creating for services 385 event handlers creating 387 creating sample 388 definition of 380 stages of creating 387 Event Manager alarm events definition of 378, 391 uses 391 audit events definition of 378, 392 definition of 378 event behavior 380 event handlers 380 Event Manager command 381 exception events 378, 392 filters 383 GD End events 392 uses 392
GD Start events 392 uses 392 guaranteed delivery events 378 JMS Retrieval Failure Events 394 JMS retrieval failure events 378, 384 pattern strings 383 port status events 379, 395 uses 395 replication events 379, 395 uses 395 run-time behavior 380 security events 379, 395 session end events 396 session events 379, 396 uses 396 session expire events 396 session start events 396 stat events 379, 397 uses 397 subscriptions creating 381 creating filters for 383 deleting 387 editing 386 managing 381 suspending 386 viewing 386 transaction events 379, 397 Tx End events 397 uses 397 Tx Start events 397 uses 397 viewing subscriptions 386 Event manager JMS delivery failure events 378, 384 events See also event handlers, Event Manager creating filters 383 creating filters for services 385 deleting subscriptions to 387 editing subscriptions to 386 guaranteed delivery 392 subscribing to 381 suspending subscriptions to 386 types of 378 viewing subscriptions to 386 Excel clients, creating 358 exception events definition of 378, 392
507
Index
exceptions data validation 284, 492 during a test 295 executing services from Developer 289 execution locale 145 Exit on property 192 EXIT step creating 198 definition of 128, 410 using in a flow 198 expanding complex types inline 254 expanding transformers 235 explicit linking, definition of 208 explicit universal names 155 exporting elements and packages 82 expressions addressing variables 449 addressing variables with special characters 450 branching on 179 operator precedence 448 operators for 442 syntax for 439 using for pipeline linking 219 extending the Java class 331 extends (Java keyword) 331
F
facets, See constraining facets failIfInvalid property 492 failure of a flow step 192 of a REPEAT step 187 fields content type constraint symbol 277 dagger symbol 277 green squares 277 optional symbol 277 filter collation locale 445 filtering events 383 filters addressing variables 449 addressing variables with special characters 451 allowed quantifiers 453 back references 453 booleans in 453 braces {} in 453 checking for variable existence 453
collation locale, specifying 445 comparing strings and numeric values 453 comparison operators, missing 453 constrained Objects in 453 effect of locale 445 extended metacharacters 453 lexical relational operators 445 logical operators 447 $null 453 operators for 442 server performance 443 standard relational operators 443 syntax 439 syntax restrictions 452 variables with special characters 450 finding elements in Navigation panel 60 invoked services 63 service and document (IData object) dependents 64 unresolved pipeline references 67 unresolved references 66 float content constraint 465 flow services See also services, debugging flow services breakpoints 307 caching to improve Developer performance 70 creating 131 debugging 299 definition of 126 disabling a single step 310 disabling a transformer 311 disabling conditions placed links 312 editing 126 enabling a single step 310 enabling a transformer 311 errors creating from DTD or XML Schema 497 inserting steps in a service 169 maximum retry period 152 printing 166 response to failure 192 retrying 151, 152 stages of creating 130 stepping in/out of child flows 305 stepping in/out of transformers 306 stepping through 304 tracing 302 viewing in browser 166
508
Index
flow steps BRANCH 128, 176 changing the level of 170 changing the position of 170 definition of 127 disabling 310 enabling 310 EXIT 128, 198 failure of 192 grouping 192 hierarchical order of 171 inserting into a flow service 169 INVOKE 127, 173 LOOP 128, 194 MAP 127, 200 moving in a flow service 170, 171 parent/child relationships 171 properties 172 re-enabling 310 REPEAT 128, 186 SEQUENCE 128, 192 setting breakpoints on 307 folders, creating 131 frag mode (jcode) 339 FTPing XML to a service 371
G
GD End events definition of 392 pub.remote.gd:end 392 uses of 392 when generated 393 GD Start events definition of 392 pub.remote.gd:start 392 uses of 392 when generated 393 gDay content constraint 466 Generate Code command 352, 354, 356 generating complex types as document types 254 global declarations, in XML Schemas and DTDS 242 gMonth content constraint 466 gMonthDay content constraint 466 Go To Breakpoint command 309 Go To command (for services) 63 gray links, in the Pipeline tab 207
green square, next to variable icon 277 grouping flow steps 192 guaranteed delivery events See also GD End events, GD Start events compared to transaction events 393 definition of 378, 392 generating guaranteed delivery (GD) events 393 generating transaction (Tx) events 393 overview 393 when generated 393 guidelines for assigning startup, shutdown, and replication services 89 for creating IS document types 252 for elements creating 45 deleting 58 moving and copying 51 opening and closing 49 renaming 55 working with 48 for linking array variables 218 for linking document (IData object) variables 213 for linking variables 209 for linking variables of different data types 214 for naming packages 76 gYear content constraint 467 gYearMonth content constraint 467
H
hailmary mode (jcode) 340 hard-coding input variables 221 help, obtaining 42 hexBinary content constraint 467 hiding and showing panels 37 HTML, viewing elements in 47
I
ID content constraint 467 IData objects creating 327 definition of 326 getting data from 327 positioning cursors 327 putting data in 327 using in a Java service 336
509
Index
IDE assigning a super class with 331 creating source code in 329 defining private methods with 331 implementing interfaces with 331 importing Java packages 331 in Developer 328, 329 using other IDEs 335 using the Java service editor 329 using the Shared tab 331 identifying package dependencies 86 replication services 90 shutdown services 90 startup services 90 IDREF content constraint 468 IDREFS content constraint 468 implementing interface in Java services 331 implements (Java keyword) 331 implicit linking described 207 for MAP steps 228 implicit universal names 155 import (Java keyword) 331, 336 import mechanism, in XML Schemas 247 importing Java packages 331, 336 include mechamism, in XML Schemas 247 index, array variables 217 Indexing tab. See linking array variables Input array property 195 input variables declaring for a service 133 declaring in a document (IData object) 250 entering test values for 290 hard-coding 221 linking considerations 209 linking in the pipeline 208 loading values from a file 292 saving values to a file 292 input/output parameters declaring for a service 133 generating Java code from 333 Input/Output tab 135 input/output validation definition of 278 performing via Input/Output tab 279 performing via INVOKE step 280
inserting INVOKE step 174 steps into flow services 169 transformers 229 installing Java services 335 int content constraint 468 integer content constraint 468 Integrated Development Environment. See IDE Integration Server Administrator, unlocking elements 106 Integration Server. See webMethods Integration Server interfaces implementing in Java service 331 INVOKE step Comments property 412 creating 174 definition of 127, 412 finding 63 invoking built-in services 174 invoking services on another server 174 Label property 412 peforming validation via step properties 280 Pipeline tab 203 Scope property 412 Service property 173, 412 Timeout property 412 using in a flow 173 Validate input property 412 Validate output property 412 invoking built-in services 174 remote services 174 services 174 services from a browser 361, 362 services on another server 174 IS document types See also documents (IData objects) creating empty document types 251 creating from Broker document type 259 creating from DTD 252 creating from XML document 252 creating from XML Schema 252 described 250 editing 263 expanding complex types inline 254 generating complex types as document types 254 guidelines for creating 252
510
Index
IS elements. See elements (IS) IS schemas appearance 240 constraints 240 content constraints 240 creating 245 definition of 240 editing simple types 248 errors from generating 497 generating multiple 247 import element 247 include element 247 structural constraints 240 using to validate an XML document 282 warnings from generating 497 ISRuntimeExceptions description of 151 throwing in services 400
jcode utility composite mode 339 frag mode 339 hailmary mode 340 make mode 338 purpose of 336 source code samples 456 source code tags 337 update mode 340 JMS delivery failure event 378, 384 JMS retrieval failure events 378, 384 JMS trigger definition of 27
K
keyboard shortcuts 36
L
L_EQUALS 446 L_GREATER_OR_EQUAL 446 L_GREATER_THAN 446 L_LESS_OR_EQUAL 446 L_LESS_THAN 446 L_NOT_EQUALS 446 Label property definition 412 for evaluating expressions 179 for general use 172 for specifying the default BRANCH step 181 for targeting BRANCH steps 177 language content constraint 468 length constraining facet 473 lexical relational operators conditional expressions 445 definition of 445 empty string 445 locale 445 non-string variables 445 libs directory 341, 344 link indices 217 linking array variables 216 default rules 433 guidelines for 218 to array variables 433 to scalar variables 433 to transformers 232 between document formats 228
J
Java classes for object and object list variables 431 Java clients, creating 350, 352 Java keywords extends 331 implements 331 import 331, 336 Java service editor 329 Java services adding private methods to 331 compiler location 333 compiling with Developer 333 compiling with jcode 338 creating 332, 333 creating with an IDE 335, 337 creating with Developer 329 extending the class of 331 implementing interface in 331 importing packages into 331, 336 installing manually 335 jcode requirements 337 location of class files 335 location of source files 336 publishing to the server 335 required code 336 setting run-time options 335 stages of development 329 structure of 328 using with webMethods components 328 validating from 283
511
Index
conditional links 219 considerations 209 copying by reference 211 copying by value 211 default behavior for arrays 218 deleting links between variables 219 different data types 214 disabling conditions on links 312 document (IData object) variables 213 in a single view 228 input variables 208 output variables 209 pipeline variables to service variables 207 scalar variables to array variables 433 the pipeline 210 transformers 231 variables conditionally 219 variables explicitly 208 variables implicitly 207 links blue colored 217 deleting 219 disabling conditions 312 executing at run time 211 gray colored 207 in Pipeline tab 207 Load Pipeline Locally command 318 loading input values from a file 292 pipeline values from a file into Results panel 318 with restorePipelineFromFile service 319 locating a breakpoint 309 locking elements corresponding server files 108 description 98 Java and C/C++ 101 single element 101 system locking 102 template service 102 unlocking. See unlocking elements VCS check in/check out 98 viewing lock status 99, 103 log files, audit log 158 logging on to webMethods Integration Server 23, 39 logical operators, definition of 442 long content constraint 469
LOOP step creating 196 creating nested loops 194 definition of 128, 413 setting Input array 195 setting Output array 196 using in a flow 194
M
make file creating 341 using to compile C/C++ services 344 make mode (jcode) 338 MAP modifier definition of 206 executing at run time 211 linking different data types 214 linking from service output 209 linking to service input 208 MAP step debugging 306 definition of 127, 414 disabling transformers 311 enabling transformers 311 inserting transformers 229 Pipeline tab 205 transformers 228 using in a flow 200 using to initialize variables in a flow 200, 222 mapping. See linking Max attempts property 153 maxExclusive constraining facet 473 maximum retry period, definition of 152 maximum retry period, description of 152 maxInclusive constraining facet 473 maxLength constraining facet 473 maxOccurs threshold value, for validation 285 memory reducing usage 70 running out of during validation 285 menu bar, using to perform actions 36 metacharacters, in filters 453 methods, adding to a Java service 331 minExclusive constraining facet 474 minInclusive constraining facet 474 minLength constraining facet 474 mixed content 243 modifying the pipeline 206 moving IS elements 51 steps in a flow service 170 steps within a flow 171
512
Index
N
Name content constraint 469 name transformations, definition of 202 namespace information (for services) creating source file from 339, 340 location of 335 updating with jcode 339 namespaces usage in universal names 154 XML namespace property 266 naming services 45 Navigation panel described 26 help about 42 hiding and showing 37 icons 26, 99 refreshing contents of 29 resizing 37 toolbar 30 NCName content constraint 469 negativeInteger content constraint 469 NMTOKEN content constraint 469 NMTOKENS content constraint 469 nonNegativeInteger content constraint 470 nonPositiveInteger content constraint 470 not operator 447 notification, of server shutdown 40 ns directory 335 $null in filters 453 in labels for BRANCH steps 180 null, branching on 180
operators conditional expressions and filters 442 lexical relational operators 445 logical 447 precedence in expressions 448 relational 442 standard relational operators 443 optional variables for validation 274 or operator 447 out of sync publishable document types 263 Output array property 196 output templates assigning to a service 138 definition of 138 output variables declaring 135 declaring for a service 133 declaring in a document (IData object) 250 linking considerations 209 linking in the pipeline 209 Overwrite Pipeline Value option 222
P
packages adding 76 assigning version numbers 83 copying 79 creating 76 creating circular dependencies 87 cutting 79 definition of 74 deleting 82 dependencies, using with startup services 88 documenting 80 exporting 82 identifying dependencies 86 importing into Java services 331, 336 moving 79 naming guidelines 76 pasting 79 reloading 81 reloading vs refreshing 81 removing dependencies 87 required by Java services 336 viewing details 77 viewing patch history 84
O
Object data type definition of 431 in filters 453 Object list data type, definition of 431 object list variables, Java classes 431 object variables, Java classes 431 online help, obtaining 42 open and closed documents 274 open documents, described 274 opening a session on webMethods Integration Server 39 operations, performing on IS elements 36
513
Index
panels editor 31 Navigation 26 Properties 33 Recent Elements 31 Results 35 switching perspectives 38 UDDI Registry 29 parameters applying constraints 273 benefits of declaring 133 declaring 133, 136 declaring for a service 133, 135 parent/child relationships in a flow 171 passing XML to a service 366 passwords changing 41 requirements 41 patch history removal by Integration Server 85 viewing for a package 84 pattern constraining facet 474 pattern matching, in event subscriptions 383 Perform Variable Substitution option 223 Performance 161 performance impact, service auditing 161 permission See also ACLs assigning to elements 114 Permissions property 118 perspectives of views 38 pipeline adding variables to 226 addressing variables 449 adjusting 206 assigning values to 221 changing values 313 checking for variables 442 conditional linking 219 copying values 224 definition of 128 DROP modifier 225 dropping values 313 dropping variables from 225 inspecting modifiers 67 linking 210 array variables 216 default rules 433 guidelines for 218 input variables 208
output variables 209 scalar variables, default rules 433 transformers 231 variables of different data types 214 MAP step 200 modifying 313 Overwrite Pipeline Value option 222 Perform Variable Substitution option 223 Pipeline In 203 Pipeline Out 204 saving 315 saving from Results panel 316 saving with savePipelineToFile service 317 Service In 203 Service Out 204 SET VALUE modifier 221 stages of 203 validating 282 validating via built-in services 282 validating via Java service 283 viewing after run-time exception 297 viewing with Developer 293 Pipeline Editor. See Pipeline tab Pipeline In 203, 205 pipeline modifiers definition of 206 DROP 206 MAP 206 SET VALUE 206 Pipeline Out 204, 205 pipeline references definition of 67 finding 67 Pipeline tab 202 blue links (conditional link) 217 copying by reference 211 copying by value 211 default behavior for arrays 218 default linking rules 433 deleting links between variables 219 editing a MAP step 205 editing INVOKE step 203 gray links (implicit link) 207 inserting transformers 229 linking array variables 216 default rules 433 guidelines for 218
514
Index
document (IData object) variables 213 scalar variables, default rules 433 transformers 231 variables 207 overview 202 printing 206 transformer movement 232 viewing in browser 206 pipeline validation definition of 281 errors 478 exceptions 492 performing via built-in services 282 performing via Java service 283 port status events definition of 379, 395 uses of 395 positiveInteger content constraint 470 posting XML to a service 369 precision constraining facet 474 prefetch 144 preserve white space 474 printing documents (IData objects) 263 flow services 166 Pipeline tab contents 206 private methods, defining in Java service 331 programming languages creating services with 326 supported 326 properties Audit level 165 auditLog server 165 Comments 172, 412 definition of 172 editing 34 Evaluate labels 184 Exit on 192 for transformers 230 Input array 195 Label 172, 412 Label (for BRANCH steps) 177, 181 Output array 196 Permissions 118 Repeat on 186, 187, 188, 417 Scope 184, 412 Service 173, 175, 230, 412 setting for variables 265
Substitution groups 256 Switch 177, 184 Timeout 175, 184, 188, 189, 196, 412 Validate input 175, 230, 412 Validate output 175, 230, 412 XML Namespace 266 Properties panel auditing a service 157 described 33 flow step properties 172 help about 42 hiding and showing 37 patch history for packages 84 resizing 37 run-time parameters 141 pub.flow:getRetryCount service 153 pub.flow:throwExceptionForRetry service 153 invoking 403 pub.publish:envelope document type 261 pub.remote:invoke service 174 pub.remote.gd:end service 392 pub.remote.gd:start service 392 pub.schema:validate service 281 pub.schema:validatePipeline service 282 publishable document types adapter notifications 262 creating from Broker document type 259 defined 259 editing 263 envelope field 261 overwriting elements 259 synchronizing 263 publishing services to the server 335
R
Recent Elements tab described 29, 31 help about 42 hiding and showing 37 resizing 37 Record data type. See document data type Record list data type. See document list data type Record Reference data type. See document reference data type Record Reference List data type. See document reference list data type records. See document (IData object), IS document types
515
Index
recursive complex types in XML Schemas 256 redefine mechanism, in XML Schemas 247 re-enabling flow steps 310 transformers 311 referenced elements, importing during synchronization 260 references finding 65 inspecting pipeline 67 refresh difference from restoring a session 40 Navigation panel contents 29 Recent Elements tab contents 31 regular expressions creating event filters with 385 definition of 422 operators 422 using as a BRANCH label 177 using in a mask 422 reinvoking services 162 relational operators definition of 442 lexical 445 standard 443 types of 442 reloading packages 81 remote servers, invoking services on 174 remote services, invoking 174 removing breakpoints 309 breakpoints from transformers 308 package dependencies 87 packages 82 replication services 91 shutdown services 91 startup services 91 variables from the pipeline 225 renaming IS elements 55 transformers 236 Repeat on property 186, 187, 188, 417 REPEAT step creating (on failure) 188 creating (on success) 190 definition of 128, 415 failure 187 specifying the repeat condition 186, 187, 417
using in a flow 186 using to retry a failed step 188 using to retry a successful step 190 replace white space 474 replication events definition of 379, 395 uses of 395 replication services assigning 90 definition of 89 guidelines for assigning 89 removing 91 when to use 89 requirements for passwords 41 requiring variable existence for validation 274 Reset command 301 resizing panels 37 window areas 37 Restore Pipeline from Server command 318 Restore Pipeline Locally command 318 restorePipelineFromFile service 315, 318 restoring pipeline values from a file into Results panel 318 with restorePipelineFromFile service 319 sessions 40 Results panel copying elements from 295 described 35 general information 294 help about 42 hiding and showing 37 resizing 37 saving results from 315 retried audit log status 151 Retry interval property 153 Retry on ISRuntimeException category 153 retry period, maximum 152 retry, for service 151 retrying a flow step 186 Run command 289 Run in Browser command 298 running out of memory, during validation 285 running services from Developer 289 run-time exceptions 295 run-time settings 335
516
Index
S
Save Pipeline Locally command 316 Save Pipeline to Server command 316 savePipelineToFile service 317 saving changes to elements 57 elements (IS) 57 input values to a file 292 test results using savePipelineToFile service 317 test results, overview 315 scalar variables default behavior for linking 433 definition of 433 linking to or from array variables 433 scale constraining facet 473 schema browser, definition of 241 schema details area, definition of 244 schema domains 245 schema editor 240 schema processor, definition of 245 schema services for document (IData object) validation 281 for pipeline validation 282 for XML validation 282 Scope property, definition 412 Send XML File command 299 sending XML documents to a service 366 via email 374 via FTP 371 via HTTP 369 sequence content model 243 SEQUENCE step as target for a BRANCH 182 definition of 128, 418 setting exit condition 192 using in a flow 192 server files, viewing for locked elements 108 server. See webMethods Integration Server serveryyyymmdd.log file 321 contents of 321 dumping pipeline to 323 overview 320 service auditing configuring 157 described 157 enabling 158 error auditing 162
failed and successful services 163 including pipeline 160 overwriting individual service settings 165 performance impact 159, 161 specifying which states to log 158 use cases 162 Service In 203 service log configuring 157 described 158 Service Out 204 Service property definition 412 definition of 173 editing 173 for transformers 230 renaming transformers with 236 service retry adapter services 401 audit log 151 basic componenents 401 configuring 151 example 404 overview 400 requirements 152, 400 restrictions 152 throwing exceptions for 400 services assigning universal names 154 audit data enabling 158 when generated 158 auditing configuring 157 enabling 158 for recovery 163 long-running services 164 options 164 caching to improve Developer performance 70 configuring retry 151 creating event filters for 385 creating flow 131 creating with Visual Basic 345 execution locale 145 finding dependents 47 finding invoked 63 input signature for trigger services 134 invoking built-in 174
517
Index
invoking on another server 174 invoking on remote servers 174 locale policy 145 naming 45 provided by webMethods Integration Server 174 reinvoking 162 retry exceptions 400 retryiing 152 retrying adapter services 401 stages of creating 130 state information 141 testing and debugging 288 throwing retry exceptions 400 transformers 227 validating input/output via Input/Output tab 279 validating input/output via INVOKE step 280 session closing on webMethods Integration Server 39 opening on webMethods Integration Server 39 restoring 40 session end events definition of 396 session events See also session end events, session expire events, session start events definition of 379, 396 uses of 396 session expire events definition of 396 session start events definition of 396 Set Breakpoint command 307 SET VALUE modifier 206, 221 copying 224 using in MAP step 222 setting breakpoints on flow steps 307 breakpoints on transformers 308 variable values 221 Settings tab. See Properties panel Shared tab 331 short content constraint 470 shortcuts, for toolbars 30 showing and hiding panels 37 shutdown services assigning 90 definition of 89 guidelines for assigning 89 removing 91 when to use 89
signature for trigger services 134 of a service 326 simple types 243 editing in IS schema 248 single view linking 228 smtp, using to submit XML documents 374 source code compiling with C/C++ make file 344 compiling with jcode 338, 340 creating automatically for a Java service 333 creating from namespace information 339 creating in your own Java IDE 336 creating Java 334 location of 336 tagging for jcode 337 writing in C/C++ 343 writing in Developer 329 source control system, integration with 98 Source field on Shared tab 331 Source tab. See Java service editor special characters in variable names 450 typing in expressions 451 specifications assigning to a service 269 benefits of 267 creating 267 definition of 267 finding dependents 47 squares, green 277 stack overflow, during validation 285 standard relational operators definition of 443 using in filters 443 using in triggers 443 starting Developer 23 startup services assigning 90 definition of 88 effect on package dependencies 88, 91 guidelines for assigning 89 removing 91 when to use 88 stat events definition of 379, 397 uses of 397 state information for a service 141
518
Index
status events. See port status events Step command 300, 304, 305 Step Into command 300, 304, 305 Step Out command 304, 305 stepping through a flow 300, 304 string content constraint 471 String data type, definition of 430 String list data type converting to document list 215 definition of 430 String table data type 430 strings copying by reference 211 transformation services 229 structural constraints definition of 240, 273 for validation 273 for XML validation 240 IS schemas 240 structural transformations definition of 202 examples 215 linking to resolve 214 subordinate flow steps. See child flows subscribing to events, overview 381 Substitution group property 256 substitution groups 256 super class, defining in IDE 331 suspending event subscriptions 386 Switch property 177, 184 switch value, branching on 176 symbol for content type constraints 277 for optional variables 277 syntax for conditional expressions and filters 439 system locking defined 98 elements 102
T
tables, support of 433 tabs Input/Output tab 135 Pipeline tab 202 Schema tab. See schema editor 240 selecting 31 Settings tab for services. See also Properties panel 335 Shared tab 331
tagging source code for jcode 337 templates assigning to a service 138 definition of 138 test perspective 38 test results changing pipeline values 313 copying 295 loading 315 saving 315 viewing 293 testing services entering test input 290 from a browser 298 from Developer 289 inspecting the pipeline 293 loading input values from a file 292 loading the pipeline 315 overview 288 run-time exceptions 295 saving input to a file 292 saving the pipeline 315 setting breakpoints 307 testing in debug mode 299 viewing results 293 viewing the call stack 296 viewing the pipeline 297 XML document as input 299 threshold value, for maxOccurs 285 throw exception for retry 401 time content constraint 471 time conversion services 229 timeDuration content constraint 465 Timeout property 175 definition 412 for BRANCH step 184 for LOOPstep 196 for REPEAT step 188, 189 token content constraint 471 toolbar, Developer window 30 toolbar, using to perform actions 36 totalDigits constraining facet 474 Trace command 300, 302 Trace Into command 300, 302, 303, 304 and breakpoints 307 effect on breakpoints 307 Trace to Here command 300, 302, 303 tracePipeline service 323
519
Index
tracing a flow 300, 302 into a child flow 303 transaction events See also Tx End events, Tx Start events compared to guaranteed delivery events 393 definition of 379, 397 uses of 397 when generated 393 Transformer not found message 236 transformers adding 229 array variables 232 clearing breakpoints 308 collapsing 235 considerations 229 copying 234 debugging 306 definition of 227 dimensionality mismatch 232 disabling 311 enabling 311 expanding 235 inserting 229 linking 231 linking array variables 232 movement in Pipeline tab 232 output variables 231 properties 230 re-enabling 311 renaming 236 Service property 230 services provided by webMethods 229 setting breakpoints 308 stepping in/out of child flows 306 Validate input property 230 Validate output property 230 validating input and output 234 zooming in on 235 transient error, definition of 151, 400 trigger services, input signature requirements 134 triggers disabled when copied 52 filter syntax restrictions 452 filters and relational operators 445 lexical operators 442 testing 288 used with adapter notifications 262 using standard relational operators 443
try sequence, in service retry 401 Tx End events definition of 397 uses of 397 when generated 393 Tx Start events definition of 397 uses of 397 when generated 393 type definitions anonymous 243 complex types 243 simple types 243
U
Unicode, and Java source code 339 universal names assigning to services 154 implicit vs explicit 155 local portion of name 154 namespace portion of name 154 removing from a service 156 unlocking elements more than one 104 system locked 107 using Integration Server Administrator 106 using webMethods Developer 105 unresolved references, finding 66 unsignedByte content constraint 471 unsignedInt content constraint 472 unsignedLong content constraint 472 unSignedShort content constraint 472 update mode (jcode) 340 URL, invoking services from 361, 362 user account on webMethods Integration Server 22
V
Validate input property 175, 230 definition 412 Validate output property 175, 230 definition 412 validatePipeline service 282 validating See also validation documents (IData objects) 281 from Java services 283 input/output for transformers 234 input/output via Input/Output tab 279
520
Index
input/output via INVOKE step 280 pipeline via built-in services 282 pipeline, overview 281 service input/output 278, 279, 280 XML documents 282 validation See also validating allowing undeclared variables 274 applying constraints 273 benefits of 272 blueprints for 272 constraining facets 473 constraints, definition of 273 content constraints 463 definition of 272 errors 284, 478 exceptions 284, 492 input/output 278 overview 272 requiring variable existence 274 running out of memory 285 service input and output 278 stack overflow 285 types of 272 XML validation 282 validation errors and error codes 478 validation services pub.schema:validate 281, 282 pub.schema:validatePipeline 282 value transformations, definition of 202 variables adding to the pipeline 226 addressing in the pipeline 449 applying constraints 273 applying content constraints 462 applying content types 274 checking for existence 442 content type constraint symbol 277 copying by reference 211 copying by value 211 copying values in pipeline 224 declaring for a service 133, 135 declaring in a document (IData object) 250 deleting links 219 initializing values 222 linked by blue line 217 linking 207 linking conditionally 219
optional existence for validation 274 optional symbol 277 requiring existence for validation 274 setting properties 265 substitutions 223 using as Set Value 223 viewing applied constraints 277 XML Namespace property 266 VCS Integration feature, described 98 version control system (VCS), integration with 98 version numbers, assigning to packages 83 View as HTML command 166, 206, 263 view perspectives 38 viewing assigned value of a variable 222 breakpoints list 309 elements in HTML 47 status of a locked element 99, 103 test results 293 variable constraints 277 Visual Basic clients, creating 355 Visual Basic services creating 345
W
warnings document (IData object) generation 497 flow service generation 497 IS schema generation 497 watt.server.auditLog property, described 165 watt.server.invoke.maxRetryPeriod 152 watt.server.stats.pollTime property 395 webMethods Developer main window 25 online help 42 starting 23 toolbar 30 webMethods Integration Server access requirements for 22 closing a session 39 connecting to 23, 39 disconnecting from 39 logging on to 23 notification of shutdown 40 opening a session 39 performing ACL checking 115 supported data types 430 webMethods Monitor 157, 162
521
Index
webMethods Type Library 351, 355, 358 When to include input pipeline options, described 160 When to log options, described 158 whiteSpace constraining facet 474 win32.COM.dispatch:createObject 346 windows layout 25 zooming 37 WmPublic package, definition of 174
X
XML documents and $xmldata 367 converting to IData objects 366 creating documents (IData objects) from 250 creating IS document types from 252 creating IS schemas from 245 passing to a service 366 posting via HTTP 369 testing services with 299 XML Namespace property, described 266 XML Schema definitions creating documents (IData objects) from 250 creating IS document types from 252 creating IS schemas from 245 import mechanism 247 include mechanism 247 IS schema generation warnings 497 recursive complex types 256 redefine mechanism 247 referenced by other XML Schemas 247 XML validation content constraints 240 creating IS schemas 245 definition of 282 errors 478 exceptions 492 IS schemas, overview 240 performing 282 structural constraints 240
Z
zooming in a window 37 in on transformers 235
522