7 1 1 WebMethods Developer Users Guide
7 1 1 WebMethods Developer Users Guide
7 1 1 WebMethods Developer Users Guide
webMethods Developer
Users Guide
Version 7.1.1
January 2008
webMethods
Copyright
& Docu
mentID
Table of Contents
About This Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Document Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Additional Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
15
16
17
18
18
19
21
22
22
25
25
26
27
27
29
31
31
31
32
33
33
33
34
35
36
36
37
37
38
39
40
41
41
42
42
43
43
44
Table of Contents
45
47
47
47
48
49
51
53
53
55
55
58
59
60
60
61
63
66
66
69
70
70
72
72
73
73
74
76
77
77
78
78
79
81
83
83
83
84
84
85
85
86
Table of Contents
87
88
88
89
89
89
90
90
91
92
92
92
94
94
94
95
97
98
98
99
99
100
100
101
101
103
104
104
104
106
106
106
107
109
109
109
111
111
111
112
112
Table of Contents
115
116
116
117
118
119
120
120
120
121
121
122
123
123
124
125
127
129
130
131
131
131
131
132
132
133
134
135
136
136
137
140
141
142
143
144
146
146
146
147
147
148
149
149
Table of Contents
151
152
152
154
154
156
157
157
158
158
158
160
160
161
161
163
164
165
166
168
170
170
171
171
171
174
176
176
178
179
179
180
181
183
185
186
186
187
189
190
190
191
192
196
Table of Contents
198
199
200
200
201
203
204
204
205
206
207
207
208
208
209
210
211
212
212
214
214
215
217
217
217
218
218
218
219
220
221
222
223
224
224
225
228
229
230
231
233
233
234
235
Table of Contents
253
254
254
255
257
257
259
259
261
262
263
263
264
265
266
266
267
269
270
270
271
272
274
274
275
277
277
Table of Contents
10
278
279
279
280
281
282
283
283
284
285
286
287
288
288
289
290
291
291
291
293
294
295
296
296
297
298
298
299
299
300
300
301
301
302
302
304
307
308
308
308
309
309
310
310
Table of Contents
311
311
311
313
314
315
317
317
317
318
319
319
319
320
321
321
321
322
322
323
324
324
326
327
328
328
328
329
331
332
332
332
333
334
334
335
335
335
336
336
337
337
337
337
11
Table of Contents
12
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
337
338
338
338
339
339
339
339
340
340
341
341
341
341
342
342
343
343
345
347
348
350
350
350
351
352
355
355
356
356
357
357
359
360
360
361
362
363
364
364
365
366
366
367
Table of Contents
367
368
368
369
369
370
370
370
372
372
373
375
376
376
376
377
377
380
383
384
384
384
385
386
386
387
387
388
388
388
389
389
390
390
391
391
391
392
393
393
394
394
395
13
Table of Contents
B. Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
What Is a Regular Expression? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using a Regular Expression in a Mask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Regular Expression Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
397
398
398
398
405
406
407
409
409
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
413
414
415
417
418
418
418
419
421
423
424
425
426
427
428
E. jcode tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jcode Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
jcode Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sample CodeIData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
431
432
432
432
437
438
438
448
451
452
452
465
470
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
14
Document Conventions
Convention
Description
Bold
Identifieselementsonascreen.
Italic
Identifiesvariableinformationthatyoumustsupplyorchangebased
onyourspecificsituationorenvironment.Identifiestermsthefirst
timetheyaredefinedintext.Alsoidentifiesserviceinputandoutput
variables.
Narrow font
IdentifiesstoragelocationsforservicesonthewebMethods
IntegrationServerusingtheconventionfolder.subfolder:service.
Typewriter
font
Identifiescharactersandvaluesthatyoumusttypeexactlyor
messagesthatthesystemdisplaysontheconsole.
UPPERCASE
Identifieskeyboardkeys.Keysthatyoumustpresssimultaneously
arejoinedwiththe+symbol.
Directorypathsusethe\directorydelimiterunlessthesubjectis
UNIXspecific.
[]
Optionalkeywordsorvaluesareenclosedin[].Donottypethe[]
symbolsinyourowncode.
15
Additional Information
ThewebMethodsAdvantageWebsiteathttp://advantage.webmethods.comprovides
youwithimportantsourcesofinformationaboutwebMethodsproducts:
Troubleshooting Information.ThewebMethodsKnowledgeBaseprovides
troubleshootinginformationformanywebMethodsproducts.
Documentation Feedback.ToprovidefeedbackonwebMethodsdocumentation,goto
theDocumentationFeedbackFormonthewebMethodsBookshelf.
Additional Documentation.Startingwith7.0,youhavetheoptionofdownloadingthe
documentationduringproductinstallationtoasingledirectorycalled
_documentation,locatedbydefaultunderthewebMethodsinstallationdirectory.
Inaddition,youcanfinddocumentationforallwebMethodsproductsonthe
webMethodsBookshelf.
16
What Is Developer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
18
Starting Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
21
31
35
37
38
17
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,seethewebMethodsVersionControlSystem
IntegrationDevelopersGuideinthewebMethods_directory\_documentationdirectory.
18
Starting Developer
UsethefollowingproceduretostartDeveloperonyourworkstation.Beforeyoustart
DevelopermakesurethattheIntegrationServerwithwhichyouwanttouseDeveloperis
running.YoucannotworkwithDeveloperiftheserverisnotrunning.
Important! YoucanonlyconnectwebMethodsDeveloperversion7.1toawebMethods
IntegrationServerversion7.1.
To start Developer
1
OntheStartmenu,clickPrograms,andthenclickwebMethods.
ClickwebMethods Developer.
IntheOpenSessiondialogbox,completethefollowing:
In this field...
Specify...
Server type
Theregisteredtypefortheserveronwhichyouwanttoopena
session.ThedefaulttypeisIntegrationServer.
Server
ThenameandportassignmentofthewebMethodsIntegration
ServerinServerName:PortNumformat.
Examplerubicon:5555
Note: Serverstowhichyouhavesuccessfullyloggedoninthe
pastarelistedintheServerlist.Youcanselectaserverfromthis
listortypeitsnameandportnumber.
Username
Thenameofavaliduseraccountonthisserver.(Theusername
mustbeamemberofagroupbelongingtotheDevelopersACL.)
Usetheexactcombinationofupperandlowercasecharacters
withwhichitwasoriginallydefined.ISusernamesarecase
sensitive.
19
In this field...
Specify...
Note: Theserverisinstalledwithadefaultuseraccountcalled
Developerthathasdeveloperprivileges.
Password
ThepasswordfortheuseraccountinUsername.Usetheexact
combinationofupperandlowercasecharacterswithwhichit
wasoriginallydefined.ISpasswordsarecasesensitive.
Note: ThedefaultpasswordfortheDeveloperuseraccountis
isdev.
Uses secure
connection
WhetherthesessionwillbeopenedthroughHTTPorHTTPS.If
youwanttoopenanHTTPSsessionontheselectedserverusing
theSecureSocketLayer(SSL),selectthischeckbox.Ifyouwant
toopenanHTTPsessionontheserver,clearthischeckbox.
Uses proxy
Whetherthesessionwillbeopenedthroughthedefaultproxy
server.Ifyouwanttoopenasessionontheselectedserverusing
yourproxyserver,selectthischeckbox.
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.
20
The Properties
Panel displays
the properties
for an item.
The Results
Panel displays
the results of a
services
execution.
21
Represents...
A server. YoucanhavemultipleservercontextsdisplayedinDeveloper.
TheactiveservercontextistheonethatishighlightedintheNavigation
panel.Todisplaythecontentsoftheserver,clickthe symbolnexttoits
name.
A package.Apackagecontainsasetofservicesandrelatedfiles,suchas
specifications,ISdocumenttypes,andoutputtemplates.Todisplaythe
contentsofapackage,click nexttoitsname.
A folder. Afoldercontainsrelatedservicesandoptionalfolders(called
subfolders).Todisplaythecontentsofafolder,click nexttoitsname.
A flow service.AflowserviceisaservicewritteninthewebMethodsflow
language.
A Web service descriptor (WSD).AWebservicedescriptorisanISnamespace
elementthatcontainsthedefinitionofanISWebservice.AWSD
describeseitheraprovideroraconsumerWebservice.Formore
informationaboutusingWebservicesandtheUDDIRegistry,seetheWeb
ServicesDevelopersGuide.
22
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.
23
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.
24
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.
Note: OtherinstalledwebMethodscomponentsmightaddelementstotheNavigation
panelthatarenotdescribedintheprecedingtable.Forinformationaboutthese
elements,refertothedocumentationprovidedwiththeseinstalledcomponents.
25
To...
ConnecttoaUDDIRegistrywhileworkinginDeveloper.
DisconnectfromaUDDIRegistrywhileworkinginDeveloper.
RefreshthedisplayofWebservices.EquivalenttoSessionRefresh UDDI
Registry Display.
CreateanexpressionthatfiltersthecontentsoftheUDDIRegistrytab
basedonthevalueofaWebserviceproperty.
RemovethefilterfromthecontentsoftheUDDIRegistrytaband
displayallthepublishedWebservices.
CreateaWebservicedescriptor(WSD)fromtheWebserviceselectedin
theUDDIRegistrytab.
TheUDDIRegistrytabalsocontainsiconstorepresenttheUDDIRegistry,theregistered
businessentities,andtheWebservicesthathavebeenpublishedtotheUDDIRegistry.
Thefollowingtableidentifiestheseicons.
This icon...
Represents...
A UDDI Registry Node.DeveloperdisplaystheURLoftheUDDIRegistry
towhichyouareconnectednexttotheregistryicon.BelowtheUDDI
Registryname,Developerdisplaysallofthebusinessentitiesregistered
inthatUDDIRegistry.
A Business Entity.AbusinessentityisapublisherofWebservicestothe
UDDIRegistry.Belowthebusinessentityname,Developerdisplaysthe
Webservicespublishedbythatentity.
A Web service.AWebserviceisasoftwareapplicationthatcanbe
accessedremotely,usingXMLbasedlanguagestocommunicate.From
aWebserviceoraWSDL,youcancreateaconsumerWebservice
descriptorandconnector.Developercaninvoketheconnectortorun
theremoteWebservice.FromanexistingISserviceorWSDL,youcan
createaproviderWebservicedescriptor.YoucanthenpublishtheWeb
servicedescriptortoaUDDIRegistrysothattheISserviceitdescribes
canbeinvokedbyanexternaluserasanoperationoftheWebservice.
FormoreinformationaboutusingWebservicesandtheUDDIRegistry,
seetheWebServicesDevelopersGuide.
26
The Editor
Theeditorcontainsthecontrolsthatyouusetoexamineandeditanelementyouopen
fromtheNavigationpanelorRecentElementstab.Thecontentsoftheeditorvary
dependingonthetypeofelementyouselect.
Forsomeelementtypes,theeditorisdividedintomultipleareas,includingtabs
containingadditionaleditingcontrolsfortheelement.Youswitchamongareaswithin
theeditorjustasyouwouldbetweentheNavigationpanelorRecentElementstaband
theeditor.Toselectadifferentarea,clickanywhitespaceinthatarea.Todisplaythe
contentsofatab,clickthetabname.
27
If you open
an element
from the
Navigation
panel...
...editing
controls for that
element are
displayed in the
editor.
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 22
andWhatIsaLock?onpage 88.
Tip! YoucanpressCTRL+ALT+RIGHTARROWtotoggleforwardbetweenopen
elementsintheeditorandCTRL+ALT+LEFTARROWtotogglebackward.
28
Tip! YoucanlocatetheactiveelementintheNavigationpanelbyusingthe
EditLocate in Navigationcommand.
29
Properties panel
Drag to resize the Property
and Value columns.
Description of the
selected property.
Dependingonthetypeofpropertyyouselect,youeditapropertyby:
Typingavalueintheboxtotherightofthepropertyname(forexample,tospecify
thenamespaceandlocalnamesthatmakeuptheuniversalnameforaservice)
Tip! Youcanalsopastetextintotheboxthatyoupreviouslycopiedtothe
clipboard.
Note: Developeracceptsthetextyoutypeinapropertyboxwhenyoumovethe
focusoutsideoftheboxorpressENTER.Youcancancelyoureditsbeforeyou
performeitheroftheseactionsbypressingESC.
Selectingavaluefromalist(forexample,tospecifyavalidationprocessingrule)
Clickingabuttonnexttothepropertynameandsupplyingvaluesonadialogbox
(forexample,tospecifyanindexwhenlinkingtoorfromanarrayvariable)
Clickingthebrowse
buttontolocateanelement(forexample,aservice)
Thetipsareabeneaththelistofpropertiesincludesadescriptionoftheselectedproperty
anditsvalues.Toobtainthisinformationforaparticularproperty,clicktheproperty
name.
Note: Ifyoudonotownthelockforanelement,theelementspropertiesarereadonly.
30
Click a variable
name...
Formoreinformationaboutserviceexecutionresults,seeChapter 11,Testingand
DebuggingServices.
31
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.
32
Drag-and-drop action.Youcanselectanelementandmoveittoanotherpackageor
element,eitheronthesameserveroronadifferentserver,bydraggingit.For
example,tomoveanISdocumenttypefromonefoldertoanother,youwoulddrag
thatdocumenttypetothenewfolder.
Note: Someelements,suchasadapternotifications,cannotbemovedusingthe
draganddropaction.
Mostoftheproceduresinthisguideinstructyoutoperformactionsusingmenu
commands.
Do this...
HidetheNavigationpanel,
UDDIRegistrytab,and
RecentElementstab
Click
alongtheleftedgeoftheDeveloperwindow.
Click
alongtheleftedgeoftheDeveloperwindow.
ShowtheNavigation
panel,UDDIRegistrytab,
andRecentElementstab
HidethePropertiesand
Resultspanels
Click alongtherightedgeoftheDeveloperwindow.
ShowthePropertiesand
Resultspanels
Click
Expandorcollapseeditor
details
alongtherightedgeoftheDeveloperwindow.
Click ontheborderbetweenthetopoftheeditorand
thespecializedtabsbeneathit.
33
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
WindowEdit Perspective
Testperspective
WindowTest Perspective
Detailsperspective
WindowDetails Perspective
Youcanmanuallyadjustareaswithinaperspectiveusingtheothertechniquesdescribed
inthissection.Developersavesyoursettingsacrosssessions.
Ifyouhaveadjustedtheperspectivesmanuallyandyouwanttorevertthemtotheir
defaultsettings,usetheWindowReset Perspectivescommand.
34
Click to display
Edit, Test, and
Detail
perspectives.
Click to hide or
show the
Properties and
Results panels.
Drag movable
borders to
resize panels.
OntheSessionmenu,clickOpen.
CompletetheOpenSessiondialogbox.Formoreinformationaboutcompletingthis
dialogbox,seeTostartDeveloperonpage 19.
ClickOK.
Important! WhileyouhaveanopensessiononaserverthroughDeveloper,youare
usingalicensedseatforthatserver.Attimeswhenyouarenotactivelyusing
Developer,youmaywanttocloseyoursessiontofreeaseatontheserverforothers
touse.
35
Saveanyworkthatyouwanttokeep.
OntheSessionmenu,click Close.
36
Ifyoudidnotsaveyourworkbeforeshutdownoccurred,youmightbeabletorestore
yoursessionwhentheserverrestartsandthensaveyourwork.Formoreinformation
aboutrestoringsessions,seeRestoringaSessiononaServeronpage 36.
Password Requirements
Forsecuritypurposes,webMethodsIntegrationServerplaceslengthandcharacter
restrictionsonpasswords.webMethodsIntegrationServercontainsadefaultsetof
passwordrequirements;however,yourserveradministratorcanchangethese.Formore
informationaboutthesepasswordrequirements,contactyourserveradministrator.
ThedefaultpasswordrequirementsprovidedbywebMethodsareasfollows:
Requirement
Default
Minimumlength
Minimumnumberofalphabeticcharacters
Minimumnumberofuppercasecharacters
Minimumnumberoflowercasecharacters
Minimumnumberofnumericcharacters
Minimumnumberofspecialcharacters(nonalphabeticandnonnumeric
characters,suchas*.?,&)
Toensurethesecurityofyourpassword,followtheadditionalguidelinesbelow:
Donotchooseobviouspasswords,suchasyourname,address,phonenumber,
licenseplate,spousesname,childsname,orabirthday.
Donotuseanywordthatcanbefoundinthedictionary.
Donotwriteyourpassworddown.
Donotshareyourpasswordwithanyone.
Changeyourpasswordfrequently.
37
OntheSessionmenu,clickChange Password.
IntheChangePassworddialogbox,intheOld Passwordfield,typeyourcurrent
password.
IntheNew Passwordfield,typeyournewpassword.
ClicktheHelpbutton(availableinmostdialogboxes).
PressF1.
FromtheHelpmenu,clickOn Topic.
OntheDeveloperwindowtoolbar,click
Properties. Forhelpaboutaproperty,clickthepropertyinthePropertiespanel.
DeveloperdisplaysadescriptionofthepropertyatthebottomoftheProperties
panel.
Built-in services.ForadescriptionofabuiltinservicewithintheWmART,WmDB,
WmPKI,WmPRT,orWmPublicpackages,dooneofthefollowing:
IfyouarebrowsingtheserviceswithinapackageintheNavigationpanel,selecta
serviceandpressF1.
IfyouhaveaddedabuiltinservicetoaflowserviceusinganINVOKEstep,select
thebuiltinserviceintheeditorandpressF1.
Ifyouarebrowsingforabuiltinservicetoaddtoaflowservice,selectthebuiltin
serviceintheSelectdialogboxandpressF1.
Youcanalsovieworprintdescriptionsofallbuiltinservicesfromonelocationby
clickingHelpBuilt-In Service Reference.
38
What Is an Element? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
41
43
44
45
47
Renaming Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
53
Deleting Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
55
60
63
Caching Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
39
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...
See...
Creating,opening,movingand
copying,renaming,deleting,
finding,andcachingelements
Thesectionsinthischapter
Lockingelements
Chapter 4,LockingandUnlockingElements
Checkingelementsintoandoutofa
thirdpartyversioncontrol
repository
webMethodsVersionControlSystemIntegration
DevelopersGuideinthedirectory:
webMethods_directory\_documentation
Performingactionsonpackages
Chapter 3,WorkingwithPackages
40
OntheFilemenu,clickNew.
OntheNewdialogbox,clickthetypeofelementyouwanttocreateandthenclick
Next.
FollowthepromptsgivenbyDeveloperforthetypeofelementyouarecreating.
WhenyouhavesuppliedalloftheinformationthatDeveloperneedstocreatethe
element,theFinishbuttonbecomesactive.
ClickFinish.
Tip! Youcanquicklycreateanelementbyclicking nexttotheNewbuttononthe
toolbarandthenclickingtheelementyouwanttocreate.Developeraddstheelement
beneaththecurrentlyselectedelement,withadefaultnameofUntitled.
Ifyouselectmultipleelementsandthenclickthisbutton,DeveloperoffersonlytheAll
Choicesoption,whichopenstheNewdialogboxdescribedintheprocedureabove.
41
Note: Developerensuresthatthefullyqualifiednameofeachelementwithinthe
serverisunique.Dependingontheactionyouareperformingontheelement,
Developeraccomplishesthiseitherbyalertingyouthattheactioncannotbe
completedorbyappendinganumbertothenameoftheelementaftertheactionis
performed.Forexample,ifyouarecopyingaflowservicenamedcheckOrder2toa
destinationthatalreadycontainsaflowservicewiththatname,Developercopiesthe
serviceandnamesthecopycheckOrder2_1.
'
&
>
<
"
CharactersoutsideofthebasicASCIIcharacterset,suchasmultibytecharacters
Ifyouspecifyanamethatdisregardstheserestrictions,Developerdisplaysanerror
message.Whenthishappens,useadifferentnameortryaddingaletterornumbertothe
nametomakeitvalid.
42
Editing Elements
Toeditanelement,youmustfirstlockit.YoumustalsohaveWriteaccesstotheelement.
Formoreinformationaboutlockingandunlockingelements,seeChapter 4,Locking
andUnlockingElements.Formoreinformationaboutaccesspermissions,seeChapter 5,
AssigningandManagingPermissions.
IfyouhaveenabledtheVCSIntegrationfeature,youmustfirstcheckouttheelement
beforeyoucaneditit.Formoreinformation,seethewebMethodsVersionControlSystem
IntegrationDevelopersGuideinthewebMethods_directory\_documentationdirectory.
Tip! YoucanproduceprintableversionsofmanyoftheelementsintheNavigation
panelbyclickingFileView as HTML.
OntheToolsmenu,clickOptions.
To...
Confirm before
deleting
InstructDevelopertonotifyyoubeforedeletinganelement
usedbyotherelements,suchasflowservices,ISdocument
types,specifications,ortriggers.
IfDeveloperfindselementsthatdependontheelement
beingdeleted,Developerliststhosedependentsand
promptsyoutodeletetheelementanywayorcancelthe
action.Ifyouclearthischeckbox,Developerdeletesthe
elementwithoutpromptingyou.
43
Select...
To...
Prompt before
updating dependents
when
renaming/moving
InstructDevelopertoalertyouwhendependents(thatis,
otherelementsthatusetheselectedelement,suchasflow
services,ISdocumenttypes,ortriggers)exist.
Ifdependentsexist,Developerliststhosedependentsbefore
renamingormovingtheselectedelementandpromptsyou
to:
Rename/movetheselectedelementandupdate
referencesindependentelements.
Rename/movetheselectedelementwithoutupdating
referencestoit.
Canceltheaction.
Ifyouclearthischeckbox,Developerautomaticallyupdates
dependentswithoutpromptingyou.
Update local
references when
pasting multiple
elements
3
InstructDevelopertoupdatereferenceswhencopyingand
pastingagroupofelementsthatrefertoeachother.
Ifyouclearthischeckbox,Developerretainstheoriginal
referencesinthecopiedelements.
ClickOK.
Formoreinformationaboutfindingdependents,seeFindingDependentsand
Referencesonpage 60.
44
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:
Fornoncopyactions,youmustalsoselecttheadapternotificationbeforeyoucan
performanoncopyactiononthedocumenttype.
Forcopyactions,youcanselectthepublishabledocumenttypewithoutselecting
itsassociatedadapternotification.However,thecopiedpublishabledocument
typelosesitsassociationwiththeadapternotification.
45
Selectoneormoreelementstoopen.
Tip! PresstheSHIFTkeyasyouclicktoselectagroupofadjacentelements.Press
theCTRLkeytoselectagroupofnonadjacentelements.
OntheFilemenu,clickOpen.
IfyouareopeninganelementfromtheRecentElementstabandtheelementresides
onaservertowhichyouarenolongerconnected,Developerpromptsyoutologonto
thatserverbeforedisplayingtheelement.
To close elements in the editor
Dooneofthefollowing:
To...
Do this...
Closetheactiveelementintheeditor
(thatis,theelementwhosetabis
highlighted)
OntheWindowmenu,clickClose Active
Editor.
Closeallelementsexcepttheactiveone
Closeallelementsintheeditor
Note: YoudonotneedtocloseelementswhenyouexitDeveloper.Developer
rememberswhichelementswereopenanddisplaysthemwhenyourestart
Developer.Ifyoucloseanelementwithoutsavingchangesmadetotheelement,
Developerwillpromptyoutosavechanges.
46
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,Developerwillupdatethereferencetotheinvokedservice.
47
YoucannotmoveorcopyaJavaservicetoafolderthatcontainsotherJavaservices
thataresystemlockedorlockedbyanotheruser.Ifyouattempttodoso,Developer
cancelstheentiremove/copyaction.
WhenyoumoveorcopyaJavaservice,Developerwillalsomoveorcopytheservices
Sharedfieldstothedestinationfolder,unlessthedestinationfolderalreadycontains
Sharedfieldswithdifferentvalues.Inthiscase,youmustfirstmanuallycopythe
SharedfieldsintothedestinationfolderandthenmoveorcopytheJavaservice.
48
Tip! ToretainthestatusofapublishabledocumenttypeanditslinktoaBroker
documenttype,usethepackagereplicationfunctionalityintheIntegrationServer
AdministratorinsteadofusingDevelopertomoveorcopythepackage
containingthepublishabledocumenttype.Forinformationaboutpackage
replication,seethewebMethodsIntegrationServerAdministratorsGuide.
Selecttheelementsthatyouwanttomoveorcopy.
Dooneofthefollowing:
To...
Click...
Cuttheelement
EditCut
Copytheelement
EditCopy
Tip! YoucancancelacutactionbypressingESC.
3
Iftheelementsyouwanttomoveorcopycontainunsavedchanges,Developeralerts
youthatyoumustfirstsavethechanges.ClickOKtoclosethealertdialogbox.Then,
savethechangesandrepeatthemove/copyaction.
IfyoudonothaveReadaccesstotheelementsyouaremovingorcopying,orWrite
accesstothelocationyouaremoving/copyingthemto,Developerdisplaysamessage
thatidentifiestheelementsthatarepreventingtheactionfromcompleting
successfully.ClickOKandtheneitherobtaintheproperaccessfromyoursystem
administratororselectonlythoseelementstowhichyouhaveproperaccess.
Selectthelocationwhereyouwanttomoveorcopytheelements.
49
OntheEditmenu,clickPasteAfter.
Ifthedestinationalreadycontainsanelementwiththesamenameasanelementyou
aremovingorcopying,dooneofthefollowing:
Ifyouaremovingtheelement,Developeralertsyouthattheelementcannotbe
moved.ClickOKtoclosethealertdialogbox.Renametheelementifdesiredand
repeatthemoveaction.
Ifyouarecopyingtheelement,Developercopiestheelementandappendsa
numbertothenameofthecopiedelement.(Forexample,ifyouarecopyinga
flowservicenamedcheckOrder2toadestinationthatalreadycontainsaflow
servicewiththatname,Developercopiestheserviceandnamesthecopy
checkOrder2_1.)Renametheelementifdesired.
Formoreinformationaboutrenamingelements,seeRenamingElementson
page 51.
8
IfoneoftheelementsyoumovedorcopiedisaJavaservice,performthefollowingas
necessary:
IfyouaremovingorcopyingtheJavaservicetoafolderwithotherJavaservices
thataresystemlockedorlockedbyanotheruser,Developeralertsyouthatthe
elementcannotbemoved/copied.
ClickOKandthenasktheownerofthelocktoremovethelock.
IftheJavaserviceyouaremovingorcopyingcontainsasharedsourcethat
conflictswiththesharedsourceofanexistingJavaserviceinthedestination
folder,Developeralertsyouthatthereisaconflict.ClickOKtousethedestination
folderssharedsource,orclickCanceltocanceltheentiremoveaction.
Note: IfnosharedJavasourceconflictexists,DevelopermovestheJavaservice
anditssharedsourcetothedestinationfolder.Ifaconflictdoesexist,you
mustrespecifytheSharedtabinformationinthecopyoftheservice.(Youcan
copytheinformationfromtheSharedtabfortheoriginalservicetotheShared
tabforthecopyoftheservice.)
50
Click...
Savechangesandthenproceedwiththemove/copyaction
Continuethemove/copyactionwithoutsavingchanges
Canceltheentiremove/copyaction
Cancel
Click...
Movetheselectedelementandupdatereferencesto
dependentelements
Update Usages
MovetheselectedelementintheNavigationpanelwithout
updatingreferencestodependentelements
Ignore Usages
Canceltheentiremoveaction
Cancel
Formoreinformationaboutdependencysafeguards,seeSpecifyingDependency
CheckingSafeguardsonpage 43.
Tip! Youcanalsomoveelementsbyclickinganddraggingthemtotheirnewlocation.
Renaming Elements
Whenrenamingelements,keepthefollowingpointsinmind:
YoucanrenameanyelementsforwhichyouhaveWriteaccesstotheelementandits
parentfolder.Whenrenamingafolder,youmustalsohaveWriteaccesstoall
elementswithinthefolder.FormoreinformationaboutWriteaccessandACLs
assignedtoelements,seeChapter 5,AssigningandManagingPermissions.
Whenyourenameafolder,Developerautomaticallyrenamesalloftheelementsin
thatfolder(thatis,changestheirfullyqualifiednames).
Ifthefolderyouwanttorenamecontainselementswithunsavedchanges,youmust
savethechangesbeforeyoucanrenamethefolder.
Elementnamesmustbeuniqueacrossallpackages.Ifyoutrytorenameanelement
usinganamethatalreadyexistsatthatlevelinanypackage,Developerrevertsthe
elementbacktoitsoriginalname.
Whenyourenameanadapternotification,Developeralsorenamesitsassociated
publishabledocumenttypeandpromptsyoutoindicatewhethertorenamethe
associatedBrokerdocumenttype.
Youcannotrenamealistenerorconnectionelement.
51
To rename an element
1
Selecttheelementthatyouwanttorename.
OntheEdit menu,clickRename.
Iftheelementyouwanttorenamecontainsunsavedchanges,Developeralertsyou
thattheelementcannotberenameduntilyousavethechanges.ClickOKtoclosethe
alertdialogbox.Then,savethechangesandrepeattherenameaction.
Developermovesthecursortotheendoftheelementname.Editthenameandpress
ENTER.
Ifanelementalreadyexistswiththatnameatthesamelevel,Developerdisplaysa
messagealertingyouthattherenameactioncouldnotbecompleted.ClickOKtoclose
themessagedialogboxandrepeattherenameaction.
Tip! YoucancancelarenameactionbypressingESC.
To...
Click...
Savechangesandthenproceedwiththerenameaction
Proceedwiththerenameactionwithoutsavingchanges
Canceltheentirerenameaction
Cancel
Click...
RenametheselectedelementintheNavigationpaneland
updatereferencestodependentelements
Update Usages
Renametheselectedelementwithoutupdatingreferencesto
dependentelements
Ignore Usages
Canceltheentirerenameaction
Cancel
Formoreinformationaboutdependencysafeguards,seeSpecifyingDependency
CheckingSafeguardsonpage 43.
52
Do this...
Savechangestothecurrentelement
OntheFile menu,clickSave.
Saveallelementsyouhaveedited,onall
servers
IfyouattempttocloseDeveloper,closeyoursessiononthecurrentserver,closean
unsavedelementintheeditor,orperformanactiononanelementwithoutsavingyour
changes,Developerwillpromptyoutosavechangesfirst.
Deleting Elements
Whendeletingelements,keepthefollowingpointsinmind:
YoucandeleteanyelementstowhichyouhaveWriteaccessfortheelementandits
parentfolder.Whendeletingafolder,youmustalsohaveWriteaccesstoallelements
withinthefolder.FormoreinformationaboutWriteaccessandACLsassignedto
elements,seeChapter 5,AssigningandManagingPermissions.
WhenyoudeleteafolderorthelastJavaserviceinafolder,Developeralsodeletesthe
sharedsourceforthatfolder.Ifyoucancelthedeleteaction,noelements(including
nonJavaserviceelements)aredeleted.
Youcanonlydeleteanadapternotificationspublishabledocumenttypeifyoudelete
itsassociatedadapternotification.
Whenyoudeleteanadapternotification,Developeralsodeletesitsassociated
publishabledocumenttypeandpromptsyoutoindicatewhethertodeletethe
associatedBrokerdocumenttype.
Youcannotdeletealistenerorconnectionelement.
53
To delete elements
1
Selecttheelementsthatyouwanttodelete.
OntheEditmenu,clickDelete.
Ifanyelementsontheservercontainunsavedchanges,Developerpromptsyouto
savetheelement(s).Dooneofthefollowing:
To...
Click...
Savechangesandthenproceedwiththedeleteaction
Proceedwiththedeleteactionwithoutsaving
changes
Canceltheentiredeleteaction
Cancel
Iftheelementsyouaredeletingarenotdependentsofotherelements,Developer
promptsyoutoconfirmthedeleteaction.ClickOK.
Iftheelementsyouaredeletingaredependentsofotherelements,Developer
alertsyoutotheelementsthatwillbeaffectedbythedeletion.Dothefollowing:
1
Ifoneoftheelementsyouwanttodeleteisapublishabledocumenttypeoran
adapternotification,dooneofthefollowing:
To...
Do this...
DeletetheelementontheIntegration
Serverbutleavethecorresponding
documenttypeontheBroker
DeletetheelementontheIntegration
Serverandthecorresponding
documenttypeontheBroker
Important! IfyoudeleteapublishabledocumenttypeandBrokerdocument
typeassociatedwithatriggeroraflowservice,youmightbreakany
integrationsolutionthatusesthedocumenttype.
IfyoudeletetheBrokerdocumenttype,youmightnegativelyimpactany
publishabledocumenttypescreatedfromthatBrokerdocumenttypeonother
IntegrationServers.Whenthedeveloperssynchronizedocumenttypeswith
theBrokerandtheychoosetoPull from Broker,publishabledocumenttypes
associatedwiththedeletedBrokerdocumenttypewillberemovedfromtheir
IntegrationServers.
54
Continueorcancelthedeleteactionasfollows:
To...
Click...
DeletetheelementsfromtheNavigationpanel(and
thereforebreakanylinkstodependentelements)
Continue
Canceltheentiredeleteaction
Cancel
Formoreinformationaboutdependencysafeguards,seeSpecifyingDependency
CheckingSafeguardsonpage 43.
55
namedTest,MyTest,andTestFinal.Youcanalsoincluderegularexpression
operatorcharacters.Forexample:
To find...
Type...
AllelementscontainingPO
PO
AllelementsstartingwithPO
^PO
AllelementsendingwithPO
PO$
AllserviceswiththeexactnameoflogPO
:logPO$
Allelementscontaininglogfollowedbyanytwocharacters(wildcards)
log..
Foracompletelistofregularexpressionoperatorcharacters,seeAppendix B,Regular
Expressions.
Note: The Findcommandsupportsregularexpressionsbutnotconditionalstatements.
Forexample,youcanspecifyTestasasearchterm,butnotTest OR Test1.
56
ClickanywhereintheNavigationpanel.
OntheEditmenu,clickFind.DeveloperdisplaystheFindInNavigationPaneldialog
box.
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.
57
58
Ifyouselectafield,Developerbeginssearchingattheselectedfieldandcontinues
tothebottomofthetree.Ifyouhavenotselectedafield,Developerbegins
searchingatthetopofthetree.
WhenDeveloperfindsafieldthatmatchesthesearchcriteria,Developerselects
thefieldinthetree.
WhenDeveloperreachesthebottomofthetree,Developerdisplaysamessage
askingifyouwouldliketocontinuesearchingfromthetopofthetree.
Aftercompletingasearchoftheentiretree,ifDevelopercannotfindamatching
field,Developerdisplaysamessagestatingthatthesearchtextwasnotfound.
Selectthetreeinwhichyouwanttosearchforafield.
OntheEditmenu,clickFind.
IntheFind whatfield,typethetextyouwanttosearchfor.Ifyouwanttosearchfora
parentchildfieldcombination,useaforwardslash(/)toseparatetheparentfield
fromthechildfield.
Tofurtherrefineyoursearch,dooneormoreofthefollowing:
To...
Do this...
Findfieldswiththesamecapitalizationasthe
textintheFind whatfield
SelecttheMatch casecheckbox.
Findonlyfieldsthatmatchthecompleteword
intheFind whatfield
FindfieldsthatcontainthetextintheFind what
fieldasalloraportionoftheirname
ClickFind Next.IfDeveloperfindsamatch,itselectsthefieldanddisplaysitonthe
Pipelinetab.
ClickFind Nexttofindthenextfieldthatmatchesthesearchcriteria.
Intheeditor,selecttheINVOKEstepcontainingtheserviceyouwanttolocate.
OntheEditmenu,clickLocate in Navigation.Developerlocatesandselectstheservicein
theNavigationpanel.
59
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.
IntheNavigationpanelorintheeditor,selecttheelementforwhichyouwanttofind
dependents.
OntheToolsmenu,clickFindDependents.
TheFindDependentsdialogboxdisplaysthedependentsoftheelement.
60
...this element.
AfterDeveloperfindsthedependentsoftheselectedelement,youmaydoanyofthe
following:
TojumptoanelementintheNavigationpanel,selectthatelementintheresults
andthenclickGo To.
Toseealldependentsofafounddependent,click nexttotheitemintheresults
list.
Tolimitthescopeofthesearchtoaspecificpackage,selectthepackageinthe
PackagelistandthenclickFind.
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
Each of these
services is a
reference of
ServiceA.
Duringdebuggingofacomplexflowservice,youmightwanttolocatealloftheservices,
ISdocumenttypes,andspecificationsusedbytheflowservice.UsetheFind References
commandtolocatethereferences.
61
YoucanalsousetheFind Referencescommandtolocateanyunresolvedreferences.An
unresolvedreferenceisanelementthatdoesnotexistintheNavigationpanelyetisstill
referredtointheservice,ISdocumenttype,orspecificationthatyouselected.The
elementmighthavebeenrenamed,moved,ordeleted.Topreventunresolvedreferences,
specifythedependencycheckingsafeguards.Formoreinformationaboutthese
safeguards,seeSpecifyingDependencyCheckingSafeguardsonpage 43.
Note: Developerdoesnotconsiderdocumentreferencestoschematypestobe
references,nordoesitconsiderservicesinvokedwithinaJavaservicetobereferences
oftheJavaservice.Forexample,ifJavaserviceAinvokesserviceB,andyouinstruct
DevelopertofindreferencesforserviceA,serviceBwillnotappearasareferenceofA.
To find references of a selected element
1
IntheNavigationpanelorintheeditor,selecttheelementforwhichyouwanttofind
references.
OntheTools menu,clickFindReferences.
TheFindReferencesdialogboxdisplaysthereferencesoftheelement.Unresolved
referencesareindicatedinbold italics.
Find References dialog box
The processPO
service uses...
...these elements.
62
AfterDeveloperfindsthereferencesoftheselectedelement,youmaydoeitherofthe
following:
TojumptoanelementintheNavigationpanel,selectthatelementintheresults
andthenclickGo To.
Toseeallreferencesofafoundreference,click nexttotheitemintheresults
list.
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
Drop Valuemodifiertoafieldinadocumentreferenceordocumentreferencelist.The
followingillustrationofthePipelinetabidentifiesthesetypesofpipelinereferences.
Examples of pipeline references
WhenyoueditanISdocumenttype,thechangesaffectanydocumentreferenceand
documentreferencelistvariablesdefinedbythatISdocumenttype.Thechangesmight
makepipelinereferencesinvalid.Forexample,supposetheinputsignatureforServiceA
containsadocumentreferencevariablePOInfobasedontheISdocumenttype
63
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.
64
IntheNavigationpanelorintheeditor,selecttheflowserviceorISdocumenttype
forwhichyouwanttofindinvalidpipelinereferences.
Ifyouinspectedaflowservice,thesearchresultscontainallofthedocument
referencesthathaveinvalidpipelinereferencesinthatflow.
IfyouinspectedanISdocumenttype,thesearchresultscontainalloftheflow
servicesthathaveinvalidpipelinereferencestothatISdocumenttype.
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.
65
Caching Elements
YoucanimproveperformanceinDeveloperbycachingNavigationpanelelementsthat
arefrequentlyused.WhenelementsarelocatedintheDevelopercache,Developerdoes
notneedtorequestthemfromtheIntegrationServerandcanthereforedisplaythem
morequickly.
To cache elements
1
OntheToolsmenu,clickOptions.
IntheOptionsdialogbox,clickGeneral.
ClickOK.Thecachingsettingstakeeffectimmediately.
IfyouenteranillegalcachesizeDeveloperdisplaysanerrorandresetsthecachesize
tothepreviousvalue.
Note: Keepinmindthatincreasingthecachereducestheamountofavailablememory.
Ifyouexperiencememoryproblems,considerdecreasingthenumberofcached
elements.
66
OntheToolsmenu,clickOptions.DeveloperdisplaystheOptionsdialogbox.
ClickGeneral.
67
68
What Is a Package? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
Package Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
83
69
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,seethe
webMethodsIntegrationServerAdministratorsGuide.
Package Management
YoucanusewebMethodsDevelopertoperformcertainpackagemanagementtasks,such
ascreating,copying,anddeletingpackages,ontheIntegrationServer.Whenyou
performapackagemanagementtask,allofthefilesandservicesinthepackageare
affected.
Thefollowingtableidentifiesallofthepackagemanagementtasksthatcanbeperformed
usingDeveloperortheIntegrationServerAdministrator.Ifyoucanperformthetask
withDeveloper,theSeecolumndirectsyoutoapagewithinthisguideforinstructions.
FortasksthatcanonlybeperformedusingtheIntegrationServerAdministrator,theSee
columndirectsyoutothewebMethodsIntegrationServerAdministratorsGuide.
To...
See...
Createapackage
page 72
Activateapackage
webMethodsIntegrationServer
AdministratorsGuide
Copyapackagetoanotherserver
page 74
70
To...
See...
Viewdetailsforapackage
page 73
Displayspecificpackagesbyfilteringthe
PackagesList
webMethodsIntegrationServer
AdministratorsGuide
Documentthepurposeandfunctionofa
package
page 76
Viewthepatchhistoryforapackage
page 79and
webMethodsIntegrationServer
AdministratorsGuide
Assignstartup,shutdown,orreplication
servicestoapackage
page 83
Reloadtheservicesandfilesinapackage
intomemorywithoutrestartingtheserver
page 77and
webMethodsIntegrationServer
AdministratorsGuide
Deletethecontentsofapackage
page 77and
webMethodsIntegrationServer
AdministratorsGuide
Assignaversionnumbertoapackage
page 78and
webMethodsIntegrationServer
AdministratorsGuide
Identifypackagesthatmustbeloaded
beforeaspecificpackageisloaded(package
dependencies)
page 81
Exportapackageorpartialpackage
page 78
Replicateorcopythecontentsofapackage
andsend(publish)ittootherIntegration
Servers
page 74and
webMethodsIntegrationServer
AdministratorsGuide
Disableapackagewithoutdeletingthe
package
webMethodsIntegrationServer
AdministratorsGuide
Enableapackagethatyoupreviously
disabled
webMethodsIntegrationServer
AdministratorsGuide
Recoverservicesandrelatedfilesfroma
deletedpackage
webMethodsIntegrationServer
AdministratorsGuide
Archiveacopyofthepackage(suchasfora
backupcopy)
webMethodsIntegrationServer
AdministratorsGuide
71
Creating a Package
Whenyouwanttocreateanewgroupingforservicesandrelatedfiles,createapackage.
Packagescanstoreservices,specifications,ISdocumenttypes,outputtemplates,and
schemas.
Whenyoucreateapackage,Developercreatesanewsubdirectoryforthepackageinthe
filesystemonthemachinewheretheIntegrationServerisinstalled.Forinformation
aboutthesubdirectoryanditscontents,seethewebMethodsIntegrationServer
AdministratorsGuide.
OntheFilemenu,clickNew.
IntheNewdialogbox,selectPackage,andthenclickNext.
DeveloperdisplaystheNewPackagedialogbox.
IntheNamefield,typethenameforthenewpackageusinganycombinationofletters,
numbers,andtheunderscorecharacter.ClickFinish.
DeveloperrefreshestheNavigationpanelanddisplaysthenewpackage.
Note: Avoidusingcontrolcharactersandspecialcharacterslikeperiods(.)ina
packagename.Thewatt.server.illegalNSCharssettingintheserver.cnffile(which
islocatedintheIntegrationServer_directory\configdirectory)definesallthe
charactersthatyoucannotusewhennamingpackages.Additionally,the
operatingsystemonwhichyouruntheIntegrationServermighthavespecific
requirementsthatlimitpackagenames.
72
Tip! Youcanquicklycreateapackagebeneaththeserveryouarecurrentlyworking
withbyclicking nexttotheNewbuttononthetoolbarandthenclickingPackage.
TypethenameofthepackageandthenclickOK.
Youcanthencreateafolderbeneaththepackagebyclicking nexttotheNew
buttonandthenclickingFolder.Developeraddsthefolderbeneaththepackage,with
adefaultnameofUntitled.
Selectthepackageswhosedetailsyouwanttoview.
OntheFilemenu,clickOpen.
Formoreinformationaboutpackagedetails,seeAssigningaVersionNumbertoa
Packageonpage 78,ViewingthePatchHistoryforaPackageonpage 79,and
IdentifyingPackageDependenciesonpage 81.
73
OpenthefileDeveloper_directory\config\developer.cnfwithatexteditor.
Addthefollowingpropertiestothefile:
dev.maxServerLockInfoCalls=<value>
DefinesthemaximumnumberoflockstatequeriesthatwillbemadefromDeveloper
toIntegrationServer.Thedefaultvalueis20.Afterthismaximumisreached,cached
valuesareretrievedforeachelement.Thesecachedvaluesmaybeinaccurate,butthe
onlyresultisthatmenuitemsmaybeenabledordisabledincorrectly.
dev.maxLockInfoCalls=<value>
Definesthemaximumnumberofcachedlockstatesthatareretrieved.Thedefault
valueis100.Afterthismaximumisreached,thelastknownlockstateforeach
remainingelementisused.Thisstatemaybeincorrect,butasabove,theonlyresultis
thatmenuitemsmaybeenabledordisabledincorrectly.
Forexample,whenalargepackageisopened(usingthedefaultvalues):Fulllock
statusinformationwillberetrievedforthefirst20elements.Forelements21100,
cachedlockstateinformationwillberetrieved.Forelements101andabove,thelast
knownlockstatewillbeused.
3
Savethefile.
ShutdownandrestartDeveloper.
Note: Thelowerthevaluesforthesesettings,themoretheperformancewillimprove.
Applyingavalueofzero(0)tothesesettingswilleliminatealllockstatequeriestothe
server.Thismayresultinsometemporarilyoutofsynclockstates,butthesewillbe
updatedduringnormalDeveloperoperations.
LockstateinformationisupdatedaschildelementsareopenedintheNavigation
panel.
74
distributingpackageupdatestodevelopersworkinginlarge,collaborative
environments.
Forinformationaboutreplicatingpackagesandmanagingreleasesfromwithin
IntegrationServerAdministrator,seethewebMethodsIntegrationServerAdministrators
Guide.
Whencopyingpackages,keepthefollowingpointsinmind.
Youcancopyapackagetoadifferentserveronlyifyouareamemberofagroup
assignedtotheReplicatorsACLonthesourceanddestinationserversandyouare
loggedontobothservers.
Beforeyoucopyapackagethatcontainselementswithunsavedchanges,youmust
savethechanges.
YoucannotundoacopyactionusingtheEditUndocommand.
Youcannotcopyapackagetoanotherserverifthedestinationserveralreadycontains
apackagewiththatname.
Note: BecauseUNIXdirectoriesarecasesensitive,IntegrationServersrunningina
UNIXenvironmentwillallowpackageswithsimilarnamestoresideonthesame
server.Forexample,youcancopyapackagenamedorderProcessingtoaserverthat
containsapackagenamedOrderProcessing.
Ifyoucopyapackagethatdependsonotherpackagestoload(thatis,contains
packagedependencies),andtherequiredpackagesarenotpresentonthedestination
server,thepackagewillbecopiedbutitwillnotbeenabled.
Formoreinformationaboutsettingpackagedependencies,seeIdentifyingPackage
Dependenciesonpage 81.
Formoreinformationaboutcopyingelementswithinapackage,seeChapter 2,
ManagingElementsintheNavigationPanel.
To copy a package
1
Selectthepackagethatyouwanttocopy.
OntheEditmenu,clickCopy.
Ifthepackageyouwanttocopycontainselementswithunsavedchanges,Developer
alertsyouthatthepackagecannotbecopieduntilyousavethechanges.ClickOKto
closethealertdialogbox.Then,savethechangesandrepeatthecopyaction.
Selecttheserverwhereyouwanttocopythepackage.
OntheEditmenu,clickPaste After.
Tip! Youcanalsocopypackagesbyclickingthemanddraggingthemtotheirnew
location.Developerretainsacopyofthepackageanditscontentsonthesource
server.
75
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.
To access documentation for a package
EntertheURLforthepackagedocumentation.TheURLsforpackagedocumentation
havethefollowingformat:
http://serverName:port/PackageName/DocumentName
where:
76
serverName:port
isthenameandportaddressoftheIntegrationServeronwhich
thepackageresides.
PackageName
isthenameofthepackageforwhichyouwantdocumentation.
DocumentName
isthenameoftheWebdocumentyouwanttoaccess.Ifyoudo
notspecifyaDocumentName,theIntegrationServer
automaticallydisplaystheindex.htmlfile.
Reloading a Package
Sometimes,youneedtoreloadapackageontheservertoactivatechangesthathavebeen
madetoitoutsideofDeveloper.Youneedtoreloadapackageifanyofthefollowing
occurs:
AJavaservicethatwascompiledusingjcodeisaddedtothepackage.
Newjarfilesareaddedtothepackage.
Anyoftheconfigurationfilesforthepackagearemodified.
Note: ReloadingapackageisnotthesameasrefreshingtheNavigationpanel.When
yourefreshtheNavigationpanel,webMethodsDeveloperretrievesafreshcopyof
thecontentsofallthepackagesfromthememorytheIntegrationServer.Whenyou
reloadapackage,theIntegrationServerremovestheexistingpackageinformation
frommemoryandloadsnewversionsofthepackageanditscontentsintoits
memory.
To reload a package
1
IntheNavigationpanel,selectthepackageyouwanttoreload.
OntheFilemenu,clickReload Package.
Deleting a Package
Whenyounolongerneedtheservicesandfilesinapackage,youcandeletethepackage.
DeletingapackageremovesthepackageandallofitscontentsfromtheNavigation
panel.
WhenyoudeleteapackagefromDeveloper,theIntegrationServersavesacopyofthe
package.Ifyoulaterwanttorecoverthepackageanditscontents,contactyourserver
administrator.OnlyIntegrationServerAdministratoruserscanrecoverapackage.For
moreinformationaboutrecoveringpackages,seethewebMethodsIntegrationServer
AdministratorsGuide.
Beforeyoudeleteapackage,makesurethat:
Otherusersorotherservicesdonotuse(dependon)theservices,templates,IS
documenttypes,andschemasinthepackage.YoucanusetheFind Dependents
commandtoidentifyotherservicesthataredependentonaserviceinapackagethat
youwanttodelete.Formoreinformation,seeFindingDependentsandReferences
onpage 60.
Allelementsinthepackagethatyouwanttodeleteareunlocked,orlockedbyyou.If
thepackagecontainselementsthatarelockedbyothersorsystemlocked,youcannot
deletethepackage.
77
To delete a package
1
IntheNavigationpanel,selectthepackageyouwanttodelete.
OntheEditmenu,clickDelete.
IntheNavigationpanel,selectthepackageyouwanttoexport.
OntheFilemenu,clickExport.DeveloperdisplaystheExportTodialogbox.
Selectthelocationonyourharddrivewhereyouwanttheexportedpackagetoreside.
ClickSave.
ThisexportsthepackagetoaZIPfileandsavesitonyourharddrive.TheZIPfilecan
thenbepublishedonanotherserver.
To export an element
IntheNavigationpanel,selectthefolderorelementthatyouwanttoexport.
OntheFilemenu,clickExport.DeveloperdisplaystheExportTodialogbox.
Selectthelocationonyourharddrivewhereyouwanttheexportedpartialpackageto
reside.ClickSave.
ThisexportsthefolderorelementtoaZIPfileandsavesitonyourharddrive.The
ZIPfilecanthenbeunzippedintothensdirectoryofapackageontheserver.
78
Important! Whenyouchangetheversionnumberofapackage,makesurethatyou
updatethepackagedependenciesforotherpackagesthatdependontheearlier
versionofthispackage.
Tip! AssignandchangepackageversionnumbersthroughDeveloperonlywhenthe
packagesareinadevelopmentstage.Toavoiddifficultiesinstallingpackagereleases,
donotchangeversionnumbersonpackagesyoureceivefromtradingpartners,
packagestowhichyousubscribe,orpackagesinstalledwiththeIntegrationServer.
To assign a version number to a package
1
IntheNavigationpanel,selectthepackagetowhichyouwanttoassignaversion
number.
OntheFilemenu,clickOpen.
Intheeditor,clickthepackagesSettingstab.
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,seethewebMethodsIntegrationServer
AdministratorsGuide.
79
IntheNavigationpanel,selectthepackageforwhichyouwanttoviewapatch
history.
OntheFilemenu,clickOpen.
Intheeditor,clickthepackagesSettingstabandreviewthefieldsunderPatch history.
80
This field...
Specifies...
Name
Thenameofthepackage.
Version
Theversionnumberofthepackage.Auserassignsaversion
numberwhentheycreateapackagerelease.Bydefault,Developer
assignsversion1.0toanewpackage.
This field...
Specifies...
Build
Thebuildnumberofthepackage.Thebuildnumberisageneration
numberthatauserassignstoapackageeachtimethepackageis
released.Forexample,ausermightreleaseversion1.0ofthe
Financepackagetentimesandassignbuildnumbers1,2,310to
thedifferentreleasesorbuildsofthepackage.
TheBuildnumberisnotthesameastheVersionnumber.One
versionofapackagemighthavemultiplebuilds.
Description
Abriefdescriptionofthepackagewrittenbytheuserwhocreated
thepackagerelease.
Time
Thetimeatwhichthepackagerelease(patch)wascreated.
JVM Number
TheversionoftheJVM(Javavirtualmachine)requiredtorunthe
package.
Publisher
Thenameofthepublishingserverthatcreatedthepackagerelease.
Patch
Number
Thepatchnumbersincludedinthisreleaseofthepackage.
81
Important! OtherwebMethodscomponentsmightincludepackagesthatregisternew
typesofelementsinDeveloper.Youshouldsaveinstancesofthesenewelementtypes
inpackagesthatlisttheregisteringpackageasapackagedependency.Theregistering
packageneedstoloadbeforeyourpackagessothatDevelopercanrecognize
instancesofthenewelementtype.Forexample,ifyoucreatenewflatfileschemas,
youshouldsavetheflatfileschemasinpackagesthatidentifytheWmFlatFile
packageasapackagedependency.
To identify package dependencies for a package
1
IntheNavigationpanel,selectthepackageforwhichyouwanttospecifypackage
dependencies.
OntheFilemenu,clickOpen.
Intheeditor,clickthepackagesSettingstab.
UnderPackage Dependencies,click
IntheEnterInputValuesdialogbox,enterthefollowinginformation:
In this field...
Specify...
Package
ThenameofthepackageyouwantIntegrationServertoloadbefore
thepackageselectedintheNavigationpanel.
Version
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.
ClickOK.
OntheFilemenu,clickSave.
Important! Onlyoneversionofapackagecanbeinstalledatonetime.Iftheavailable
versionofthepackagespecifiedinthepackagedependencyisnotthecorrectversion,
theIntegrationServerdoesnotloadthedependentpackage.TheIntegrationServer
writesadependencyloaderrorforthedependentpackagetotheserverlog.
82
Important! Makesurethatyoudonotcreatecircularpackagedependencies.For
example,ifyouidentifyFinanceUtilasadependentpackagefortheFinance
package,donotidentifyFinanceasadependentpackagefortheFinanceUtil
package.Ifyoucreatecircularpackagedependencies,neitherpackagewillloadthe
nexttimeyoustarttheIntegrationServer.
IntheNavigationpanel,selectthepackageforwhichyouwanttoremoveapackage
dependency.
OntheFilemenu,clickOpen.
Intheeditor,clickthepackagesSettingstab.
UnderPackage Dependencies,selectthepackagedependencyyouwanttoremove.
Click
OntheFilemenu,clickSave.
83
Startupservicesareusefulforgeneratinginitializationfilesorassessingandpreparing
(forexample,settinguporcleaningup)theenvironmentbeforetheserverloadsa
package.However,youcanuseastartupserviceforanypurpose.
Tip! Ifastartupserviceinvokesaserviceinanotherpackage,makesuretoidentifythe
otherpackageasapackagedependencyforthepackagecontainingthestartup
service.
84
IntheNavigationpanel,selectthepackagetowhichyouwanttoassignstartup,
shutdown,orreplicationservices.
OntheFilemenu,clickOpen.
Intheeditor,clickthepackagesStartup/Shutdown/Replication Servicestab.
Toassignastartupservice,underStartup services,selecttheservicefromtheAvailable
Serviceslist,andclick
Repeatthisstepforeachserviceyouwanttoaddasastartupserviceforthepackage.
Note: AservicethatyoujustcreateddoesnotappearintheAvailable Serviceslistif
youhavenotrefreshedyoursessionontheserversinceyoucreatedtheservice.
5
Repeatthisstepforeachserviceyouwanttoaddasashutdownserviceforthe
package.
85
Toaddareplicationservice,dothefollowing:
a
UnderReplication Services,click
IntheEnterInputValuesdialogbox,intheServicefield,dooneofthefollowing:
Typetheservicenameintheformat:folderName:serviceName
Click tonavigatetoandselecttheservicethatyouwanttouseasa
replicationservice.
ClickOK.
Repeatthesestepsforeachserviceyouwanttoaddasareplicationservice.
IntheNavigationpanel,selectthepackageforwhichyouwanttoremovestartup,
shutdown,orreplicationservices.
OntheFilemenu,clickOpen.
Intheeditor,clickthepackagesStartup/Shutdown/Replication Servicestab.
Dooneormoreofthefollowing:
Toremoveastartupservice,underStartup services,selecttheserviceyouwantto
removefrom Selected serviceslist,andclick
Toremoveashutdownservice,underShutdown services,selecttheserviceyou
wanttoremovefromtheSelected serviceslist,andclick
Toremoveareplicationservice,underReplication services,selectthereplication
serviceyouwanttoremoveandclick
86
Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
Locking Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
Unlocking Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
101
87
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,seethewebMethodsVersionControlSystemIntegrationDevelopersGuideinthe
webMethods_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.
ElementsareshowninthefollowingwaysinDeveloper:
Element
88
Status
Can I edit?
Notlocked
No
Lockedbyyou
Yes
N/A
Element
Status
Can I edit?
Lockedbyanotheruser
No
Contacttheusertounlock.
Lockedbythesystem
No
Contacttheserver
administratortounlock.
89
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 91.
90
WhenyoulockaJavaorC/C++service,DeveloperlocksallotherJavaorC/C++
serviceswithinthefolder.Fordetails,seeLockingJavaandC/C++Serviceson
page 91.
Youcannotlockalistenerorconnectionelement.
To lock elements
1
IntheNavigationpanel,selecttheelementsthatyouwanttolock.
91
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.
92
Whenviewinganelementslockstatus,keepthefollowingpointsinmind:
Iftheelementhasbeensystemlockedsinceyoulastreloadedthepackage,Developer
willnotshowthesystemlockstatusintheLockingStatusdialogboxuntilyoureload
thepackage.
Whenanotheruserunlocksanelement,youmustrefreshtheNavigationpanelto
reflecttheupdatedstatus.Similarly,whentheserveradministratorremovesasystem
lockfromanelement,youmustreloadthepackageinwhichtheelementresidesto
reflecttheupdatedstatus.
To view lock status for an element
1
IntheNavigationpanel,selecttheelementforwhichyouwanttoviewthestatus.
93
YoucanunlockindividualelementsfromthisdialogboxbypressingtheCTRLkeyas
youclickeachelementandthenclickingUnlock.Youcanunlockallelementsbyclicking
Unlock All.Formoreinformationaboutunlockingelements,seeUnlockingElementson
page 94.
Unlocking Elements
Afteryoueditanelementandsavechangestotheserver,youshouldunlockittomakeit
availabletootherusers.Thereareseveralwaystounlockelements,dependingon
whetheryouareamemberoftheDevelopersACLortheAdministratorsACL.Ifyouare
adeveloper,youcanunlockelementsinDeveloper.Ifyouareanadministrator,youcan
unlockelementsintheIntegrationServerAdministratoraswellasinDeveloper.
94
IntheNavigationpanel,selecttheelementsthatyouwanttounlock.
Note: Besuretosavechangestotheelementsbeforeyouattempttounlockthem.
OntheFilemenu,clickUnlock.
Iftheelementsyouwanttounlockcontainunsavedchanges,Developeralertsyou
thattheelementscannotbeunlockeduntilyousavethechanges.ClickOKtoclosethe
alertdialogbox.Then,savethechangesandrepeattheunlockaction.
Ifoneoftheelementsyouselectedtounlockisapublishabledocumenttype
associatedwithanadapternotification,andyoudidnotalsoselecttheadapter
notification,Developeralertsyouthattheelementscannotbeunlocked.ClickOKto
closethealertdialogbox.Then,reselecttheelements(includingtheappropriate
adapternotifications)andrepeattheunlockaction.
TheNavigationpanelrefreshesandthegreencheckmarknexttotheelementdisappears.
Tip! Youcanalsounlockelementsusingthefollowingtechniques:
Tounlockanelementthatisopenintheeditor,rightclicktheelementstabortitle
barandthenclickUnlock.
Tounlockallelementstowhichyouownthelock,usetheToolsMy Locked
Elementscommand.
IntheIntegrationServerAdministrator,underPackages,clickManagement.
95
ClickUnlock Elements.Thefollowingscreenappears.
Unlock Selected Elements screen
96
Selecttheelementsthatyouwanttounlock(afterinformingusersifnecessary)and
clickUnlock Selected Elements.
DevelopersusingwebMethodsDevelopershouldrefreshtheirNavigationpanelto
updatetheirviewofthelockstatusofallelements.
Important! Ifyoureceiveafailedtounlockmessage,itmeansthattheserverfilesfor
alockedelementweredeletedfromtheserver.UsetheSync to Name Spacecommand
toupdatetheIntegrationServerAdministratorsviewoflockedelements.
Ifyoudonotknowthenamesoftheserverfilesthatcorrespondtotheelement,use
theLock StatuscommandinDeveloper.Fordetails,seeViewinganElements
CorrespondingServerFilesonpage 98.
Ontheserversfilesystem,removethereadonlypropertiesfromthefilesthat
correspondtotheelementtomakethefileswritable.
ReloadthepackageontheIntegrationServerthatcontainstheelement.Theupdated
statusisreflectedintheIntegrationServerAdministrator.RefreshtheNavigation
panelinDevelopertoviewtheupdatedstatus.
Important! Ifyouaccidentallyappliedasystemlocktoanelementthatwasalready
lockedbyanotheruser,removethesystemlockbutDO NOThavetheuserreloadthe
packageinwebMethodsDeveloper.(ReloadingthepackageinDeveloperwill
discardtheiredits.)Theusercanthensavetheelementwithoutlosingthechangeshe
orshemadetoitwhileyouhadtheelementsystemlocked.
97
IntheNavigationpanel,selecttheelementsforwhichyouwanttoviewtheserverfile
names.
OntheFilemenu,clickLock Status.
Thefollowingdialogboxshowstheserverfilesassociatedwithaflowservicenamed
ApplyCreditMemo.Theseserverfilesaresystemlocked(thatis,theyarenotwritableon
theserver).
Viewing server files for element ApplyCreditMemo
Note: Afteraserveradministratorremovesasystemlockfromanelement,you
mustreloadthepackageinwhichtheelementresidestoreflecttheunlocked
status.
98
To automatically unlock flow services, IS document types, and specifications after saving
To
OntheToolsmenu,clickOptions.TheOptionsdialogboxappears.
ClickGeneral.
ClickOK.
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:
Aserver
Afolderorpackageanditscontents
Apackageandanyotherelement
Anadapternotificationrecord
99
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
Removeyourlockontheelement.
Locktheelement.
EdittheACLassignedforWriteaccesstotheelement,togiveyouaccess.
Unlocktheelement.
Youcanthensaveyourchangestotheelement.
100
Other Problems
I cant create a new Java or C service.
AnotherJavaorCserviceislockedinthefolderinwhichyouwanttocreatethenew
service,oryoudonothaveWriteaccesstoallJavaorCservicesinthefolder.Allofthem
mustbeunlockedorlockedbyyouandyoumusthaveWriteaccesstoaddanewJavaor
Cservicetothesamefolder.SeeLock/UnlockProblemsonpage 99.
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.
101
Where is the lock information stored (such as names of elements that are locked, when they were
locked, etc.)?
TheinformationisstoredinternallyinRepositoryversion4,andintheVCSrepository,if
youareusingVCS.
Important! ItisnotrecommendedthatyouuseCooperativeDevelopmentfunctionality
inanIntegrationServercluster.Lockinginformationforelementscouldbe
inadvertentlysharedwithanotherIntegrationServerinthecluster.Useastandalone
IntegrationServer,notacluster,whiledevelopingtoeliminatetheseCooperative
Developmentproblems.
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).
102
Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
104
106
109
111
Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
112
103
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.
Executecontrolswhetherausercanexecuteaservice.
Formoredetailsaboutthesetypesofaccess,seethewebMethodsIntegrationServer
AdministratorsGuide.
104
TheserverdoesnotchecktheACLsofanyoftheinternallyinvokedservices(those
servicesinvokedbytheexternallyinvokedservice).However,youcansetupthesecurity
settingsforaservicesothatwebMethodsIntegrationServercheckstheACLassignedto
theserviceeverytimeitisinvoked,whetherdirectlybyaclientorbyanotherservice.For
details,seeThePermissionsPropertiesonpage 107.
ThefollowingdiagramillustratesthepointsatwhichACLcheckingoccurswhenaclient
requestsaservice.
ACL checking when a client requests a service
webMethods Integration Server
Client
Purch:SubmitPO
Purch:SubmitPO
INVOKE Purch:LogPO
INVOKE Purch:CreditAuth
INVOKE Purch:SendPO
Stage
2
3
4
Purch:LogPO
Purch:CreditAuth
Purch:SendPO
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.
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.
105
MakesurethattheACLyouwanttoassignexistsontheIntegrationServer.Ifnot,
createtheACLintheIntegrationServerAdministrator.Fordetails,seethe
webMethodsIntegrationServerAdministratorsGuide.
IntheNavigationpanel,clickthepackageorfoldertowhichyouwanttoassignan
ACL.
OntheFilemenu,clickOpen.
106
Intheeditor,clickthetitlebarofthepackageorfoldertogiveitthefocus.
InthePermissionscategoryofthePropertiespanel,selecttheACLsthatyouwantto
assignforeachlevelofaccess.Fordetails,seeThePermissionsPropertieson
page 107.
Important! ForList,Read,andWriteaccess,youcanonlyassignACLsofwhichyou
areamember.IfyoucannotassignanACLtoanelementforList,Read,orWrite
access,youprobablyarenotamemberofausergroupintheAllowedlistofthat
ACL.Toverify,usetheToolsACL Informationcommand.Toobtainaccesstoan
ACL,contactyourserveradministrator.
Savetheelement.Ifanerrormessageappears,checktomakesurethatyouarea
memberofeachACLthatyouassignedtotheelement.
To assign an ACL to other elements in the Navigation panel
To
MakesurethattheACLyouwanttoassignexistsontheIntegrationServer.Ifnot,
createtheACLintheIntegrationServerAdministrator.Fordetails,seethe
webMethodsIntegrationServerAdministratorsGuide.
OpentheelementtowhichyouwanttoassignanACL.
InthePermissionscategoryofthePropertiespanel,selecttheACLsthatyouwantto
assignforeachlevelofaccess.Fordetails,seeThePermissionsPropertieson
page 107.
Important! ForList,Read,andWriteaccess,youcanonlyassignACLsofwhichyou
areamember.IfyoucannotassignanACLtoanelementforList,Read,orWrite
access,youprobablyarenotamemberofausergroupintheAllowedlistofthat
ACL.Toverify,usetheToolsACL Informationcommand.Toobtainaccesstoan
ACL,contactyourserveradministrator.
Savetheelement.Ifanerrormessageappears,checktomakesurethatyouarea
memberofeachACLthatyouassignedtotheelement.
107
Field / Button
Description
List ACL
UsersintheAllowedlistofthisassignedACLcanseethattheelement
existsandviewtheelementsmetadata(input,output,etc.).
Read ACL
UsersintheAllowedlistofthisassignedACLcanviewthesourcecode
andmetadataoftheelement.
Write ACL
UsersintheAllowedlistofthisassignedACLcanlock,edit,rename,
anddeletetheelement.
Execute ACL
UsersintheAllowedlistofthisassignedACLcanexecutetheservice.
Thislevelofaccessonlyappliestoservices.
Enforce
execute ACL
Note: YoucanviewtheusersandgroupsthatcomposetheACLsontheIntegration
ServertowhichyouareconnectedbyusingtheToolsACL Informationcommand.This
informationisreadonly;toeditACLs,users,andgroups,usetheIntegrationServer
Administrator.
108
109
Field
Description
ACLs
TheACLsdefinedontheIntegrationServertowhichyouare
connected.TheseincludethedefaultACLsthatwereinstalledwith
theserver.
User Group
Association for
[ACL]
Allowed.Theusergroup(s)thathavebeenexplicitlyallowedto
accessthepackages,folders,services,orotherelements
associatedwiththisACL.
Denied.Theusergroup(s)thathavebeenexplicitlydeniedaccess
tothepackages,folders,services,orotherelementsassociated
withthisACL.
Resulting Users
for [ACL]
110
ThenamesofusersthattheACLauthorizes,giventhecurrent
settingsintheAllowedandDeniedlists.Theserverbuildsthislistby
lookingatthegroupstowhicheachuserbelongsandcomparing
thattothegroupstowhichtheACLallowsordeniesaccess.For
detailsonhowtheserverdeterminesaccess,seethewebMethods
IntegrationServerAdministratorsGuide.
111
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 99inChapter 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.
I receive an exception when I try to lock an element.
Theelementmaybelockedbysomeoneelse,systemlocked(markedreadonlyonthe
server),oryoumaynothaveWriteaccess.RefreshtheNavigationpanel.Ifalockisnot
shownbutyoustillcannotlocktheelement,reloadthepackage.Inaddition,makesure
112
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.
113
114
Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
116
A Process Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
120
120
122
127
129
135
137
140
149
115
Basic Concepts
Tosuccessfullybuildaflowservice,youshouldunderstandthefollowingbasicconcepts
andterms.
Getsapurchaseordersubmittedbyabuyer
Logstheorderinanaudittrailfile
Performsacreditcheck
Poststheordertotheorderingsystem
Purch:SubmitPO
Purch:SubmitPO
INVOKE Purch:GetOrders
INVOKE Purch:LogOrder
INVOKE Purch:CreditAuth
INVOKE Purch:PostPO
...which performs a
sequence
of four services
Anyservicecanbeinvokedwithinaflow(includingotherflowservices).Forinstance,a
flowmightinvokeaservicethatyoucreate,anyofthebuiltinservicesprovidedwiththe
webMethodsIntegrationServer,and/orservicesfromawebMethodsaddonproduct
suchasthewebMethodsJDBCAdapter.
YoucreateflowservicesusingDeveloper.TheyaresavedinXMLfilesonwebMethods
IntegrationServer.
Important! AlthoughflowservicesarewrittenasXMLfiles,theyaremaintainedina
formatthatcanonlybecreatedandunderstoodbyDeveloper.Youcannotcreateor
editaflowservicewithatexteditor.
116
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
Executesaspecifiedservice.Formoreinformationaboutthis
step,seeTheINVOKESteponpage 157.
Data-Handling Steps
MAP
Performsspecifiededitingoperationsonthepipeline(suchas
mappingvariablesinthepipeline,addingvariablestothe
pipeline,anddroppingvariablesfromthepipeline).Formore
informationaboutthisstep,seeTheMAPSteponpage 183.
117
Control Steps
BRANCH
Executesaspecifiedflowstepbasedonthevalueofaspecified
variableinthepipeline.Formoreinformationaboutthisstep,
seeTheBRANCHSteponpage 160.
LOOP
Executesasetofflowstepsonceforeachelementina
specifiedarray.Formoreinformationaboutthisstep,seeThe
LOOPSteponpage 178.
REPEAT
Reexecutesasetofflowstepsuptoaspecifiednumberof
timesbasedonthesuccessfulornonsuccessfulcompletionof
theset.Formoreinformationaboutthisstep,seeThe
REPEATSteponpage 170.
SEQUENCE
Groupsasetofflowstepsintoaseries.TheSEQUENCEstepis
implicitinmostflowservices(thatis,thestepsinaflow
servicearetreatedasaseries).However,attimesitis
necessarytoexplicitlygroupasubsetofflowstepsusing
SEQUENCEsothattheycanbetreatedasaunit.Formore
informationaboutthisflowstep,seeTheSEQUENCEStep
onpage 176.
EXIT
Controlstheexecutionofaflowstep(forexample,abortan
entireflowservicefromwithinaseriesofdeeplynestedsteps,
throwanexceptionwithoutwritingaJavaservice,orexita
LOOPorREPEATwithoutthrowinganexception).Formore
informationaboutthisstep,seeTheEXITSteponpage 181.
SeeAppendix A,webMethodsFlowStepsforadetaileddescriptionofeachtypeof
flowstepprovidedbythewebMethodsflowlanguage.Forinformationaboutbuilding
eachtypeofflowstep,seeChapter 7,InsertingFlowSteps.
118
The pipeline holds the input and output for a flow service
Flow Service
The Pipeline
input
ONum:46-77135
Name:Kings Sport
INVOKE Purch:LogPO
Phone:201-887-1544
output
TNum:128824993554
input
Acct:128824993554
Total:5732.78
INVOKE Purch:CreditAuth
Qty:20
output
AuthNum:TW99123554
input
INVOKE Purch:ConvertDate
Date:04/04/99
Item:PK8801-NS
output
OrderDate:19990404
input
Ship:UPS Ground
Terms:30N
INVOKE Purch:SendPO
Freight:65.00
output
Status:Received
Whenyoubuildaflowservice,youuseDevelopertospecifyhowinformationinthe
pipelineismappedtoandfromservicesintheflow.
Output
Name
Data Type
Name
Data Type
AcctNum
String
AuthCode
String
OrderTotal
String
Partoftheprocessofcreatingaserviceisdeclaringitsinputandoutputparameters(that
is,explicitlyspecifyingthefieldsitexpectsasinputandproducesasoutput).
119
A Process Overview
Buildingaflowserviceisaprocessthatinvolvesthefollowingbasicstages:
Stage 1
Stage 2
Stage 3
Stage 4
Stage 5
Stage 6
Stage 7
Theremainingsectionsinthischapterandthefollowingchaptersprovidedetailed
informationabouteachstage.
120
Make sure the folder in which you want to create the service already exists and that you have
Write ACL access to it.Ifthefolderdoesnotalreadyexist,createitusingDeveloper.For
informationaboutcreatingfolders,seeCreatingNewElementsonpage 41.For
informationaboutACLpermissions,seeChapter 5,AssigningandManaging
Permissions.
Oncethepackageandfolderareinplace,usetheFileNewcommandtostarttheprocess
ofcreatinganewservice.Fordetails,seeCreatingNewElementsonpage 41.
To...
Empty Flow
Generateaflowservicethatdoesnothaveanylogic.
AutomaticallygenerateaflowservicethatinvokestheloadXMLNode
service(whichgetsadocumentfromaURLthatyouspecify)and
thequeryXMLNodeservice(whichextractsaspecifiedsetofelements
fromthedocumentreturnedbyloadXMLNode).
ForadditionalinformationabouttheloadXMLNodeandqueryXMLNode
services,seetheXMLServicesDevelopersGuide.
Receive an XML
Document
AutomaticallygenerateaservicethatreceivesanXMLnodeas
input.IfyouspecifytheformatbyprovidingaDTDorXMLSchema
definition,webMethodsDevelopermapstheincomingdocumentto
itscorrespondingISdocumenttypestructure.
Important! Theflowstepsproducedbytheseoptionsarenodifferentthanthose
producedbymanuallyinsertingINVOKEloadXMLNodeandINVOKEqueryXMLNode
stepsinaflowservice.AfterDeveloperinsertsthesetofdefaultstepsintoyourflow
service,youcaneditthedefaultstepsandinsertadditionalstepsjustasyouwould
anyordinaryflowservice.
121
To insert a/an...
INVOKEstep
MAPstep
BRANCHstep
LOOPstep
REPEATstep
SEQUENCEstep
EXITstep
Linkdatatoand/orfromtheserviceusingDevelopersPipelinetab.
AssigndefaultinputvaluestotheserviceonthePipelinetab.
Validatetheinputandoutputvaluesoftheserviceatruntime.
TesttheserviceinDeveloperandenterinitialinputvalues.
Generateskeletoncodeforinvokingtheservicefromaclient.
Declaring parameters makes the input and output requirements of your service known to other
developerswhomaywanttocallyourservicefromtheirprograms.
Forthesereasons,westronglyrecommendthatyoumakeitapracticetodeclareinput
andoutputparametersforeveryservicethatyoucreate.
122
123
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.
124
...and output
parameters on
this side.
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:
BytypingthefullyqualifiednameoftheISdocumenttypeintheInputorOutput
field
Byclicking
BydragginganISdocumenttypeonthesameserverfromtheNavigationpanel
totheboxbelowtheValidate inputorValidate outputcheckboxes
toselectanISdocumenttypefromalist
Withthefirsttwomethods,thevariableswithintheISdocumenttypebecomethe
inputoroutputsignaturefortheservice.Youcannotadd,modify,ordeletethe
variablesonthathalfofthetab.Withthethirdmethod,theISdocumenttype
125
referencebecomesthetopleveldocumentinthesignature.Youcannotmodifyor
deletethevariablesthatarecontainedwithinthereferencedISdocumenttypebut
youcanaddothervariablestothathalfofthetab.
Manually insert input and output variables.Use
tospecifythedatatypeandnamefor
eachinputandoutputvariablefortheservice.
To declare input and output parameters for a service
1
Opentheserviceforwhichyouwanttodeclareinputandoutputparameters.
Intheeditor,clickthe Input/Outputtabforthatservice.
Ifyouwanttoreferenceaspecification,dothefollowing:
a
Skiptherestofthisprocedure.
Important! Whenaspecificationisassignedtoaservice,youcannotadd,delete,or
modifythedeclaredvariablesusingtheservicesInput/Outputtab.
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.
126
Foreachinputoroutputvariablethatyouwanttodefine,dothefollowing:
a
Selectthehalfofthe Input/Outputtab(InputorOutput)whereyouwanttodefinethe
variablebyclickinganywhereinthathalfslargewhitetextbox.
Click
TypethenameofthevariableandpressENTER.
onthetoolbarandselectthetypeofvariablethatyouwanttodefine.
Withthevariableselected,setvariablepropertiesandapplyconstraintsinthe
Propertiespanel(optional).
Ifthevariableisadocumentoradocumentlist,repeatsteps bdtodefineandset
thepropertiesandconstraintsforeachofitsmembers.Use
memberbeneaththedocumentordocumentlistvariable.
toindenteach
Ifyouwanttoenteranynotesorcommentsabouttheinputandoutputparameters,
typeyourcommentsontheCommentstab.
127
Opentheservicetowhichyouwanttoassignanoutputtemplate.
Intheeditor,clicktheservicestitlebartogivetheservicethefocus.
IntheOutput templatecategoryofthePropertiespanel,dooneofthefollowingto
updatetheNamefield:
Ifyouwanttoassignanewoutputtemplatetotheservice,typethenameofthe
newoutputtemplateoracceptthesystemdefaultoutputtemplatenameof
FolderName_ServiceName.
Ifyouwanttoassignanexistingoutputtemplatetotheservice,typethefilename
oftheexistingoutputtemplate.Youdonotneedtoincludethepathinformation
orthefilenameextension.
Important! Makesuretheexistingoutputtemplateresidesinthe
IntegrationServer_directory\packages\packageName\templatesdirectory,where
packageNameisthesamepackageinwhichtheserviceislocated.
IntheTypelist,dooneofthefollowingtospecifytheformatfortheoutputtemplate:
To...
Select...
AssignanHTMLoutputtemplatetotheservice
html
AssignanXMLoutputtemplatetotheservice
xml
AssignaWMLoutputtemplatetotheservice
wml
AssignanHDMLoutputtemplatetotheservice
hdml
Note: TheTypeyouselectdeterminestheextensionfortheoutputtemplatefile
(*.html,*.xml,*.wml,or*.hdml).IncaseswheretheoutputisreturnedtoaWeb
browser,theTypealsodeterminesthevalueoftheHTTPContentTypeheader
field(forexample,text/html,text/xml,text/vnd.wap.wml,ortext/x
hdml).
5
Dooneofthefollowing:
Ifyouassignedanewoutputtemplatetotheservice,clickNewtocreatethe
outputtemplate.
Ifyouassignedanexistingoutputtemplatetotheserviceandyouwanttoeditthe
template,clickEdit.
SelecttheencodingusedtocreatethetemplatefileandclickOK.(Bydefault,
DeveloperusesUTF8tocreateoutputtemplatefiles.)
128
Inthetemplatedialogbox,createoredittheoutputtemplatebytypingHTML,XML,
WML,orHDMLcontent,and/orbyinsertingtemplatetags.Formoreinformation
aboutcreatinganoutputtemplate,seetheDynamicServerPagesandOutputTemplates
DevelopersGuide.
7
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.
ClickSave.
Important! AftereditingatemplateinDeveloper,donotedititoutsideofDeveloper.
Thiswillaffecttheinterpretationoftheencodingsettingsandmayresultin
charactersbeinglostormisinterpreted.
129
Important! TheRuntimepropertiesonthePropertiespanelshouldonlybesetby
someonewhoisthoroughlyfamiliarwiththestructureandoperationoftheselected
service.Improperuseoftheseoptionscanleadtoaservicefailureatruntimeand/or
thereturnofinvaliddatatotheclientprogram.
Opentheservicethatyouwanttoconfigure.
Intheeditor,clicktheservicestitlebartogivetheservicethefocus.
IntheRuntimecategoryofthePropertiespanel,dooneofthefollowingtosetthe
Statelessproperty:
130
Iftheserviceisaselfcontained,atomicunitofworkanddoesnotneedaccessto
stateinformation,selectTrue.Theserverwillremovetheclientsession
immediatelyaftertheserviceexecutes,andnosessioninformationwillbe
maintainedfortheservice.
Iftheserviceispartofamultiservicetransactionorifyouareunsureofitsstate
requirements,selectFalse.Theserverwillbuildandmaintainasessionobjectfor
thisservice.
131
apricelistforofficeequipmentifthepricesinthelistvarydependingontheclient
whoinitiallyconnectstothedatasource.
Services that retrieve information from frequently updated sources. Ifaserviceretrievesdata
fromadatasourcethatisupdatedfrequently,thecachedresultscanbecome
outdated.Donotcacheservicesthatretrieveinformationfromsourcesthatare
updatedinrealtimeornearrealtime,suchasstockquotesystemsortransactional
databases.
Services that are invoked with unique inputs.Ifaservicehandlesalargenumberofunique
inputsandveryfewrepeatedrequests,youwillgainlittlebycachingitsresults.You
mightevendegradeserverperformancebyquicklyconsuminglargeamountsof
memory.
132
Opentheserviceforwhichyouwanttoconfigurecaching.
Intheeditor,clicktheservicestitlebartogivetheservicethefocus.
IntheRuntimecategoryofthePropertiespanel,setCache resultstoTrue.
IntheCache expirefield,typeanintegerrepresentingthelengthoftime(inminutes)
thatyouwanttheresultsforthisservicetobeavailableincache.
Ifyouwanttouseprefetch,dothefollowing:
a
SetPrefetchtoTrue.
InthePrefetch activationproperty,specifytheminimumnumberofhitsneededto
activatetheuseofprefetch.
133
Opentheservicethatyouwanttoconfigure.
Intheeditor,clicktheservicestitlebartogivetheservicethefocus.
IntheRuntimecategoryofthePropertiespanel,dooneofthefollowingtospecifythe
Execution Localeproperty:
134
Select...
To...
UsetheserversdefaultJVMlocale.
Usetheclientlocale.
Usenolocalepolicy.
[root locale]
UsetheneutralorPOSIXlocale.
Useaspecificlocale.
Defineacustomlocale.
Do the following...
Language
SelectoneoftheISO639codesthatrepresentthelanguage.(2
or3lettercodes)
Extended Language
Forfuturerelease.
Script
Optional.Selectoneofthe4letterscriptcodesintheISO
15924registry.
Region
Optional.SelectoneoftheISO31662countrycodes.
IANA Variant
Optional.Addorremoveavariantcoderegisteredbythe
IANA.
ClickOK.TheIntegrationServerwillexecutetheserviceinthespecifiedlocale.
135
Note: Ifserviceauditingisalsoconfiguredfortheservice,theIntegrationServeradds
anentrytotheauditlogforeachfailedretryattempt.Eachoftheseentrieswillhavea
statusofRetriedandanerrormessageofNull.However,iftheIntegrationServer
makesthemaximumretryattemptsandtheservicestillfails,thefinalauditlogentry
fortheservicewillhaveastatusofFailedandwilldisplaytheactualerrormessage.
136
TocatchatransienterrorandrethrowitasanISRuntimeException,theservicemust
dooneofthefollowing:
Iftheserviceisaflowservice,theservicemustinvoke
pub.flow:throwExceptionForRetry.Formoreinformationaboutthe
pub.flow:throwExceptionForRetry,seethewebMethodsIntegrationServerBuiltIn
ServicesReference.
IftheserviceiswritteninJava,theservicecanuse
com.wm.app.b2b.server.ISRuntimeException().Formoreinformationabout
constructingISRuntimeExceptionsinJavaservices,seewebMethodsIntegration
ServerJavaAPIReferenceforthecom.wm.app.b2b.server.ISRuntimeException
class.
Theserviceretryperiodmustbelessthanthemaximumretryperiod.Formore
information,seeAbouttheMaximumRetryPeriodonpage 136.
To configure service retry
1
Opentheserviceforwhichyouwanttoconfigureserviceretry.
Intheeditor,clicktheservicestitlebartogivetheservicethefocus.
UndertheRetry on ISRuntimeExceptioncategoryofthePropertiespanel,intheMax
attemptsproperty,specifythenumberoftimestheIntegrationServershouldattempt
toreexecutetheservice.Thedefaultis0,whichindicatesthattheIntegrationServer
doesnotattempttoreexecutetheservice.
IntheRetry intervalproperty,specifythenumberofmillisecondstheIntegrationServer
shouldwaitbetweenretryattempts.Thedefaultis0milliseconds,whichindicates
thattheIntegrationServerreexecutestheserviceimmediately.
OntheFilemenu,clickSave.
Tip! Youcaninvokethepub.flow:getRetryCountservicetoretrievethecurrentretrycount
andthemaximumspecifiedretryattempts.Formoreinformationaboutthisservice,
seethewebMethodsIntegrationServerBuiltInServicesReference.Formoreinformation
aboutbuildingaservicethatretries,seeConfiguringServiceRetryonpage 135.
137
specifyingthenameofthecollectiontowhichitbelongs,similartothewayinwhich
astateorprovincenameservestodistinguishcitieswiththesamename(forexample,
Springfield,Illinois,versusSpringfield,Ontario).
LikenamespacesinXML,thenamespaceportionofauniversalnameisexpressedas
aURI.Thisnotationassuresuniqueness,becauseURIsarebasedongloballyunique
domainnames.
Thenamespaceportionoftheuniversalnamecanconsistofanycombinationof
charactersthatformavalidabsoluteURI(relativeURIsarenotsupported).For
example,thefollowingareallvalidnamespacenames:
http://www.gsx.com
http://www.gsx.com/gl/journals
http://www.ugmed.ch/rsum
ForacompletedescriptionofwhatmakesupavalidURI,seeRFC2396Uniform
ResourceIdentifiers(URI):GenericSyntaxathttp://www.ietf.org/rfc/rfc2396.txt.
Thelocalnameuniquelyidentifiesaservicewithinthecollectionencompassedbya
particularnamespace.ManywebMethodsusersuseaservicesunqualifiednameas
itslocalname.Underthisscheme,aservicenamedgl.journals:closeGLwouldhavea
localnameofcloseGL.
LocalnamesfollowthesameconstructionrulesasNCNamesinXML.Basically,a
localnamecanbecomposedofanycombinationofletters,digits,orthefollowing
symbols:
.
(period)
(dash)
(underscore)
Additionally,thelocalnamemustbeginwithaletteroranunderscore.Thefollowing
areexamplesofvalidlocalnames:
addCustOrder
authorize_Level1
gnrent
ForspecificrulesrelatingtoNCNames,seeNCNamedefinitionintheNamespaces
inXMLspecificationat http://www.w3.org/TR/1999/RECxmlnames19990114.
Auniversalnamecanbeeitheranexplicitoranimplicituniversalname.
An explicit universal name isauniversalnamethatyouassigntoaservicebyspecifying
bothanamespacenameandalocalnameinthePropertiespanel.
138
Thenamespacenameistheliteralstringhttp://localhost/followedbythefully
qualifiednameofthefolderinwhichtheserviceresidesontheIntegrationServer.
Thelocalnameistheunqualifiednameoftheservice.
Fordetailsonuniversalnames,seetheSOAPDevelopersGuide.
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
Opentheservicewhoseuniversalnameyouwanttoassign,edit,orview.
Intheeditor,clicktheservicestitlebartogivetheservicethefocus.
Ifyouwanttoassignoredittheservicesuniversalname,specifythefollowinginthe
Universal NamecategoryofthePropertiespanel:
In this field...
Specify...
Namespace name
TheURIthatwillbeusedtoqualifythenameofthisservice.You
mustspecifyavalidabsoluteURI.
Local name
Anamethatuniquelyidentifiestheservicewithinthecollection
encompassedbyNamespace name.Thenamecanbecomposedof
anycombinationofletters,digits,ortheperiod(.),dash()and
underscore(_)characters.Additionally,itmustbeginwitha
letterortheunderscorecharacter.
Note: ManywebMethodsusersusetheunqualifiedportionofthe
servicenameasthelocalname.
OntheFilemenu,clickSave.
Note: Ifyoumoveaservice,orafoldercontainingaservice,Developerretainsthe
servicesexplicituniversalname.Ifyoucopyaservice,orafoldercontainingaservice,
Developerdoesnotretaintheservicesexplicituniversalname.
139
Opentheservicewhoseuniversalnameyouwanttodelete.
Intheeditor,clicktheservicestitlebartogivetheservicethefocus.
IntheUniversal NamecategoryofthePropertiespanel,clearthesettingsinthe
Namespace nameandLocal namefields.
OntheFilemenu,clickSave.
Specifies when a
service generates
audit data during
execution.
Keepinmindthatgeneratingauditdatacanimpactperformance.TheIntegrationServer
usesthenetworktosendtheauditdatatotheauditlogandusesmemorytoactuallysave
140
thedataintheauditlog.Ifalargeamountofdataissaved,performancecanbeimpacted.
Whenyouconfigureauditdatagenerationforservices,youshouldbalancetheneedfor
auditdataagainstthepotentialperformanceimpact.
Thefollowingsectionsdescribetheoptionsforgeneratingauditdataandthepotential
performanceimpactofeachoption.
Note: Theauditlogcanbeaflatfileoradatabase.Ifyouuseadatabase,thedatabase
mustsupportJDBC.YoucanusetheIntegrationServertoviewtheauditlogwhether
itisaflatfileoradatabase.Iftheauditlogisadatabase,youcanalsousethe
webMethodsMonitortoviewauditdataandreinvoketheservice.Beforeyou
configureserviceauditing,checkwithyourIntegrationServerAdministratortolearn
whatkindofauditlogexists.Formoreinformationabouttheauditlog,seethe
webMethodsLoggingGuide.
Description
Never
Theservicenevergeneratesauditdata.Selectthisoptionif
youdonotwanttobeabletoauditthisservice.
Theservicegeneratesauditdataonlywhenitisinvoked
directlybyaclientrequestorbyatrigger.Theservicedoes
notgenerateauditdatawhenitisinvokedbyanother
service(thatis,whenitisanestedservice).
Always
Theservicegeneratesauditdataeverytimeitisinvoked.
Selectthisoptioniftheserviceisacriticalservicethatyou
wanttobeabletoauditeverytimeitexecutes.
141
Description
Error only
Theservicegeneratesauditdataonlywhentheserviceendsbecause
ofafailure.Iftheserviceexecutessuccessfully,itwillnotgenerate
auditdata.
Performance Impact:Thisoptionimpactsperformanceonlywhenthe
servicefails.Whenaserviceexecutessuccessfully,thisoptiondoes
notimpactperformance.Thisoptionoffersthesmallestperformance
impactofalltheoptionsunderLog on.
Error and
success
Theservicegeneratesauditdatawhentheservicefinishesexecuting,
regardlessofwhetheritendsbecauseofsuccessorfailure.Theaudit
logwillcontainanentryforeverytimetheservicefinishesprocessing.
Performance Impact:Thisoptionimpactsperformanceeverytimethe
serviceexecutes,whetheritendsbecauseoferrororsuccess.Ifyou
areconcernedonlywithservicesthatfail,considerusingtheError only
optioninstead.
Error, success,
and start
Theservicegeneratesauditdatawhenitbeginsexecutingandwhenit
finishesexecuting.Whentheserviceexecutestocompletion,theaudit
logwillcontainastartentryandanendorerrorentry.
Generally,mostservicesexecutefairlyquickly.Bythetimean
administratorviewstheauditlogusingwebMethodsMonitor,the
auditlogwouldprobablycontainentriesforthestartandendof
serviceexecution.Situationswhereyoumightwanttheserviceto
generateauditdataatthestartandendofserviceexecutioninclude:
Tocheckforthestartoflongrunningservices
Todetectservicehangs.
142
Log on option
Description
Inbothsituations,ifserviceexecutionbeganbutdidnotcomplete,the
auditlogcontainsanentryforthestartoftheservice,butnoentryfor
theendoftheservice.
Performance Impact:OfalltheoptionsunderLog on,thisoption
providesthemostverboseandexpensivetypeofauditlogging.Every
timeitexecutes,theservicegeneratesauditdataattwopoints:the
beginningandtheend.TheIntegrationServermustwritetheaudit
datatotheauditlogtwiceperserviceexecution.Thisrequires
significantlymorediskutilizationthantheError onlyandError and
successoptions.Atmost,theError onlyandError and successoptions
requiretheIntegrationServertowriteauditdataonceperservice
execution.
Note: Theservicegeneratesauditdataonlywhenitsatisfiestheselectedoptionunder
Enable auditingandtheselectedoptionintheLog onproperty.Forexample,if When toplevel service only isselectedandtheserviceisnottherootserviceintheflowservice,it
willnotgenerateauditdata.
143
TheauditlogwillcontaintheinputpipelineforServiceAonlyifitisthetoplevelservice
(invokeddirectlybyaclientoratrigger)andtheserviceendsbecauseoffailure.If
ServiceAisnotthetoplevelserviceorifServiceAexecutessuccessfully,theauditlogwill
notcontainacopyoftheinputpipeline.
Note: Includingthepipelineintheauditlogismorebeneficialwhentheauditlogisa
database.TheIntegrationServercansavethepipelinetoaflatfileauditlog;however,
youwillnotbeabletousethepipelinedatatoreinvoketheserviceorperformfailure
analysis.
ThefollowingtabledescribestheoptionsintheInclude pipeline propertyontheProperties
panel.Keepinmindthatsavingtheinputpipelinetotheauditlogcanimpactthe
performanceoftheIntegrationServer.
Include pipeline
Description
Never
TheIntegrationServerwillneversaveacopyoftheservicesinput
pipelinetotheauditlog.Selectthisoptionifyouareusingaflatfile
fortheauditlogorifyoudonotwanttobeabletoresubmitthe
servicetotheIntegrationServer.
Performance Impact:Thisoptionrequiresminimalnetworkbandwidth
becausetheIntegrationServerneedstosendonlytheauditdata
generatedbytheservicetotheauditlog.
144
Include pipeline
Description
On errors only
TheIntegrationServersavesacopyoftheinputpipelinetotheaudit
logonlywhentheservicegeneratesauditdatabecauseoffailure.
Selectthisoptionifyouwanttousetheresubmissioncapabilitiesof
thewebMethodsMonitortoreinvokeafailedservice.Formore
informationaboutwebMethodsMonitor,seethewebMethods
Monitordocumentation.
Performance Impact:Forsuccessfulserviceinvocations,theOn errors only
optionrequiresminimalnetworkbandwidth.Serviceinvocationsthat
endinfailurerequiremorenetworkbandwidthbecausethe
IntegrationServermustsavetheauditdataandtheinputpipeline.
Theactualnetworkbandwidthneededdependsonthesizeofthe
initialinputpipeline.Alargepipelinecandegradeperformance
becauseitmaynegativelyimpacttherateatwhichthedataissavedto
theauditlog.
Always
TheIntegrationServersavesacopyoftheinputpipelinetotheaudit
logeverytimetheservicegeneratesauditdata.Iftheservice
generatesdataatthestartandendofexecution(Log onissettoError,
success, and start),theinputpipelineissavedwiththeauditlogentry
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
oftheinputpipelinetotheauditlogeverytimeaserviceexecutes.
Theactualnetworkbandwidthneededdependsonthesizeofthe
initialinputpipeline.Alargeinputpipelinecannegativelyimpactthe
rateatwhichthedataissavedtotheauditlog.
Note: Ifyouwantauditeventsgeneratedbyaservicetopassacopyoftheinput
pipelinetoanysubscribedeventhandlers,selectOn errors onlyorAlways.
145
Error Auditing
Inerrorauditing,youusetheauditlogtotrackandreinvokefailedservices.Tousethe
auditlogforerrorauditing,servicesmustgenerateauditdatawhenerrorsoccur,andthe
IntegrationServermustsaveacopyoftheservicesinputpipelineintheauditlog.
WithwebMethodsMonitor,youcanonlyreinvoketoplevelservices(thoseservices
invokeddirectlybyaclientorbyaBroker/localtrigger).Therefore,ifyourintentwith
errorauditingistoreinvokefailedservices,theserviceneedstogenerateauditdataonly
whenitisthetoplevelserviceanditfails.
Tomakesuretheauditlogcontainstheinformationneededtoperformerrorauditing,
selectthefollowingAuditproperties.
For this property...
Enable auditing
Include pipeline
On errors only
Log on
Error only
Tousetheauditlogforerrorauditing,useadatabaseastheauditlog.
Service Auditing
Whenyouperformserviceauditing,youusetheauditlogtotrackwhichservicesexecute
successfullyandwhichservicesfail.Youcanperformserviceauditingtoanalyzethe
auditloganddeterminehowoftenaserviceexecutes,howmanytimesitsucceeds,and
howmanytimesitfails.Tousetheauditlogforserviceauditing,servicesneedto
generateauditdataafterexecutionends.
146
Tomakesuretheauditlogcontainstheinformationneededtoperformserviceauditing,
selectthefollowingAuditproperties.
For this property...
Enable auditing
Include pipeline
Never
Note: Configureaservicetosaveacopyoftheinput
pipelineonlyifyouintendtoreinvoketheserviceusing
theresubmissioncapabilitiesofthewebMethods
Monitor.
Log on
Tousetheauditlogforserviceauditing,youcanuseeitheraflatfileoradatabaseasthe
auditlog.
Enable auditing
Include pipeline
Always
Log on
Tousetheauditlogtoauditforrecovery,useadatabasefortheauditlog.
147
Note: Typically,youwillauditlongrunningservicesinconjunctionwitherror
auditing,serviceauditing,orauditingforrecovery.
Opentheserviceforwhichyouwanttoconfigureserviceauditing.Toconfigure
serviceauditing,youmusthavewriteaccesstotheserviceandownthelockonthe
service.
Intheeditor,clicktheservicestitlebartogivetheservicethefocus.
IntheAuditcategoryofthePropertiespanel,selectanEnable auditingoptiontoindicate
whenyouwanttheservicetogenerateauditdata.
FormoreinformationabouttheEnable auditingoptions,seeEnablingAuditingfora
Serviceonpage 141.
ForInclude pipeline,selectanoptiontoindicatewhentheIntegrationServershould
includeacopyoftheinputpipelineintheauditlog.
Note: Ifyouwantauditeventsgeneratedbythisservicetopassacopyoftheinput
pipelinetoanysubscribedeventhandlers,selectOn errors onlyorAlways.
FormoreinformationabouttheInclude pipelineoptions,includinginformationabout
theperformanceimpact,seeIncludingthePipelineintheAuditLogonpage 143.
ForLog on,selectanoptiontodeterminewhentheservicegeneratesauditdata.
FormoreinformationabouttheLog onoptions,includinginformationaboutthe
performanceimpact,seeSpecifyingWhenAuditDataIsGeneratedonpage 142.
OntheFilemenu,clickSave.
Important! TheoptionsyouselectintheAuditcategoryofthePropertiespanelcanbe
overwrittenatruntimebythevalueofthewatt.server.auditLogserverproperty.
148
Enable auditing
Include pipeline
Log on
None
Never
Never
Brief
Always
Never
Verbose
Always
Always
149
A flow report lets you view all aspects of the flow service at once
Input/Output
parameters
Details of each
flow step
Intheeditor,selecttheservicethatyouwanttoprint.
FromtheFilemenu,clickView as HTML.
Ifyouwanttoprinttheflow,selectyourbrowsersprintcommand.
Note: WhenyouprintaflowserviceasHTML,onlytheflowstepscurrentlyvisiblein
theeditorappearintheresultingHTMLpage.Tofitallofthestepsinaflowservice
intotheeditor(andtherefore,intoasingleHTMLpage),hidetheNavigation,Recent
Elements,Properties,andResultspanelstomaximizetheeditor.
150
152
152
157
160
170
176
178
181
183
151
152
Note: Youmightfindithelpfultodeclaretheinputandoutputparametersforaflow
servicebeforeyouinsertflowsteps.Byfirstdeclaringtheparameters,itisclearwhat
datatheserviceexpectsandwhatvariablesareavailableforuseinflowsteps.
Youinsertflowstepsintoaserviceusingthefollowingtoolbarbuttonsatthetopofthe
editor.(Youcannotdirectlytypeaflowstepintotheeditor.Alleditingisperformed
throughthetoolbar).
To insert a/an...
INVOKEstep
157
MAPstep
183
BRANCHstep
160
LOOPstep
178
REPEATstep
170
153
To insert a/an...
SEQUENCEstep
176
EXITstep
181
Note: Ifyouselectanexistingstepintheeditorbeforeinsertinganewone,Developer
insertsthenewstepbelowtheonethatisselected.Ifyoudonothaveastepselected,
itaddsthenewsteptotheendoftheflow.Youcanmoveasteptoanewlocation
usingthearrowbuttonsonthetoolbar.Seethefollowingsection,Changingthe
PositionofaFlowStep.
Movetheflowstepupinthelist
Movetheflowstepdowninthelist
Youcanalsomoveaflowstepbydraggingitupordownwithyourmouseorbyusing
theShiftcommandsontheComposemenu.
154
Topromoteordemoteaflowstepwithinaparent/childhierarchy,selectthestepinthe
editor,andthenuseoneofthefollowingbuttonstomoveitleftorrightbeneaththe
currentparentstep.
To...
Demoteaflowstepinthehierarchy(thatis,maketheselectedstepa
childoftheprecedingparentstep)
Thisbuttonwillonlybeavailableifyouselectastepthatcan
becomeachild.
Promoteaflowstepinthehierarchy(thatis,movethesteponelevel
upinthehierarchy)
155
Use the
Properties
panel to view
and set the
properties of a
flow step.
Althougheachtypeofflowstephasasetofuniqueproperties,theyallhavethe
followingproperties:
Property
Description
Comments Assignsanoptionaldescriptivecommenttotheselectedflowstep.
Label
Assignsanametotheselectedflowstep.Whenalabelisassigned,that
labelappearsnexttothestepintheeditor.Thelabelallowsyouto
referencethatflowstepinotherflowsteps.Inaddition,youusethelabel
tocontrolthebehaviorofcertainflowsteps.Forexample,theBRANCH
stepusestheLabelpropertytodeterminewhichalternativeitissupposed
toexecute.
SeeTheBRANCHSteponpage 160andTheEXITSteponpage 181
foradditionalinformationaboutthisuseofthelabelproperty.
Foracompletedescriptionofthepropertiesassociatedwitheachflowstep,see
Appendix A,webMethodsFlowSteps.
156
YoumustspecifytheservicesfullyqualifiednameinfolderName:serviceName
format.
Examplepurchasing.orders:getOrders
Youmustspecifytheservicesnameexactlyasitisdefinedontheserver.Service
namesarecasesensitive.
157
Opentheflowserviceinwhichyouwanttoinvokeanotherservice.Intheeditor,
selectthestepimmediatelyabovewhichyouwanttoinserttheINVOKEstep.
Click
ontheeditortoolbarandthenselecttheserviceyouwanttoinvoke.Ifthe
serviceyouwanttoinvokedoesnotappearinthelist,clickBrowsetonavigatetoand
selecttheservice.
Tip! Youcanalsoaddinvokestepsbyselectingoneormoreservicesinthe
Navigationpanelanddraggingthemtothedesiredpositionwithintheflowin
theeditor.Theservicesmustresideonthesameserverastheflowservice.
158
CompletethefollowingfieldsonthePropertiespanel:
For this property...
Specify...
Service
Thefullyqualifiednameoftheservicethatwillbeinvokedatrun
time.Whenyouinsertaservice,Developerautomaticallyassigns
thenameofthatservicetotheServiceproperty.Ifyouwantto
changetheservicethatisinvoked,specifytheservicesfully
qualifiednameintheformatfolderName:serviceNameorclick
andselectaservicefromthelist.
Timeout
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 259.
Validate output
Whetherornotyouwanttheservertovalidatetheoutputofthe
serviceagainsttheserviceoutputsignature.SelectTruetovalidate
theoutput.SelectFalseifyoudonotwanttovalidatetheoutput.
Forinformationaboutvalidatingoutput,seePerforming
Input/OutputValidationonpage 259.
159
Createalistoftheconditionalsteps(targetsteps)andmakethemchildrenofthe
BRANCHstep.
InthePropertiespanelfortheBRANCHstep,specifyintheSwitchpropertythename
ofthepipelinevariablewhosevaluewillactastheswitch.Formoreinformation
aboutthisproperty,seeSpecifyingtheSwitchVariableonpage 161.
IntheLabelpropertyofeachtargetstep,specifythevaluethatwillcausethatstepto
execute.Formoreinformationaboutthisproperty,seeSpecifyingtheLabelValue
onpage 161.
160
161
If PaymentType is
COD, execution
will fall through this
BRANCH step.
KeepthefollowingpointsinmindwhenassigninglabelstothetargetsoftheBRANCH
step:
Youmustgiveeachtargetstepalabelunlessyouwanttomatchanemptystring.For
thatcase,youleavetheLabelpropertyblank.Formoreaboutmatchinganempty
string,seeBranchingonNullandEmptyValuesonpage 164.
EachLabelvaluemustbeuniquewithintheBRANCHstep.
WhenyouspecifyaliteralvalueastheLabelofachildstep,thevalueyouspecify
mustmatchtheruntimevalueoftheswitchvariableexactly.TheLabelpropertyis
casesensitive.
YoucanusearegularexpressionasthevalueofLabelinsteadofaliteralvalue.
Youcanmatchanullvaluebyusingthe$nullvalueintheLabelproperty.Formore
informationaboutspecifyinganullvalue,seeBranchingonNullandEmptyValues
onpage 164.
Youcandesignateadefaultstepforallunmatchedcasesbyusingthe$defaultvaluein
theLabelproperty.Formoreinformationaboutusingthe$defaultsetting,Specifying
aDefaultSteponpage 165.
162
Branching on an Expression
Whenyoubranchonanexpression,youassignanexpressiontoeachchildofabranch
step.Atruntime,theBRANCHstepevaluatestheexpressionsassignedtothechild
steps.Itexecutesthefirstchildstepwithanexpressionthatevaluatestotrue.
To branch on an expression
1
Createalistoftheconditionalsteps(targetsteps)andmakethemchildrenofthe
BRANCHstep.
InthePropertiespanelfortheBRANCHstep,setEvaluate labelstoTrue.
IntheLabelpropertyofeachtarget,specifytheexpressionthat,whentrue,willcause
thetargetsteptoexecute.Theexpressionsyoucreatecanincludemultiplevariables
andcanspecifyarangeofvaluesforvariables.Usethesyntaxprovidedby
webMethodstocreatetheexpression.Formoreinformationaboutexpressionsyntax,
seeAppendix D,ConditionalExpressions.
Each
target step
has an
expression
as the
label.
KeepinmindthatonlyonechildofaBRANCHstepisexecuted:thefirsttargetstep
whoselabelcontainsanexpressionthatevaluatestotrue.Ifnoneoftheexpressions
evaluatetotrue,noneofthechildstepsareinvoked,andexecutionfallsthroughtothe
nextstepintheflowservice.Youcanusethe$defaultvalueintheLabelpropertyto
designateadefaultstepforcaseswherenoexpressionsevaluatetotrue.Formore
informationaboutusingthe$default value,seeSpecifyingaDefaultSteponpage 165.
Important! TheexpressionsyoucreateforthechildrenofaBRANCHstepneedtobe
mutuallyexclusive(onlyoneconditionshouldevaluatetotrueatruntime).
163
Do the following...
Anullvalue
SettheLabelpropertyto$null.Atruntime,theBRANCHstep
executesthetargetstepwiththe$nulllabeliftheswitchvariableis
explicitlysettonullordoesnotexistinthepipeline.
Youcanuse$nullwithanytypeofswitchvariable.
Anempty
string
LeavetheLabelpropertyblank(empty).Atruntime,theBRANCH
stepexecutesthetargetstepwithnolabeliftheswitchvariableis
present,butcontainsnocharacters.
Youcanuseanemptyvalueonlywhentheswitchvariableisoftype
String.
164
BRANCH that contains target steps to match null values or empty strings
165
Important! YoucanonlyhaveonedefaulttargetstepforaBRANCHstep.Developer
alwaysevaluatesthedefaultsteplast.Thedefaultstepdoesnotneedtobethelast
childoftheBRANCHstep.
166
Create a SEQUENCE
for each multi-step
alternative...
TheSEQUENCEstepthatyouuseasatargetforaBRANCHcancontainanyvalidflow
step,includingadditionalBRANCHsteps.Foradditionalinformationaboutbuildinga
SEQUENCE,seeTheSEQUENCESteponpage 176.
167
IfyouareinsertingaBRANCHstepintoanexistingflowservice,displaythatservice
intheeditorandhighlightthestepimmediatelyabovewhereyouwanttheBRANCH
stepinserted.
Click
CompletethefollowingfieldsonthePropertiespanel:
ontheeditortoolbar.
Specify...
Comments
Anoptionaldescriptivecommentforthisstep.
Scope
Thenameofadocument(IDataobject)inthepipelinetowhich
youwanttorestrictthisstep.Ifyouwantthissteptohaveaccess
totheentirepipeline,leavethispropertyblank.
Timeout
Themaximumnumberofsecondsthatthisstepshouldrun.If
thistimeelapsesbeforethestepcompletes,theserverwaitsfor
thesteptocompleteandthenraisesanexception.
Ifyouwanttousethevalueofapipelinevariableforthis
property,typethevariablenamebetween%symbols(for
example,%expiration%).
Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeout
blank.
Label
Anoptionalnameforthisspecificstep,oranull,unmatched,or
emptystring($null,$default,blank).Formoreinformationabout
branchingonnulloremptyvalues,seeBranchingonNulland
EmptyValuesonpage 164.
Note: IfyouusethisstepasatargetforanotherBRANCHoran
EXITstep,youmustspecifyavalueintheLabelproperty.For
moreinformationabouttheEXITstep,seeTheEXITStepon
page 181.
Switch
168
ThenameoftheStringorconstrainedObjectvariablewhose
valuewillbeusedtodeterminewhichchildsteptoexecuteatrun
time.DonotspecifyaswitchvariableifyousettheEvaluate labels
propertytoTrue.
Specify...
Evaluate labels
Whetherornotyouwanttoevaluatelabelsofchildstepsas
conditionalexpressions.SelectTruetobranchonexpressions.
SelectFalse(thedefault)ifyouwanttobranchontheswitch
value.
InserttheconditionalstepsthatbelongtotheBRANCH(thatis,itschildren)using
thefollowingsteps:
a
Insertaflowstepusingthebuttonsontheeditortoolbar.
Indenttheflowstepusing
BRANCHstep.
IntheLabelpropertyonthePropertiespanel,specifytheswitchvaluethatwill
causethissteptoexecuteatruntime.
ontheeditortoolbartomakeitachildofthe
To match...
Specify...
Thatexactstring
Astring
TheStringrepresentationoftheobjectsvalue
Aconstrained
objectvalue
Aregular
expression
Example/^REL/
Anemptystring
Ablankfield
Anullvalue
$null
Anyunmatchedvalue(thatis,executethestepifthevalue
doesnotmatchanyotherlabel)
$default
Setotherpropertiesasneeded.
Important! Ifyouarebranchingonexpressions,makesuretheexpressionsyouassign
tothetargetstepsaremutuallyexclusive.Inaddition,donotusenulloremptyvalues
aslabelswhenbranchingonexpressions.TheBRANCHstepignorestargetsteps
witha$nulllabelorblanklabel.
169
FAILURE
Reexecutesthesetofchildstepsifanystepinthesetfails.
SUCCESS
Reexecutesthesetofchildstepsifallstepsintheset
completesuccessfully.
170
Doesnotreexecutechildren.
Reexecuteschildrenuptothisnumberoftimes.
-1 or blank
ReexecuteschildrenaslongasthespecifiedRepeat on
conditionistrue.
Important! NotethatchildrenofaREPEATalwaysexecuteatleastonce.TheCount
propertyspecifiesthemaximumnumberoftimesthechildrencanbereexecuted.At
theendofaniteration,theservercheckstoseewhetherthecondition(thatis,failure
orsuccess)forrepeatingissatisfied.IftheconditionistrueandtheCountisnotmet,
thechildrenareexecutedagain.Thisprocesscontinuesuntiltherepeatconditionis
falseorCountismet,whicheveroccursfirst.(Inotherwords,themaximumnumberof
timesthatchildrenofaREPEATwillexecutewhenCountis>1,isCount+1.)
SUCCESS
AchildwithintheREPEATblockfails.
FAILURE
TheCountlimitisreachedbeforeitschildrenexecute
successfully.
IftheREPEATstepisachildofanotherflowstep,thefailureispropagatedtoitsparent.
ExpirationofachildstepsTimeoutlimit
AnexceptionthrownbyaJavaservice
Adocumentquerythatreturnsanunpermittednullvalue
171
IfyouspecifymultiplechildrenunderaREPEATstep,thefailureofanyoneofthe
childrenwillcausetheentiresetofchildrentobereexecuted.
TheREPEATstepimmediatelyexitsasetofchildrenatthepointoffailure(thatis,if
thesecondchildinasetofthreefails,thethirdchildisnotexecuted).
WhenRepeat onissettoFAILURE,thefailureofachildwithinaREPEATstepdoes
notcausetheREPEATstepitselftofailunlesstheCountlimitisalsoreached.
TheTimeoutpropertyfortheREPEATstepspecifiestheamountoftimeinwhichthe
entireREPEATstep,includingallofitspossibleiterations,mustcomplete.Whenyou
useREPEATtoretryonfailure,youmaywanttoleavetheTimeoutvalueat0(nolimit)
orsetittoaveryhighvalue.Youcanalsosetthepropertytothevalueofapipeline
variablebytypingthenameofthevariablebetween%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
CompletethefollowingfieldsonthePropertiespanel:
ontheeditortoolbar.
Specify...
Comments
Anoptionaldescriptivecommentforthisstep.
Scope
Thenameofadocument(IDataobject)inthepipelineto
whichyouwanttorestrictthisstep.Ifyouwantthisstepto
haveaccesstotheentirepipeline,leavethispropertyblank.
Timeout
Themaximumnumberofsecondsthatthisstepshouldrun.If
thistimeelapsesbeforethestepcompletes,theserverwaitsfor
thesteptocompleteandthenraisesanexception.
Ifyouwanttousethevalueofapipelinevariableforthis
property,typethevariablenamebetween%symbols(for
example,%expiration%).
Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeout
blank.
172
Specify...
Label
AnoptionalnameforthisspecificREPEATstep,oranull,
unmatched,oremptystring($null,$default,blank).
Important! IfyouusethisstepasatargetforaBRANCHor
EXITstep,youmustspecifyavalueintheLabelproperty.For
moreinformationabouttheBRANCHandEXITsteps,see
TheBRANCHSteponpage 160orTheEXITStepon
page 181.
Count
Themaximumnumberoftimesyouwantthechildrentobe
reexecuted.Ifyouwanttousethevalueofapipelinevariable
forthisproperty,typethevariablenamebetween%symbols
(forexample,%servicecount%).
Ifyouwantthechildrenreexecuteduntiltheyareall
successful(thatis,nomaximumlimit),setthisvalueto1.
Repeat interval
Thelengthoftime(inseconds)thatyouwanttheserverto
waitbetweeniterationsofthechildren.
Ifyouwanttousethevalueofapipelinevariableforthis
property,typethevariablenamebetween%symbols(for
example,%waittime%).
Repeat on
4
FAILURE
BeneaththeREPEATstep,usethefollowingstepstoinserteachstepthatyouwantto
repeat:
a
Insertaflowstepusingthebuttonsontheeditortoolbar.
Indentthatflowstepusing
REPEATstep.)
Setthepropertiesforthechildstepasneeded.
ontheeditortoolbar.(Makeitachildofthe
173
IfyouareinsertingaREPEATstepintoanexistingflowservice,displaythatservice
intheeditorandhighlightthestepimmediatelyabovewhereyouwanttheREPEAT
stepinserted.
Click
CompletethefollowingfieldsonthePropertiespanel:
ontheeditortoolbar.
Specify...
Comments
Anoptionaldescriptivecommentforthisstep.
Scope
Thenameofadocument(IDataobject)inthepipelineto
whichyouwanttorestrictthisstep.Ifyouwantthisstepto
haveaccesstotheentirepipeline,leavethispropertyblank.
Timeout
Themaximumnumberofsecondsthatthisstepshouldrun.If
thistimeelapsesbeforethestepcompletes,theserverwaitsfor
thesteptocompleteandthenraisesanexception.
Ifyouwanttousethevalueofapipelinevariableforthis
property,typethevariablenamebetween%symbols(for
example,%expiration%).
Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeout
blank.
174
Specify...
Label
Anoptionalnameforthisspecificstep,oranull,unmatched,
oremptystring($null,$default,blank).
Important! IfyouusethisstepasatargetforaBRANCHor
EXITstep,youmustspecifyavalueinthelabelproperty.For
moreinformationabouttheBRANCHandEXITsteps,see
TheBRANCHSteponpage 160orTheEXITStepon
page 181.
Count
Themaximumnumberoftimesyouwantthechildrentobe
reexecuted.Ifyouwanttousethevalueofapipelinevariable
forthisproperty,typethevariablenamebetween%symbols
(forexample,%servicecount%).
Ifyouwantthechildrenreexecuteduntilanyoneofthem
fails(thatis,nomaximumlimit),setthisvalueto1.
Repeat interval
Thelengthoftime(inseconds)thatyouwanttheserverto
waitbetweeniterationsofthechildren.
Ifyouwanttousethevalueofapipelinevariableforthis
property,typethevariablenamebetween%symbols(for
example,%waittime%).
Repeat on
4
SUCCESS
BeneaththeREPEATstep,usethefollowingstepstoinserteachstepthatyouwant
repeat:
a
Insertaflowstepusingthebuttonsontheeditortoolbar.
Indentthatflowstepusing
REPEATstep.
Setthepropertiesforthechildstepasneeded.
ontheeditortoolbartomakeitachildofthe
175
Set Exit on to
Exitthesequencewhenastepinthesequencefails.(Execution
continueswiththenextflowstepintheflowservice.)Thisisthe
defaultbehaviorofasequenceofsteps.
FAILURE
Thissettingisusefulifyouhaveaseriesofstepsthatbuildupon
oneanother.Forexample,ifyouhaveasetofstepsthatgetsan
authorizationcodeandthensubmitsaPO,youwillwanttoskipthe
POsubmissioniftheauthorizationstepfails.
WhenaSEQUENCEexitsunderthiscondition,theSEQUENCE
stepfails.
Note: WhenaSEQUENCEstepexitsonfailure,theIntegration
Serverrollsbackthepipelinecontents.Thatis,theIntegration
Serverreturnsthepipelinetothestateitwasinbeforethe
SEQUENCEstepexecuted.
176
Set Exit on to
Exitthesequencewhenanystepinthesequencesucceeds.
(Executioncontinueswiththenextstepintheflowservice.)
SUCCESS
Thissettingisusefulforbuildingasetofalternativestepsthatare
eachattemptedatruntime.Onceoneofthemembersofthesetruns
successfully,theremainingstepsinthesequenceareskipped.
WhenaSEQUENCEexitsunderthiscondition,theserverconsiders
theSEQUENCEstepsuccessful,evenifallitschildrenfail.Ifachild
failsunderthiscondition,anychangesthatitmadetothepipeline
arerolledback(undone),andprocessingcontinueswiththenext
childstepintheSEQUENCE.
Executeeverystepinthesequenceevenifoneofthestepsinthe
sequencefails.
DONE
TheserverconsidersaSEQUENCEstepsuccessfulaslongasit
executesallofitschildrenwithinthespecifiedtimeoutlimit.The
successorfailureofachildwithinthesequenceisnottakeninto
consideration.Ifachildfailsunderthiscondition,anychangesthat
itmadetothepipelinearerolledback(undone),andprocessing
continueswiththenextchildstepintheSEQUENCE.
Note: Rollbackoperationsareperformedonthefirstlevelofthepipelineonly.Thatis,
firstlevelvariablesarerestoredtotheiroriginalvaluesbeforethestepfailed,butthe
serverdoesnotrollbackchangestoanydocumentstowhichthefirstlevelvariables
refer.
Note: AfailureinaMAPstep(thatis,afailureinoneofthetransformers)willcause
thecontainingSEQUENCEtoexitwhenyousetExit ontoFAILURE.However,aMAP
stepthatdoesnotfailwillnotcausethecontainingSEQUENCEtoexitwhenyouset
Exit ontoSUCCESS.Thatis,aMAPcanfailbutitdoesnotsucceed.
177
YoumayincludeanyvalidflowstepwithinthebodyofaLOOP,includingadditional
LOOPsteps.ThefollowingexampleshowsapairofnestedLOOPs.Notehowthe
indentationofthestepsdeterminestheLOOPtowhichtheybelong.
Nested LOOP steps
178
Whenyoudesignyourflow,rememberthatbecausetheserviceswithintheloopoperate
againstindividualelementsinthespecifiedinputarray,theymustbedesignedtotake
elementsofthearrayasinput,nottheentirearray.
Forexample,ifyourLOOPexecutesagainstadocumentlistcalledLineItemsthatcontains
childrencalledItem,Qty,andUnitPrice,youwouldspecifyLineItemsastheInput arrayfor
theLOOPstep,butserviceswithintheloopwouldtaketheindividualelementsof
LineItems(forexample,Item,Qty,UnitPrice,andsoforth)asinput.
179
transformInventoryStatustoanarrayvariablethatcontainstheoutputfromeachiteration
oftheloop.
Tocollectoutputfromeachpassoftheloop,specifythenameoftheoutputvariablethat
youwanttheservertocollectforeachiteration.
IfyouareinsertingaLOOPstepintoanexistingflowservice,displaythatservicein
theeditorandselectthestepimmediatelyabovewhereyouwanttheLOOPstep
inserted.
Click
CompletethefollowingfieldsonthePropertiespanel:
ontheeditortoolbar.
Specify
Comments
Anoptionaldescriptivecommentforthisstep.
Scope
Thenameofadocument(IDataobject)inthepipelineto
whichyouwanttorestrictthisstep.Ifyouwantthisstepto
haveaccesstotheentirepipeline,leavethispropertyblank.
Timeout
Themaximumnumberofsecondsthatthisstepshouldrun.If
thistimeelapsesbeforethestepcompletes,theserverwaitsfor
thesteptocompleteandthenraisesanexception.
Ifyouwanttousethevalueofapipelinevariableforthis
property,typethevariablenamebetween%symbols(for
example, %expiration%).
Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeout
blank.
Label
AnoptionalnameforthisspecificLOOPstep,oranull,
unmatched,oremptystring($null,$default,blank).
Important! IfyouusethisstepasatargetforaBRANCHor
EXITstep,youmustspecifyavalueintheLabelproperty.For
moreinformationabouttheBRANCHandEXITsteps,see
TheBRANCHSteponpage 160orTheEXITStepon
page 181.
Input array
180
ThenameofthearrayvariableonwhichtheLOOPwill
operate.Thisvariablemustbeoneofthefollowingtypes:
Stringlist,Stringtable,Documentlist,Objectlist.
Specify
Output array
Thenameoftheelementthatyouwanttheservertocollect
eachtimetheLOOPexecutes.Youdonotneedtospecifythis
propertyiftheloopdoesnotproduceoutputvaluesorifyou
arecollectingtheelementsofInput array.
Buildthebodyoftheloopusingthefollowingsteps:
a
Insertaflowstepusingthebuttonsontheeditortoolbar.
Indenttheflowstepusing
step.
Setthepropertiesforthechildstepasneeded.
ontheeditortoolbartomakeitachildoftheLOOP
UsethePipelinetabtolinktheelementsoftheinputarraytotheinputvariables
requiredbyeachchildoftheLOOPstep.Formoreinformationaboutusingthe
Pipelinetab,seeChapter 8,MappingDatainaFlowService.
Important! WhenyoubuildaLOOPstep,makesurethatyouspecifytheoutputarray
variableintheLOOPOutput arraypropertybeforecreatingalinktotheoutputarray
variablewithinaMAPorINVOKEstepinthebodyoftheLOOP.Ifyouspecifythe
outputarrayvariableaftercreatingalinktoit,thelinkwillfailatruntime.Youcan
testthestepinDevelopertoseeifthelinksucceeds.Ifthelinkfails,deletethelinkto
theoutputarrayvariableandthenrecreateit.
181
ExamplesofwhentousetheEXITstepincludeto:
Exitanentireflowservicefromwithinaseriesofdeeplynestedsteps.
Throwanexceptionwhenyouexitafloworaflowstepwithouthavingtowritea
JavaservicetocallService.throwError().
ExitaLOOPorREPEATflowstepwithoutthrowinganexception.
ThefollowingflowservicecontainstwoEXITstepsthat,ifexecuted,willexitthenearest
ancestorLOOPstep.IfthevalueofCreditCardTypeisnulloranemptystring,the
matchingEXITstepexecutesandexitstheLOOPoverthe/PurchaseOrdersListstep.
Use the EXIT step to exit the nearest ancestor LOOP step
This LOOP
exits when....
...CreditCardType
is null...
...or empty.
IfyouareinsertinganEXITstepintoanexistingflowservice,displaythatservicein
theeditorandselectthestepimmediatelyabovewhereyouwanttheEXITstep
inserted.
Click
CompletethefollowingfieldsonthePropertiespanel:
ontheeditortoolbar.
Specify
Comments
Anoptionaldescriptivecommentforthisstep.
Label
Anoptionalnameforthisspecificstep,oranull,unmatched,
oremptystring($null,$default,blank).
Important! IfyouusethisstepasatargetforaBRANCHstep,
youmustspecifyavalueintheLabelproperty.Formore
informationabouttheBRANCHstep,seeTheBRANCH
Steponpage 160.
182
Specify
Exit from
Theflowstepfromwhichyouwanttoexit.Specifyoneofthe
following:
Specify
$loop
NearestancestorLOOPorREPEATflowstep.
$parent
Parentflowstep,regardlessofthetypeofstep.
$flow
Entireflow.
Label
Nearestancestorflowstepthathasalabelthat
matchesthisvalue.
Note: Ifthelabelyouspecifydoesnotmatchthe
labelofanancestorflowstep,theflowwillexit
withanexception.
Signal
Failure message
Whethertheexitistobeconsideredasuccessorafailure.
Specifyoneofthefollowing:
Specify
To
SUCCES
S
Exittheflowserviceorflowstepwithasuccess
condition.
FAILURE
Exittheflowserviceorflowstepwithafailure
condition.Anexceptionisthrownaftertheexit.
YouspecifytheerrormessagewiththeFailure
messageproperty.
Thetextoftheexceptionmessageyouwanttodisplay.Ifyou
wanttousethevalueofapipelinevariableforthisproperty,
typethevariablenamebetween%symbols(forexample,
%mymessage%).
ThispropertyisnotusedwhenSignalissettoSUCCESS.
183
Initializetheinputvaluesforaflowservice.
Invokeseveralservices(transformers)inasinglestep.
Mapdocumentsformoneformattoanother.Forexample,youcanmapadocument
inanXMLformattoanebXMLformatoraproprietaryformat.
Tip! TheMAPstepisespeciallyusefulforhardcodinganinitialsetofinputvaluesin
aflowservice.Touseitinthisway,inserttheMAPstepatthebeginningofyourflow,
andthenusetheSet Valuemodifiertoassignvaluestotheappropriatevariablesin
Pipeline Out.
FormoreinformationabouttheMAPstep,seeChapter 8,MappingDatainaFlow
Service.
184
186
186
191
212
185
186
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.
187
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.
Note: Developerdisplayssmallsymbolsnexttoavariableicontoindicatevalidation
constraints.Developeruses toindicateanoptionalvariable.Developerusesthe
symboltodenoteavariablewithacontentconstraint.Forinformationaboutapplying
constraintstovariables,seeApplyingConstraintstoVariablesonpage 255.
188
ThePipeline IncolumnrepresentsinputtotheMAPstep.Itcontainsthenamesofallof
thevariablesinthepipelineatthispointintheflow.
TheTransformers columndisplaysanyservicesinsertedintheMAPsteptocomplete
valuetransformations.FormoreinformationaboutinvokingservicesinaMAPstep,
seeInsertingaTransformerintoaMAPSteponpage 214.
ThePipeline Out columnrepresentstheoutputoftheMAPstep.Itcontainsthenames
ofvariablesthatwillbeavailableinthepipelinewhentheMAPstepcompletes.
WhenyoufirstinsertaMAPstepintoyourflow,Pipeline InandPipeline Outareidentical.
However,iftheMAPstepistheonlystepintheflowserviceoristhelaststepintheflow
service,Pipeline Outalsodisplaysthevariablesdeclaredasoutputintheflowservice.
OnthePipelinetab,youcaninsertpipelinemodifierstoadjustthecontentsofthe
pipeline.Forexample,youcanlinkvariablesfromPipeline IntoservicesinTransformers.
Youcanalsousepipelinemodifierstoassignvaluestopipelinevariables,dropvariables
fromthepipeline,oraddvariablestothepipeline.
189
Pipeline Modifiers
Pipelinemodifiersarespecialcommandsthatyouapplytoadjustthepipelineatrun
time.Theyexecuteimmediatelybeforeoraftertheselectedserviceortransformer,
dependingonwhereyouaddthemonthePipelinetab.Usethefollowingbuttonstoadd
pipelinemodifierstothepipeline:
Use this modifier...
Link
Drop
Set Value
To...
Link a pipeline variable to a service variable.TheLinkmodifierletsyou
resolvevariablenameanddatastructuredifferencesbylinking
(copying)thevalueofonevariabletoanotheratruntime.For
informationaboutusingthispipelinemodifier,seeLinking
Variablesonpage 192.
Drop a variable from the pipeline.TheDropmodifierremoves
extraneousvariablesfromthepipeline.Forinformationabout
usingthispipelinemodifier,seeDroppingVariablesfromthe
Pipelineonpage 210.
Assign a value to a variable.TheSet Valuemodifierhardcodesa
valueforavariable.Forinformationaboutthispipelinemodifier,
seeAssigningValuestoPipelineVariablesonpage 206.
OpentheflowserviceforwhichyouwanttoprintthePipelinetab.
Intheeditor,selecttheINVOKEorMAPstepforwhichyouwanttoprintthePipeline
tab.
ClickanywhereonthePipelinetab.
ScrollorresizethePipelinetabtodisplaytheportionofthepipelineyouwanttoview
asHTML.
190
OntheFilemenu,clickView as HTML.
DevelopercreatesanHTMLpageanddisplaysitinyourdefaultbrowser.
Ifyouwanttoprintthepipeline,useyourbrowsersprintcommand.
See page...
Linkingvariables
192
Linkingvariablesofdifferentdatatypes
199
Linkingtoandfromarrayvariables
201
Deletinglinksbetweenvariables
204
Applyingconditionstolinksbetweenvariables
204
Assigningvaluestopipelinevariables
206
Droppingvariablesfromthepipeline
210
Addingvariablestothepipeline
211
Searchingforvariablesinaneditortree
58
191
Linking Variables
Whenyouwanttocopythevalueofavariableinaserviceordocumentformattoanother
variable,youlinkthevariables.Developerconnectsserviceandpipelinevariablesonthe
Pipelinetabwithalinecalledalink.Creatingalinkbetweenvariablescopiesthevalue
fromonevariabletoanotheratruntime.
Withinaflow,Developerimplicitlylinksvariableswhosenamesarethesameandwhose
datatypesarecompatible.Forexample,theserviceinthefollowingflowtakesavariable
calledAcctNumber.BecauseavariablebythisnamealreadyexistsinPipeline In,itis
automaticallylinkedtotheAcctNumbervariableinService In.Developerconnects
implicitlylinkedvariableswithagraylink.
Implicit links between pipeline and service variables
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.
192
When a pipeline
variable name is
different from the one
used by the service,
use the Link modifier
to connect them.
Important! DonotlinkvariableswithdifferentObjectconstraints.Ifyoulinkvariables
withdifferentobjectconstraintsandinput/outputvalidationisselected,theruntime
resultisundefined.
Alltheoutputvariablesthataserviceproducesareautomaticallyplacedinthepipeline.
JustasyoucanlinkvariablesfromthePipeline Instagetoaservicesinputvariables,you
canlinktheoutputfromaservicetoadifferentvariableinPipeline Out.
Inthefollowingexample,avariablecalledTransNumberislinkedtothefieldNumina
documentcalledTransactionRecord.Atruntime,theserverwillcopythevalueof
TransNumbertoNum,andbothTransNumberandNumwillbeavailabletosubsequent
servicesintheflow.
193
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.
Bylinkingvariablestoeachother,youarecopyingdatafromthesourcevariabletothe
targetvariable.(Documents,however,arecopiedbyreference.Formoreinformation,
seeWhatHappensWhenIntegrationServerExecutesaLinkBetweenVariables?on
page 196.)
Targetvariablescanbeconnectedtoonlyonesourcevariable.Afteryoudrawalink
toatargetvariable,youcannotdrawanotherlinktothetargetvariable.(Two
exceptionstothisruleinvolvearrayvariablesandconditionallinks.Formore
informationaboutlinkingarrayvariables,seeLinkingtoandfromArrayVariables
onpage 201.Formoreinformationaboutplacingconditionsonlinksbetween
variables,seeApplyingConditionstoLinksBetweenVariablesonpage 204.
194
YoucannotcreatealinktoavariableifyoualreadyusedtheSet Valuemodifierto
assignavaluetoavariable.
AfteraLinkmodifierisexecuted,boththesourceandtargetvariablesexistinthe
pipeline.Thetargetvariabledoesnotreplacethesourcevariable.
To create a link between variables
1
Intheeditor,selecttheINVOKEorMAPstepcontainingthevariablesyouwantto
link.
ClickthePipelinetab.
InPipeline In,clickthepipelinevariableyouwanttouseasthesourcevariable.
InService In,clicktheinputvariableyouwanttouseasthetargetvariable.
Click
onthetoolbar.
InService Out,clicktheoutputvariableyouwanttouseasthesourcevariable.
InPipeline Out,clickthepipelinevariableyouwanttouseasthetargetvariable.
Click
onthetoolbar.
Notes:
Ifthevariabletypesareincompatibleandcannotbelinkedtooneanother,
Developerdisplaysamessagestatingthattheoperationisnotallowed.
Ifyoucreatedalinktoorfromanarrayvariable,youmustspecifywhichelement
inthearrayyouarelinkingtoorfrom.Formoreinformationaboutarraylinking,
seeLinkingtoandfromArrayVariablesonpage 201.
Ifyouwanttoplaceaconditionontheexecutionofthelink,seeApplying
ConditionstoLinksBetweenVariablesonpage 204.
DonotlinkvariableswithdifferentObjectconstraints.Ifyoulinkvariableswith
differentobjectconstraintsandinput/outputvalidationisselected,theruntime
resultisundefined.
Tip! Youcanalsouseyourmousetolinkvariablestooneanother.Todothis,selectthe
sourcevariableanddragyourmousetotheappropriatetargetvariable.
195
196
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
197
Whenthisflowserviceexecutes,itreturnsthefollowingresults.
Results of flow service
The String1 in Document1
and the String1 in
Document2 have the same
value because Document1
was copied to Document2
by reference.
InStep3,thevalueoftheString1inDocument1wassettomodified.However,the
valueofString1inDocument2changedalso.ThisisbecauseinStep2oftheflowservice,
thevalueofDocument1wascopiedtoDocument2byreference.Changestothevalueof
Document1inlaterflowstepsalsochangethevalueofDocument2.
Topreventthevalueofthetargetvariablefrombeingoverwrittenbychangestothevalue
ofthesourcevalueinsubsequentstepsintheflowservice,youcandooneofthe
following:
Whenworkingwithdocumentvariables,linkeachchildofthedocumentvariable
individually.Thismethodcanbetimeconsumingandmightsignificantlyincreasethe
memoryandtimerequiredtoruntheservice.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.
198
Ifyoulinkfromadocumentvariabletoanotherdocumentvariable,thestructureof
thesourcedocumentvariableoverwritesthestructureofthetargetdocument
variable.
199
TwoStringlistscanbecombinedintoonedocumentlistthroughdatamappinginthe
pipeline.Forexample,ifintheabovescenarioyoualsohadaStringlistvariablenamed
bList,anddocumentListhadtwoStringchildrennamedaStringandbString,youcould
combinethetwoStringlistsbylinkingaListtoaStringandbListtobString.
Converting two String lists to a document list
200
Tip! YoucanalsoconvertaStringlisttoadocumentlist(IData[]object)byinvoking
thebuiltinservicepub.list:stringListToDocumentList.Youcaninserttheserviceasan
INVOKEsteporasatransformer.Formoreinformationabouttransformers,see
WhatAreTransformers?onpage 212.Formoreinformationaboutbuiltinservices,
seethewebMethodsIntegrationServerBuiltInServicesReference.
201
You can specify an index value when linking to or from an array variable
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
202
203
CreatealinkbetweenthevariablesusingtheproceduredescribedinTocreatealink
betweenvariablesonpage 195.
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.
OnthePipelinetab,selectthelinkthatyouwanttodelete.
OntheEditmenu,clickDelete.
Tip! Youcanalsodeletealinkbyselectingitandthenclicking
toolbarorpressingtheDELETEkey.
onthePipelinetab
204
notnull.AfteryouconnectthetwovariableswiththeLinkmodifier,youwouldeditthe
propertiesandaddtheconditionthatneedstobetrue.
A blue link indicates that a condition is applied to the link connecting the variables
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 160.
205
CreatealinkbetweenthevariablesusingtheproceduredescribedinTocreatealink
betweenvariablesonpage 195.
Clickthelink(blackline)thatconnectsthevariables.
IntheCopy conditionpropertytextbox,typetheconditionyouwanttoplaceonthe
link.
Forinformationaboutthesyntaxusedinconditions,seeAppendix D,Conditional
Expressions.
Important! Whendrawingmorethanonelinktothesametargetvariable,makesure
thattheconditionsassignedtoeachlinkaremutuallyexclusive.
Note: Youcantemporarilydisabletheconditionplacedonalink.Formore
information,seeDisablingaConditionPlacedonaLinkBetweenVariableson
page 294.
206
Toview(orchange)thevaluethatisassignedtotheSet Valuemodifier,doubleclickthe
iconnexttothevariablesnametoopentheInputFordialogbox.
Input For dialog box
Specify the value that
you want the server to
assign to this variable
at run time.
icon.
207
YoucanalsoformatStringvaluesbyspecifyingoneormorepipelinevariablesin
conjunctionwithaliteralvalue.Forexample,ifyouspecified(%areaCode%) %Phone%,the
resultingstringwouldbeformattedtoincludetheparenthesesandspace.Ifyouspecified
%firstName% %initial%. %lastName%,theperiodandspacingwouldbeincludedinthe
value.
208
Intheeditor,selecttheINVOKEorMAPstepcontainingthevariableyouwantto
alter.
ClickthePipelinetab.
Selectthevariabletowhichyouwanttoassignavalue.
Click
IntheInputFordialogbox,specifythevalueyouwanttoassigntothisvariable.
onthetoolbar.
Ifyouwanttoassignaliteralvaluetothevariable,typethatvalue.Thevaluemust
beofthesamedatatypeasthevariable.
IfyouwanttoderivethevaluefromaStringvariableinthepipeline,typethe
nameofthatvariableenclosedin%symbols(forexample,%Phone%).Thenselect
thePerform variable substitution checkbox.
Ifyouwanttheservertousethespecifiedvalueonlyifthevariabledoesnotcontaina
valueatruntime,cleartheOverwrite pipeline valuecheckbox.(Ifyouselectthischeck
box,theserverwillalwaysapplythespecifiedvalue.)
209
Intheeditor,selecttheINVOKEorMAPstepcontainingthevariablewiththevalue
youwanttocopyandpaste.
ClickthePipelinetab.
Selectthe
RightclickandselectCopy.
Selectthevariableorvariablestowhichyouwanttoassignthecopiedvalue,
rightclickandselectPaste.
youwanttocopy.
210
Intheeditor,selecttheINVOKEorMAPstepwhosepipelinevariablesyouwantto
drop.
ClickthePipelinetab.
Selectthevariablethatyouwanttodrop.
Click
onthetoolbar.
211
Intheeditor,selecttheINVOKEorMAPstepthatrepresentsthestageofthepipeline
atwhichyouwanttoaddanewvariable.
ClickthePipelinetab.
Selectthepointwhereyouwanttoaddthenewvariable.
Note: InanINVOKEstep,youcanaddanewvariabletoPipeline In,Service In,
Service Out,orPipeline Out.InaMAPstep,youcanonlyaddnewvariablesin
Pipeline Out.
Click
TypethenameofthevariableandpressENTER.
Ifthevariableisadocumentoradocumentlist,repeatsteps 4and5todefineits
andselectthetypeofvariablethatyouwanttocreate.
membervariables.Thenuse toindenteachmembervariablebeneaththe
documentordocumentlistvariable.
7
Assignoneofthepipelinemodifierstothenewvariable(Link,Drop,orSet Value).(If
youdonotassignamodifiertothevariable,Developerconsidersitextraneoustothe
flowandautomaticallyclearsthevariablewhenitrefreshesthePipelinetab.)
212
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
Note: InaMAPstep,Developeronlydisplaysthelinksbetweenpipelinevariablesand
transformers.DeveloperdoesnotdisplayanyimplicitlinkingforaMAPstep.
213
Contains services to
pub.date
Transformtimeanddateinformationfromoneformattoanother.
pub.document
TransformdocumentstoandfromdocumentlistsandXMLvalues.
pub.list
TransformaStringlisttoadocumentlist(IData[]object)and
appenditemstoadocumentlist(IData[]object)oraStringlist.
pub.math
Performsimplearithmeticcalculations(add,subtract,multiply,and
divide)onintegersanddecimalscontainedinstringvariables.
pub.string
Transformstringvaluesinvariousways(forexample,pad,
substring,concat,replacethroughalookuptable).
Formoreinformationaboutbuiltinservices,seethewebMethodsIntegrationServerBuilt
InServicesReference.
Intheeditor,selecttheMAPstepinwhichyouwanttoinsertatransformer.
ClicktheTransformersareaonthePipelinetab.
Click
onthePipelinetabtoolbarandthenselecttheserviceyouwanttoinvoke.
Iftheserviceyouwanttoinsertdoesnotappearinthelist,selectBrowsetoselectthe
214
servicefromtheNavigationpanel.ThetransformerappearsunderTransformers onthe
Pipelinetab.
4
Selectthetransformerand,inthePropertiespanel,setitsproperties:
For this property...
Specify...
Service
Thefullyqualifiednameoftheservicethatwillbeinvokedat
runtimeasatransformer.Whenyouinsertatransformer,
Developerautomaticallyassignsthenameofthatserviceto
theserviceproperty.Ifyouwanttochangetheservicethatis
invokedbyatransformer,specifytheservicesfullyqualified
nameinthefolderName:serviceNameformatorclick toselect
aservicefromalist.
Validate input
Whetherornotyouwanttovalidatetheinputtothe
transformeragainstthesignatureoftheservice.SelectTrueto
validatetheinputofthetransformer.SelectFalseifyoudonot
wanttovalidatetheinputofthetransformer.
Forinformationaboutvalidatingtransformers,seeValidating
InputandOutputforTransformersonpage 218.
Validate output
Whetherornotyouwanttovalidatetheoutputofthe
transformeragainstthesignatureoftheservice.SelectTrueto
validatetheoutputofthetransformer.SelectFalseifyoudo
notwanttovalidatetheoutputofthetransformer.
Forinformationaboutvalidatingtransformers,seeValidating
InputandOutputforTransformersonpage 218.
ClickOK.
Forinformationaboutdebuggingtransformers,seeDebuggingTransformerson
page 222.
Tip! WhenyouexpandatransformerintheTransformersareaofthePipelinetab,you
canseetheService InvariablesandtheService Out variablesandalloftheexplicitlinks
betweenthetransformerandthepipeline.Youmightfinditeasiertolinktransformer
variableswhenyouarezoomedinonthetransformer.
215
Outputforatransformerisnotautomaticallyaddedtothepipeline.Ifyouwantthe
outputofatransformertoappearinthepipeline,youneedtoexplicitlylinkthe
outputvariabletoaPipeline Outvariable.Ifyoudonotlinktheoutputvariabletoa
Pipeline Outvariable,theoutputvariabledoesnotappearinthepipeline.
Ifyoudonotlinkanyoutputvariablesorthetransformerdoesnothaveanydeclared
outputvariables,thetransformerservicewillnotrun.
ThetransformersyouinsertintoasingleMAPstepactonthesamesetofpipeline
data.
Toprovidethecleanestandsimplestviewwhenworkingwithtransformers,thePipeline
tabonlydisplaysonelinkbetweenthetransformerandaPipeline In variableandonelink
betweenthetransformerandaPipeline Outvariable.(ThePipelinetabdisplaysthelinks
betweenthetransformerandthehighestpositionedPipeline InvariableandPipeline Out
variabletowhichthetransformerislinked.)
To create a link between a pipeline variable and a transformer
1
TocreatealinkbetweenaPipeline Invariableandatransformervariable,dothe
following:
a
InPipeline In,selectthevariableyouwanttouseasinputtothetransformerand
dragyourmousetothetransformer.
IntheLink Tolist,selectthetransformervariabletowhichyouwanttolinkthe
Pipeline Invariable.
OnceyoulinkatransformerinputvariabletoaPipeline Invariable,Developer
displaysthephrasehasalreadybeenchosennexttothetransformervariablein
theLink Tolist.
Repeatsteps aandbforeachtransformerinputvariableyouwanttolinktoa
pipelinevariable.
Note: YoucanassignavaluetoatransformerinputvariableusingtheSet Value
modifier .Toassignaninputvaluetoatransformer,firstexpandthe
transformerbydoubleclickingthetransformername,byclicking
ComposeExpand,orbyclicking nexttothetransformer.
TocreatealinkbetweenatransformeroutputvariableandaPipeline Outvariable,do
thefollowing:
a
SelectthetransformeranddragyourmousetothevariableinPipeline Outtowhich
youwanttolinkthetransformervariable.
IntheLink Fromlist,selectthetransformervariablethatyouwanttolinktothe
selectedPipeline Outvariable.
Repeatsteps aandbforeachoutputvariableproducedbythetransformer.
YoucanlinkatransformeroutputvariabletomorethanonePipeline Outvariable.
216
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.
217
Example
Inthefollowingexample,theunitPricevariablecannotbelinkedtonum1becausethe
unitPricevariablehasadimensionalityof1(string(0)+documentlist(1)=1)andnum1
hasadimensionof0.
unitPrice cannot be linked to num1 because of dimensionality differences
Solution
Tosolvethis,youcaneither:
Changetheserviceinvokedbythetransformertoacceptarraysasdata,or
CreateaflowserviceinwhichaLOOPsteploopsoverthearrayvariable.Then,(in
thesameflowservice)invoketheserviceyouoriginallywantedtouseasa
transformer,andmakethatINVOKEstepachildoftheLOOP.Finally,insertthe
resultingflowserviceasatransformerintheMAP.
Ofthetwooptions,changingtheservicetoacceptarraysasdataresultsinfaster
executionofflowservices.
218
Intheeditor,selecttheMAPstepcontainingthetransformeryouwanttovalidate.
ClickthePipelinetab.
UnderTransformers,selectthetransformerforwhichyouwanttovalidateinputor
output.
OnthePropertiespanel,fortheValidate inputproperty,selectTrueifyouwantto
validatetheinputtothetransformeragainsttheinputparametersoftheinvoked
service.
FortheValidate outputproperty,selectTrueifyouwanttovalidatetheoutputofthe
transformeragainsttheoutputparametersoftheinvokedservice.
ClickOK.
Copying Transformers
YoumaywanttousethesametransformermorethanonceinaMAPstep.Forexample,
youmightwanttoconvertallthedatesinapurchaseordertothesameformat.Insteadof
usingthe
buttontolocateandselecttheservice,youcancopyandpastethe
transformerservice.
YoucanalsocopytransformersbetweenMAPstepsinthesamefloworMAPstepsin
differentflowservices.
Important! Copyingatransformerdoesnotcopythelinksbetweentransformer
variablesandpipelinevariablesoranyvaluesyoumighthaveassignedto
transformervariablesusingtheSet Valuemodifier.
To copy a transformer
1
Intheeditor,selecttheMAPstepcontainingthetransformerserviceyouwantto
copy.
ClickthePipelinetab.
UnderTransformers,selectthetransformerserviceyouwanttocopy.Rightclickthe
transformerandthenselectCopy.
219
Topastethetransformer,clickanywhereunderTransformers.Rightclickandselect
Paste.
Linktheinputandoutputvariablesofthetransformerusingtheprocedures
describedinLinkingVariablestoaTransformeronpage 215.
Expanding Transformers
Youmightfinditeasiertocreatelinkstotransformerswhenyouexpandthetransformer.
Whenyouexpandatransformer,youcanseetheService InandtheService Outvariables
forthetransformerandallofthelinksbetweenthepipelineandthetransformer
variables.
Pipeline tab with an expanded transformer
Whenyouexpandatransformer,youcanonlyperformactionsforthattransformer,for
example,youcanonlylinkvariablesorsetpropertiesfortheexpandedtransformer.
Othertransformersandlinkstoothertransformersremainhiddenuntilyoucollapsethe
transformer.
Note: Ifyouexpandatransformer,youcanusetheSet Valuemodifiertoassignavalue
toavariableinService In.
To expand and collapse the contents of a transformer
Toexpandthecontentsofatransformer,clickComposeExpand.
Tocollapsethecontentsofatransformer,clickComposeCollapse.
Tip! Youcanalsoexpand/collapseatransformerbydoubleclickingit.
220
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 43.
To rename a transformer
1
UsetheNavigationpaneltodeterminethenewnameorlocationoftheservicecalled
bythetransformer.
Opentheflowservicecontainingthetransformeryouwanttorename.
Intheeditor,selecttheMAPstepcontainingthetransformer.Then,onthePipelinetab,
selectthetransformeryouwanttorename.
IntheServicepropertyonthePropertiespanel,deletetheoldnameandtypeinthe
servicesnewfullyqualifiednameinthefolderName:serviceNameformat,orclick to
selectaservicefromalist.
221
Debugging Transformers
Whenyoutestanddebugaflowservice,youcanusethefollowingtestingand
debuggingtechniqueswithtransformers:
StepintoaMAPstepandstepthroughtheexecutionofeachtransformer.Formore
informationaboutsteppingintoandoutofaMAPstep,seeUsingtheStepTools
withaMAPSteponpage 288.
Setabreakpointonatransformersothatserviceexecutionstopswhenthe
transformerisencountered.Formoreinformationaboutsettingbreakpoints,see
SettingBreakpointsonpage 288.
Disableatransformersothatitdoesnotexecuteatruntime.Formoreinformation
aboutdisablingtransformers,seeDisablingTransformersonpage 293.
222
Creating an IS Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
224
233
Creating a Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
248
223
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 229.
224
Schema editor
Specifies the target
namespace to
which the schema
belongs.
Select a component
in the schema
browser...
Schema Browser
TheschemabrowserdisplaysthecomponentsofanISschemainaformatthatmirrors
thestructureandcontentofthesourcefile.Theschemabrowsergroupstheglobal
elementdeclarations,attributedeclarations,simpletypedefinitions,andcomplextype
definitionsfromthesourcefileunderthetoplevelheadingsELEMENTS,ATTRIBUTES,
SIMPLETYPES,andCOMPLEXTYPES.Forexample,theELEMENTSheadingcontains
alloftheglobalelementdeclarationsfromtheXMLSchemaortheDTD.
Ifthesourcefiledoesnotcontainoneoftheseglobalcomponents,thecorresponding
headingisabsent.Forexample,ifyoucreateanISschemafromanXMLSchemathat
doesnotcontainanyglobalattributedeclarations,theschemabrowserdoesnotdisplay
theATTRIBUTESheading.AnISschemacreatedfromaDTDneverdisplaystheSIMPLE
TYPESorCOMPLEXTYPESheadingsbecauseDTDsdonotcontaintypedefinitions.
Note: ADTDdoescontainattributedeclarations.However,theschemabrowserdoes
notdisplaytheATTRIBUTESheadingforISschemasgeneratedfromDTDs.Thisis
becauseanattributedeclarationinaDTDassociatestheattributewithanelement
type.Accordingly,theschemabrowserdisplaysattributesaschildrenoftheelement
typedeclarationtowhichtheyareassigned.Formoreinformation,seethe
webMethodsIntegrationServerSchemaReference.
TheschemabrowserusesuniquesymbolstorepresentthecomponentsoftheISschema.
EachofthesesymbolsrelatestoacomponentofanXMLSchemaoraDTD.Thefollowing
tableidentifiesthesymbolforeachcomponentthatcanappearinanISschema.
225
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.
226
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"attributeinanXMLSchemacomplextypedefinitionora
DTDelementlistinwhichthefirstitemis#PCDATA.
Empty content.InanXMLSchema,anelementhasemptycontentwhenits
associatedcomplextypedefinitiondoesnotcontainanyelement
declarations.Anelementwithemptycontentmaystillcarryattributes.
InaDTD,anelementhasemptycontentwhenitisdeclaredtobeoftype
EMPTY.
227
If you select an
element
declaration...
Whenyouselectasimpletypedefinition,theschemadetailsarealookslikethefollowing:
Schema details area for a simple type definition
228
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
OntheFilemenu,clickNew.
IntheNewdialogbox,selectSchema,andthenclickNext.
IntheNewSchemadialogbox,nexttoFolder,selectthefolderwhereyouwanttosave
theISschema.
IntheNamefield,typeanamefortheISschemausinganycombinationofletters,
numbers,andtheunderscorecharacter.ClickNext.
Important! Ifyouspecifyanamethatusesareservedwordorcharacter,
webMethodsIntegrationServerdisplaysanerrormessage.Whenthishappens,
useadifferentnameortryaddingaletterornumbertothenametomakeitvalid.
Formoreinformationaboutrestrictedcharactersforpackages,folders,and
elements,seeAboutElementNamesonpage 41.
IntheNewSchemadialogbox,selectoneofthefollowingtospecifythesourceforthe
ISschema.
Specify...
To...
XML
CreateanISschemabasedonanexistingDTDreferencedbyanXML
document.
DTD
CreateanISschemabasedonaDTD.
XML
Schema
CreateanISschemabasedonanXMLSchemadefinition.
Important! YoucancreateanISschemafromanXMLdocumentonlyiftheXML
documentreferencesanexistingDTD.
229
ClickNext.
IfyouwanttobasetheISschemaonanXMLdocument,DTD,orXMLSchema
definitionthatresidesontheInternet,typetheURLoftheresource.(TheURLyou
specifymustbeginwithhttp:orhttps:.)
IfyouwanttobasetheISschemaonanXMLdocument,DTD,orXMLSchema
definitionthatresidesonyourlocalfilesystem,typethepathandfilename,or
click
tonavigatetoandselectthefile.
ClickFinish.DevelopergeneratestheISschemausingthedocumentyouspecifiedand
displaysitintheeditor.
Note: YoumightreceiveerrorsorwarningswhencreatinganISschemafromanXML
SchemadefinitionorDTD.Formoreinformationabouttheseerrorsandwarnings,
seeAppendix G,ValidationErrorsandExceptions.
Note: WhencreatinganISschemafromanXMLSchemadefinition,Developer
validatestheschemaanddoesnotcreatetheISschemaiftheXMLSchemadefinition
isnotvalid.Formoreinformation,seeISSchemaGenerationErrorsandWarnings
onpage 470.
230
schemanamedmySchemafrommySchema.xsd,theschemaprocessorgeneratesan
ISschemanamedmySchema_2fortheimportedXMLSchema.
Redefine.Schemaauthorscanalsouse<redefine>toincludeandthenredefinetype
definitions,modelgroups,andattributegroupsfromanexternalXMLSchemainthe
samenamespace.
231
Whenmodifyingasimpletypedefinition,keepthefollowingpointsinmind:
Changestoasimpletypedefinitionaffecttheelementsandattributesforwhichthe
simpletypeisthedefinedtype.Forexample,iftheattributepartNumisdefinedtobe
oftypeSKU,changestotheSKUsimpletypedefinitionaffectthepartNumattribute.
ChangestoaglobalsimpletypedefinitioninanISschemadonotaffectsimpletypes
derivedfromtheglobalsimpletype;thatis,thechangesarenotpropagatedtothe
derivedtypesintheISschema.
SimpletypesinanISschemacanbeusedascontentconstraintsforfieldsinpipeline
validation.Consequently,changestoasimpletypealsoaffecteveryfieldtowhichthe
simpletypeisappliedasacontentconstraint.
Tip! Youcancreateacustomsimpletypetoapplytoafieldasacontenttype
constraint.Formoreinformationaboutcreatingacustomsimpletypeand
applyingconstraintstofields,seeSettingConstrainingFacetValueson
page 233.
ChangestoasimpletypedefinitionaresavedintheISschema.Ifyouregeneratethe
ISschemafromtheXMLSchemadefinition,yourchangeswillbeoverwritten.
Whenyouedittheconstrainingfacetsappliedtoasimpletypedefinition,youcan
onlymaketheconstrainingfacetvaluesmorerestrictive.Theconstrainingfacets
cannotbecomelessrestrictive.Formoreinformationaboutsettingvaluesfor
constrainingfacets,seeSettingConstrainingFacetValuesonpage 233.
Tip! Ifyouwanttoeditcomplextypedefinitions,attributedeclarations,element
declarations,orthestructureoftheschema,youneedtoedittheXMLSchemaand
thenregeneratetheISschema.
To edit a simple type definition
1
OpentheISschemathatcontainsthesimpletypeyouwanttoedit.
Intheschemabrowserareaoftheeditor,selectthesimpletypethatyouwanttoedit.
The
symbolappearsnexttosimpletypes.
Intheschemadetailsarea,specifytheconstrainingfacetsthatyouwanttoapplyto
thesimpletype.Formoreinformationaboutconstrainingfacets,seeConstraining
Facetsonpage 448.
OntheFilemenu,clickSave.
232
233
YoucancreateanISdocumenttypeinthefollowingways:
CreateanemptyISdocumenttypeanddefinethestructureofthedocumenttype
yourselfbyinsertingfields.
CreateanISdocumenttypefromasourcefile,suchasanXMLSchema,DTD,orXML
document.ThestructureandcontentoftheISdocumenttypewillmatchthatofthe
sourcefile.
CreateanISdocumenttypefromaBrokerdocumenttype.
OntheFilemenu,clickNew.
IntheNewDocumentTypedialogbox,dothefollowing:
a
InthelistnexttoFolder,selectthefolderinwhichyouwanttosavetheIS
documenttype.
IntheNamefield,typeanamefortheISdocumenttypeusinganycombinationof
letters,numbers,and/ortheunderscorecharacter.Forinformationabout
restrictedcharacters,seeAboutElementNamesonpage 41.
ClickNext.
UnderSelect a source,selectNonetoindicatethatyouwanttocreateanemptyIS
documenttypeinwhichyoudefinethestructureandfields.
ClickFinish.
ToaddfieldsintheISdocumenttype,dothefollowing:
234
Click
TypethenameofthefieldandthenpressENTER.
onthetoolbarandselectthetypeoffieldthatyouwanttodefine.
Note: Developerpreventstheinsertionoffieldsnamed_envinanISdocument
type.Fordetailsaboutthe_envfield,seeTheEnvelopeFieldonpage 243.
c
Withthefieldselected,setfieldpropertiesandapplyconstraintsintheProperties
panel(optional).
Formoreinformationaboutsettingfieldproperties,seeSpecifyingField
Propertiesonpage 247.Forinformationaboutapplyingconstraints,see
ApplyingConstraintstoVariablesonpage 255.
Ifthefieldisadocumentoradocumentlist,repeatsteps actodefineandsetthe
propertiesandconstraintsforeachofitsmembers.Use
fieldbeneaththedocumentordocumentlistfield.
toindenteachmember
OntheFilemenu,clickSave.
Note: Developerdisplayssmallsymbolsnexttoafieldicontoindicatevalidation
constraints.Developeruses toindicateanoptionalfield.Developerusesthe
symboltodenoteafieldwithacontentconstraint.Forinformationaboutapplying
constraintstofields,seeApplyingConstraintstoVariablesonpage 255.
235
236
Ifyouselecttheoptiontoexpandcomplextypesinline,theschemaprocessorgenerates
thedocumenttypeasfollows.Inthisexample,theschemaprocessorexpandedthe
complextypesnameddocumentXanddocumentYinlinewithinthenewISdocumenttype:
Complex types expanded inline
Ifyouselecttheoptiontogeneratecomplextypesasseparatedocumenttypes,the
schemaprocessorgeneratesthedocumenttypesasfollows.Inthisexample,theschema
processorgeneratedthreeISdocumenttypesoneforthecomplextypenamed
documentY,oneforthecomplextypenameddocumentX(withareferencetodocumentY),
andonefortherootelementeltA(withreferencestodocumentXanddocumentY):
237
Theschemaprocessorgeneratesallthreedocumenttypesinthesamefolder.
Note: Ifthecomplextypeisanonymous,theschemaprocessorexpandsitinlinerather
thangenerateaseparatedocumenttype.
IftheXMLSchemayouareusingtogenerateanISdocumenttypecontainsrecursive
complextypes(thatis,elementdeclarationsthatrefertotheirparentcomplextypes
directlyorindirectly),youcanavoiderrorsinthedocumenttypegenerationprocessby
selectingtheoptiontogeneratecomplextypesasseparatedocumenttypes.(Selectingthe
optiontoexpandcomplextypesinlinewillresultininfinitelyexpandingnested
documents.)
238
OntheFilemenu,clickNew.
IntheNewDocumentTypedialogbox,dothefollowing:
InthelistnexttoFolder,selectthefolderinwhichyouwanttosavetheIS
documenttype.
IntheNamefield,typeanamefortheISdocumenttypeusinganycombinationof
letters,numbers,and/ortheunderscorecharacter.Forinformationaboutreserved
wordsorcharacters,seeAboutElementNamesonpage 41.
ClickNext.
UnderSelect a source,selectoneofthefollowing:
Select...
To...
XML
CreateanISdocumenttypethatmatchesthestructureandfieldsin
anXMLdocument.
DTD
CreateanISdocumenttypethatmatchesthestructureandfieldsin
aDTD.
XML Schema
CreateanISdocumenttypethatmatchesthestructureandfieldsin
anXMLSchemadefinition.
ClickNext.
239
IfyouwanttobasetheISdocumenttypeonafilethatresidesontheInternet,type
theURLoftheresource.(TheURLyouspecifymustbeginwith http:or https:.)
IfyouwanttobasetheISdocumenttypeonafilethatresidesonyourlocalfile
system,typeinthepathandfilename,orclick
file.
tonavigatetoandselectthe
Dooneofthefollowingbasedonyourselectioninstep4:
IfyouselectedXML,clickFinish.DevelopergeneratestheISdocumenttypeusing
theXMLdocumentyouspecifiedanddisplaysitintheeditor.
IfyouselectedDTD,clickNext.Developerpromptsyoutoselecttherootelementof
thedocument.SelecttherootelementandclickOK.DevelopergeneratestheIS
documenttypeanddisplaysitintheeditor.DeveloperalsogeneratesanIS
schemaanddisplaysitintheNavigationpanel.
Selecttherootelementofthedocument.
SelecttheappropriateoptiontospecifywhetherDevelopershouldprocess
complextypesbyexpandingtheminlineintheeditororbygeneratingthem
asseparateISdocumenttypes.
ClickFinish.DevelopergeneratestheISdocumenttype(s)anddisplaysthem
intheeditor.DeveloperalsogeneratesanISschemaanddisplaysitinthe
Navigationpanel.
DevelopercreatestheISdocumenttypeandsavesitontheIntegrationServer.Ifyou
wanttoaddoreditfieldsintheISdocumenttype,seeCreatinganEmptyIS
DocumentTypeonpage 234.
Note: YoumightreceiveerrorsorwarningswhencreatinganISdocumenttype
fromaDTDorXMLSchemadefinition.Formoreinformationabouttheseerrors
andwarnings,seeValidationErrorsonpage 452.
240
AninstanceofapublishabledocumenttypecanbepublishedtoaBrokerorlocally
withinanIntegrationServer.
ApublishabledocumenttypecanbeusedanywhereanISdocumenttypecanbeused.
Forexample,youcanuseapublishabledocumenttypetodefinetheinputoroutput
parametersofaservice.AdocumentreferencefieldcanreferenceanISdocumenttypeor
apublishabledocumenttype.Youcanuseapublishabledocumenttypeastheblueprint
forperformingdocumentorpipelinevalidation.
Tip! AnyISdocumenttypecanbemadeintoapublishabledocumenttype.For
informationaboutmakingadocumenttypepublishableorsettingpublication
properties,seethePublishSubscribeDevelopersGuide.
WhenyoucreateanISdocumenttypefromaBrokerdocumenttypethatreferencesother
elements,Developerwillalsocreateanelementforeachreferencedelement.The
IntegrationServerwillcontainadocumenttypethatcorrespondstotheBrokerdocument
typeandonenewelementforeachelementtheBrokerdocumenttypereferences.
Developeralsocreatesthefolderinwhichthereferencedelementwaslocated.Developer
savesthenewelementsinthepackageyouselectedforstoringthenewpublishable
documenttype.
Forexample,supposethattheBrokerdocumenttypereferencesadocumenttypenamed
addressinthecustomerInfofolder.DeveloperwouldcreateanISdocumenttypenamed
addressandsaveitinthecustomerInfofolder.IfafieldintheBrokerdocumenttypewas
constrainedbyasimpletypedefinitiondeclaredintheISschemapurchaseOrder,Developer
wouldcreatethereferencedISschemapurchaseOrder.
AnelementreferencedbyaBrokerdocumenttypemighthavethesamenameasan
existingelementonyourIntegrationServer.However,elementnamesmustbeuniqueon
theIntegrationServer.Developergivesyoutheoptionofoverwritingtheexisting
elementswiththereferencedelements.
Important! IfyoudonotselecttheOverwrite existing elements when importing referenced
elementscheckboxandtheBrokerdocumenttypereferencesanelementwiththe
samenameasanexistingIntegrationServerelement,Developerwillnotcreatethe
publishabledocumenttype.
Important! Ifyouchoosetooverwriteexistingelementswithnewelements,keepin
mindthatdependentsoftheoverwrittenelementswillbeaffected.Forexample,
supposetheaddressdocumenttypedefinedtheinputsignatureofaflowservice
deliverOrder.OverwritingtheaddressdocumenttypemightbreakthedeliverOrderflow
serviceandanyotherservicesthatinvokeddeliverOrder.
241
OntheFilemenu,clickNew.
IntheNewDocumentTypedialogbox,dothefollowing:
a
InthelistnexttoFolder,selectthefolderinwhichyouwanttosavetheIS
documenttype.
IntheNamefield,typeanamefortheISdocumenttypeusinganycombinationof
letters,numbers,and/ortheunderscorecharacter.
ClickNext.
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.
ClickFinish.DeveloperautomaticallyrefreshestheNavigationpanelanddisplays
besidethedocumenttypenametoindicateitisapublishabledocumenttype.
Notes:
242
YoucanassociateonlyoneISdocumenttypewithagivenBrokerdocumenttype.
IfyoutrytocreateapublishabledocumenttypefromaBrokerdocumenttype
thatisalreadyassociatedwithapublishabledocumenttypeonyourIntegration
Server,Developerdisplaysanerrormessage.
OnceapublishabledocumenttypehasanassociatedBrokerdocumenttype,you
needtomakesurethatthedocumenttypesremaininsync.Thatis,changesinone
documenttypemustbemadetotheassociateddocumenttype.Youcanupdate
onedocumenttypewithchangesintheotherbysynchronizingthem.For
informationaboutsynchronizingdocumenttypes,seethePublishSubscribe
DevelopersGuide.
243
IntegrationServerautomaticallygeneratesacorrespondingpublishabledocumenttype.
Developerassignsthepublishabledocumenttypethesamenameastheadapter
notification,butappendsPublishDocumenttothename.Thatis,Developerassignsthe
publishabledocumenttypethename:NotificationNamePublishDocument.Youcanuse
thispublishabledocumenttypewithtriggersandflowservicesjustasyouwouldany
otherpublishabledocumenttype.
Inapublishabledocumenttypeassociatedwithanadapternotification,youcaneditonly
theStorage typeandTime to livepublicationproperties.Tomakeanyothermodificationsto
thepublishabledocumenttype,youmustmodifytheadapternotificationtype.
IntegrationServerautomaticallyappliesthechangestothepublishabledocumenttype.
Forinformationaboutpublicationproperties,seethePublishSubscribeDevelopersGuide.
Formoreinformationaboutcreatingandusingadapternotifications,seetheappropriate
adapteruserguide.Formoreinformationaboutperformingactionsonadapter
notificationsandtheirassociatedpublishabledocumenttypes,seeChapter 2,Managing
ElementsintheNavigationPanel.
DeveloperdisplaysthismessageonlyifaBrokerisconfiguredfortheIntegrationServer.
ToupdatetheassociatedBrokerdocumenttypewiththechanges,synchronizethe
publishabledocumenttypewiththeBrokerdocumenttype.Formoreinformationabout
synchronizingdocumenttypes,seethePublishSubscribeDevelopersGuide.
244
OpentheISdocumenttypeyouwanttoprintandclickitstitlebarintheeditorto
giveitthefocus.
FromtheFilemenu,selectView as HTML.
DeveloperexpandsanydocumentanddocumentlistfieldsintheISdocumenttype,
createsanHTMLpagecontainingtheISdocumenttype,anddisplaystheHTML
pageinyourdefaultbrowser.
IfyouwanttoprinttheISdocumenttype,selectyourbrowsersprintcommand.
OpentheservicetowhichyouwanttoassigntheISdocumenttype.
Clickthe Input/Outputtab.
IntheInputorOutputbox(dependingonwhichhalfoftheInput/Outputtabyouwantto
applytheISdocumenttypeto),typethefullyqualifiednameoftheISdocumenttype
orclick toselectitfromalist.YoucanalsodraganISdocumenttypefromthe
NavigationpaneltotheboxbelowtheValidate inputorValidate outputcheckboxeson
theInput/Outputtab.
OntheFilemenu,clickSave.
Important! WhenanISdocumenttypeisassignedtotheinputoroutputofa
service,youcannotadd,delete,ormodifythefieldsonthathalfofthe Input/Output
tab.
245
Onthe Input/Outputtab,click
onthetoolbarandselectoneofthefollowing:
Click...
To...
Document Reference
CreateadocumentfieldbasedonanISdocumenttype.
CreateadocumentlistfieldbasedonanISdocument
type.
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.
246
OnthePropertiespanel,theGeneralcategorycontainsthepropertiesofthefieldandthe
Constraintscategorycontainsvalidationconstraintsforthefield.(Formoreinformation
aboutspecifyingvalidationconstraints,seeApplyingConstraintstoVariableson
page 255.)
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
Select...
Enteredinatextfield
Enteredasapassword,withasterisksreflectedinsteadofcharacters
Password
Pick List
247
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.
248
To create a specification
1
OntheFilemenu,clickNew.
IntheNewdialogbox,selectSpecification,andclickNext.
IntheNewServiceSpecificationdialogbox,dothefollowing:
a
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
InSpecification Referencefield,typethespecificationsnameorclick
fromalist.
Skiptherestofthisprocedure.
toselectit
Important! Typically,youdonotbuildaspecificationbyreferencinganother
specification.However,itisusefultodothisinthesituationwhereyouwilluse
thespecificationwithagroupofserviceswhoserequirementsareexpectedto
change(thatis,theymatchanexistingspecificationnowbutareexpectedto
changeatsomepointinthefuture).Referencingaspecificationgivesyouthe
convenienceofusinganexistingspecificationandtheflexibilitytochangethe
specificationforonlythatsinglegroupofservicesinthefuture.
249
IfyouwanttoreferenceanISdocumenttypefortheInputorOutputhalfofthe
specification,dothefollowing:
a
IntheInputorOutputfield(dependingonwhichhalfofthespecificationyouwant
toassigntheISdocumenttypeto),typetheISdocumenttypenameorclick to
selectitfromalist.YoucanalsodraganISdocumenttypefromtheNavigation
paneltotheboxbelowtheValidate inputorValidate outputcheckboxesonthe
Input/Outputtab.ForinformationaboutcreatingISdocumenttypes,seeCreating
anISDocumentTypeonpage 233.
Tip! YoucanselectapublishabledocumenttypeoranISdocumenttypeto
definetheinputoroutputhalfofthespecification.
Proceedtothenextsteptospecifythefieldsfortheotherhalfofthespecification.
(IfyouassignedISdocumenttypestoboththeInputandOutputsidesofthis
specification,skiptherestofthisprocedure.)
Important! OnceyouassignanISdocumenttypetotheInputorOutputsideofa
specification,youcannotadd,delete,ormodifythefieldsonthathalfofthe
Input/Outputtab.
Foreachinputoroutputfieldthatyouwanttodefine,dothefollowing:
a
Selectthehalfofthespecification(InputorOutput)whereyouwanttodefinethe
fieldbyclickinganywhereinthathalfslargewhitetextbox.
Click
TypethenameofthefieldandthenpressENTER.
Withthefieldselected,setitspropertiesandapplyconstraintsontheProperties
panel(optional).
onthetoolbarandselectthetypeoffieldthatyouwanttospecify.
Fordetailsonsettingfieldproperties,seeSpecifyingFieldPropertieson
page 247.Fordetailsonapplyingconstraints,seeApplyingConstraintsto
Variablesonpage 255.
e
Ifthefieldisadocumentoradocumentlist,repeatstepsbdtodefineeachofits
members.Use
field.
250
toindenteachmemberbeneaththedocumentordocumentlist
OntheFilemenu,clickSave.
Opentheservicetowhichyouwanttoassignaspecification.
ClicktheInput/Outputtab.
InSpecification Reference,typethefullyqualifiednameofthespecification,orclick
toselectitfromalist.
Important! Whenaspecificationisassignedtoaservice,youcannotadd,delete,or
modifythedeclaredfieldsusingthatservicesInput/Outputtab.
251
252
10
254
255
259
263
263
264
265
266
253
254
XML validation.ThevalidationengineinwebMethodsIntegrationServervalidatesthe
structureandcontentofanXMLdocumentagainstanISschema.
Thefollowingsectionsprovideinformationaboutperformingeachtypeofvalidationand
informationaboutapplyingconstraintstofields.
255
Selectthevariabletowhichyouwanttoapplyconstraints.
YoucanapplyconstraintstovariablesinISdocumenttypes,variablesina
specification,andvariablesdeclaredontheInput/Outputtab.
IntheConstraintscategoryonthePropertiespanel,dothefollowing:
a
Ifyouwanttorequiretheselectedvariabletoexistatruntime,settheRequired
propertytoTrue.Iftheexistenceofthevariableisoptional,setthispropertyto
False.
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.
IftheselectedvariableisaString,Stringlist,orStringtable,andyouwantto
specifycontentconstraintsforthevariable,click andthendooneofthe
following:
Ifyouwanttouseacontenttypethatcorrespondstoabuiltinsimpletypein
XMLSchema,intheContent typelist,selectthetypeforthevariablecontents.
(Foradescriptionofthesecontentconstraints,seeAppendix F,Validation
ContentConstraints.)Toapplytheselectedtypetothevariable,clickOK.
Ifyouwanttocustomizethecontenttypebychangingtheconstrainingfacets
appliedtothetype,seeCustomizingaStringContentTypeonpage 257.
IfyouwanttouseasimpletypefromanISschemaasthecontentconstraint,
clicktheBrowsebutton.IntheBrowsedialogbox,selecttheISschema
containingthesimpletypeyouwanttoapply.Then,selectthesimpletypeyou
wanttoapplytothevariable.Toapplytheselectedtypetothevariable,click
OK.
Ifyouwanttocustomizethecontenttypebychangingtheconstrainingfacets
appliedtothetype,seeCustomizingaStringContentTypeonpage 257.
256
Note: AcontenttypecorrespondstoasimpletypefromanXMLSchema
definition.AllofthechoicesintheContent typelistcorrespondtosimpletypes
definedinXMLSchemaPart2:Datatypes.
e
Repeatthisprocedureforeachvariabletowhichyouwanttoapplyconstraintsinthe
ISdocumenttype,specification,serviceinput,orserviceoutput.
OntheFilemenu,clickSave.
modifier.
257
Whenyoucustomizeatype,youactuallycreateanewcontenttype.Developersavesthe
changesasanewcontenttypenamedcontentType_customized.Forexample,ifyou
customizethestringcontenttype,Developersavesthenewcontenttypeas
string_customized.
Note: WhenyoueditasimpletypedefinitioninanISschema,thechangesaresavedto
theselectedtypedefinitionintheISschema.Themodificationsaffectanyvariableto
whichthesimpletypeisappliedasacontenttypeconstraint.Formoreinformation
abouteditingasimpletypedefinition,seeEditingaSimpleTypeinanISSchema
onpage 231.
Whencustomizingacontenttype,keepthefollowingpointsinmind:
Whenyouedittheconstrainingfacetsappliedtoacontenttype,youcanonlymake
theconstrainingfacetvaluesmorerestrictive.Theconstrainingfacetscannotbecome
lessrestrictive.Formoreinformationaboutsettingvaluesforconstrainingfacets,see
SettingConstrainingFacetValuesonpage 233.
Theconstrainingfacetsyoucanspecifydependonthecontenttype.Formore
informationabouttheconstrainingfacetsforeachcontenttype,seeAppendix C,
SupportedDataTypesonpage 405.
Thecustomizedcontenttypeappliesonlytotheselectedvariable.Tomakechanges
thataffectallvariablestowhichthecontenttypeisapplied,editthecontenttypein
theISschema.(StringcontenttypesaresimpletypesfromISschemas.)Formore
informationabouteditingsimpletypes,seeEditingaSimpleTypeinanISSchema
onpage 231.
To customize a content type
1
Selectthevariabletowhichyouwanttoapplyacustomizedcontenttype.
IntheConstraintscategoryonthePropertiespanel,clicktheContent typebrowse
button(
)andthendooneofthefollowingtoselectthecontenttypeyouwantto
customize:
IntheContent typelist,selectthecontenttypeyouwanttocustomize.
IfyouwanttocustomizeasimpletypefromanISschema,clicktheBrowsebutton.
IntheBrowsedialogbox,selecttheISschemacontainingthesimpletype.Then,
selectthesimpletypeyouwanttocustomizeandapplytothevariable.
ClicktheCustomizebutton.Developermakestheconstrainingfacetfieldsbelowthe
Content typelistavailablefordataentry(thatis,changesthebackgroundofthe
constrainingfacetfieldsfromgreytowhite).Developerchangesthenameofthe
contenttypetocontentType_customized.
InthefieldsbelowtheContent typelist,specifytheconstrainingfacetvaluesyouwant
toapplytothecontenttype.Formoreinformationaboutconstrainingfacets,see
ConstrainingFacetsonpage 448.
258
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
Constraint status
Requiredfield.
Optionalfield.
Requiredfieldwithcontenttypeconstraint
Optionalfieldwithcontenttypeconstraint
Note: DeveloperdisplaysthesymbolnexttoString,Stringlist,andStringtable
variableswithacontenttypeconstraintonly.Developerdoesnotdisplaythe
symbolnexttoObjectandObjectlistvariableswithaspecifiedJavaclassconstraint.
ObjectandObjectlistswithanappliedJavaclassconstrainthaveauniqueicon.For
moreinformationabouticonsforconstrainedObjects,seeJavaClassesforObjects
onpage 407.
259
serviceexecutes.Ifyouspecifythatyouwanttovalidatetheoutputsoftheservice,the
validationenginevalidatestheserviceoutputvaluesimmediatelyaftertheservice
executes.Aninputoroutputvalueisinvalidifitdoesnotconformtotheconstraints
appliedtotheinputoroutputparameter.
Forinput/outputvalidation,theservicessdeclaredinputandoutputparametersactas
theblueprintormodelagainstwhichinput/outputvaluesarevalidated.Toeffectively
usetheinputandoutputparametersastheblueprintforvalidation,youneedtoapply
constraintstotheparameters.Forinformationaboutapplyingconstraintstovariables,
seeApplyingConstraintstoVariablesonpage 255.Forinformationaboutdeclaring
serviceinputandoutputparameters,seeDeclaringInputandOutputParametersfora
Serviceonpage 122.
.
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.
Note: Ifyouspecifyinput/outputvalidationviatheINVOKEstepandaninputor
outputvalueisinvalid,theserviceitselfdoesnotactuallyfail.Thevalidationengine
validatesinputvaluesbeforewebMethodsIntegrationServerexecutestheservice.If
theserviceinputisnotvalid,theINVOKEflowstepfortheservicefails.Similarly,the
validationenginevalidatesoutputvaluesafterwebMethodsIntegrationServer
executestheservice.Iftheserviceoutputisnotvalid,theINVOKEflowstepforthe
servicefails.Whetherornottheentireflowservicefailswhenanindividualflowstep
failsdependsontheexitconditionsfortheservice.Forinformationaboutspecifying
exitconditions,seeUsingSEQUENCEtoSpecifyanExitConditiononpage 176.
260
Opentheserviceforwhichyouwanttovalidateinputand/oroutputeverytimethe
serviceisinvoked.
ClicktheInput/Outputtab.
Ifyouwanttheinputoftheservicevalidatedeverytimetheserviceexecutes,select
theValidate inputcheckbox.
Ifyouwanttheoutputoftheservicevalidatedeverytimetheserviceexecutes,select
theValidate outputcheckbox.
OntheFilemenu,clickSave.
Input/Output tab with validation processing enabled
Service output
values will not be
validated.
261
Inthefloweditor,selecttheINVOKEstepcontainingtheserviceforwhichyouwant
IntegrationServertovalidateinputand/oroutputvalues.
IntheGeneralcategoryonthePropertiespanel,dothefollowing:
OntheFilemenu,clickSave.
INVOKE properties with validation processing enabled
Inputs to the
invoked service
will be validated.
Outputs of the
service will not be
validated.
262
263
determinewhatcanandcannotbeincludedinthepipeline.Formoreinformationabout
applyingconstraintstovariables,seeApplyingConstraintstoVariablesonpage 255.
Tovalidatethepipeline,invokethebuiltinservice pub.schema:validatePipeline.Thisservice
instructsthevalidationenginetocomparethepipelinecontentsagainstaspecifiedIS
documenttype.Thepipelineisvalidwhenitconformstothestructuralandcontent
constraintsappliedtotheISdocumenttype.Thepub.schema:validatePipelineservicereturns
astringthatindicateswhethervalidationwassuccessfulandanIDataarray(errors
variable)thatcontainsanyvalidationerrors.Formoreinformationaboutthe
pub.schema:validatePipelineservice,seethewebMethodsIntegrationServerBuiltInServices
Reference.
264
Note: IfanISschemacontainsanelementwithanillableattributeandtheelement
generatedfromtheschemaalsocontainstheattributexsi:nil=true,nodocument
validationisperformedonthegeneratedelement.
265
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.
266
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.
value.
To set a maxOccurs threshold value
1
StartwebMethodsIntegrationServerandopentheIntegrationServerAdministrator.
IntheSettingsmenuofthenavigationarea,clickExtended.
InthetextareaunderExtended Settings,type
watt.core.schema.maxOccursThresholdValue=valuewherevalueisthenumberyou
wanttouseasthemaxOccursthreshold.
5
ClickSave Changes.
267
268
11
270
Testing Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
270
271
279
280
281
Setting Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
288
291
295
296
300
269
Testing Services
Youcantestanytypeofservice(flowservicesorcodedservices)withDeveloper,
eliminatingtheneedtobuildspecialclientssimplyfortesting.Italsoallowsyoutoeasily
passdifferentsetsoftestdatatoyourservice,whichmakesiteasytotestyourservice
underavarietyofdataconditions.
YoucanuseDevelopertotestservicesintwoways:
From Developer. Withthistechnique,Developeristheclient.Thatis,Developerinvokes
theserviceandreceivestheresults.
From a browser.Withthistechnique,DeveloperformulatestheURLnecessaryto
invoketheserviceandpassesthatURLtoyourbrowser.Yourbrowseractually
invokestheserviceandreceivestheresults.Whenyoudevelopservicesforbrowser
basedclients(especiallyoneswhoseoutputwillbeformattedusingoutput
templates)youwillwanttotestthoseservicesatleastonceusingthistechnique.
270
Opentheservicethatyouwanttotest.
OntheTestmenu,selectRun.Ifyouhavenotyetsavedchangestotheservice,
Developerpromptsyoutosavethem.
Iftheservicehasinputparameters,typetheinputvaluesforeachvariableinthe
InputdialogboxorclicktheLoadbuttontoretrievethevaluesfromafile.Formore
information,seeEnteringInputforaServiceonpage 272.
IfyouwantDevelopertopassemptyvariables(variablesthathavenovalue)tothe
service,selecttheInclude empty values for String Types checkbox.Whenyouselectthis
option,emptyStringsarepassedwithazerolengthvalue.Ifyoudonotselectthis
option,emptyStringsarenotpassedtotheservice.
Ifyouwanttosavetheinputvaluesthatyouhaveentered,clickSave.Inputvalues
thatyousavecanberecalledandreusedinlatertests.Formoreinformationabout
savinginputvalues,seeSavingInputValuestoaFileonpage 274.
ClickOK.Developerinvokestheservicewiththespecifiedsetofinputvalues.
271
Notes:
Iftheserviceexecutestocompletion,itsresultsappearontheResultspanel.Formore
informationabouttheResultspanel,seeViewingtheResultsoftheServiceon
page 275.
Iftheservicethrowsanexception,anerrormessagedisplays.ClickDetailsinthe
messageboxtoviewthecallstackandthestateofthepipelinewheretheerror
occurred.Formoreinformationabouterrorsthatoccurwhiletestingaservice,see
RunTimeExceptionsonpage 277.
...and complex
documents and
document lists.
YoucanmanuallytypeyourinputvaluesintotheInputdialogboxor,ifyousavedthe
inputvaluesfromanearliertest,youcanloadthemfromafile.
272
Note: IfyourserviceexpectsObjectvariablesthatdonothaveconstraintsassignedor
anObjectdefinedasabyte[],youwillnotbeabletoenterthosevaluesintheInput
dialogbox.Totestthesevaluesinaservice,youmustalsocreateaservicethat
generatesinputvaluesforyourservice.Thenyouneedtoconstructatestharness(a
flowservicethatexecutesboththeservicethatproducesthetestdataandtheservice
youwanttotest)andusethatharnesstotestyourservice.
To enter values by typing them
1
OpentheserviceandexecuteitasdescribedinTestingServicesfromDeveloperon
page 271orTestingServicesfromaBrowseronpage 279.
ForeachvariablelistedintheInputdialogbox,typeaninputvalue.Iftheservice
takescomplexvariablessuchasaStringlists,documents,ordocumentlists,usethe
followingbuttonstospecifythevariablesindividualelements.
Use this
To...
Addarowtothevariable.
Insertablankrowabovethecurrentlyselectedrow.
Addacolumntothevariable.
Deletetheselectedrowfromthevariable.
Deletetheselectedcolumnfromthevariable.
273
OpentheserviceandexecuteitasdescribedinTestingServicesfromDeveloperon
page 271orTestingServicesfromaBrowseronpage 279.
EnterinputvaluesintotheInputdialogboxasdescribedinEnteringInputfora
Serviceonpage 272.
Whenyouarefinishedenteringvalues,clickSave.
IntheSaveFiledialogbox,specifythenameofthefiletowhichyouwantthevalues
saved.
274
BesidesloadingvaluesthatweresavedfromtheInputdialogbox,youcanalsoload
valuesthatweresavedusingpub.flow:savePipelineToFileserviceortheSave Pipeline
commandsontheFilemenu.Inaddition,youcanchangevaluesinthepipeline
duringtesting.Forinformationaboutsavingthestateofthepipeline,seeSavingand
RestoringthePipelineonpage 296.Forinformationaboutmodifyingvaluesinthe
pipeline,seeModifyingtheCurrentPipelineonpage 295.
To load input values that have been saved to a file
1
OpentheserviceandexecuteitasdescribedinTestingServicesfromDeveloperon
page 271.
WhentheInputdialogboxappears,clickLoad.TheLoadFiledialogboxappears.
Selectthefilecontainingtheinputvaluesthatyouwanttoload.
To examine the
contents of a
variable, select it in
the top pane...
TheupperhalfoftheResultspaneldisplaysallthevariablesinthepipeline.Toviewthe
contentsofaparticularvariable,youselectthevariableintheupperhalf.Itscontentsare
showninthelowerhalf.
275
WhenviewingtheResultspanel,keepthefollowingpointsinmind:
TheResultspanelrepresentsthecontentsofthepipeline.
TheResultspanelshowsallvariablesplacedinthepipelinebytheservice,notjust
thosethatweredeclaredintheservicesinput/outputparameters.
Variablesthataserviceexplicitlydropsfromthepipelinedonotappearonthe
Resultspanel.
YoucanbrowsethecontentsoftheResultspanel,butyoucannotedititdirectly.
YoucansavethecontentsoftheResultspaneltoafileandusethatfiletorestorethe
pipelineatalaterpoint.Foradditionalinformationaboutsavingandrestoringthe
contentsoftheResultspanel,seeSavingandRestoringthePipelineonpage 296.
Ifyourunaserviceandanerroroccurs,resultsarenotdisplayedintheResultspanel.
However,youcanclicktheDetailsbuttonintheerrormessageboxtoexaminethe
stateofthepipelineatthepointwheretheexceptionoccurred.
Whendebuggingaflowserviceinstepmode,youcanusetheResultspanelto
examinethestateofthepipelineaftereachflowstep.Youcanoptionallyloada
differentpipelineormodifytheexistingpipelinebetweensteps.Forinformation
aboutloadingapipelineintheResultspanel,seeSavingandRestoringthePipeline
onpage 296.Forinformationaboutmodifyinganexistingpipeline,seeModifying
theCurrentPipelineonpage 295.
WhenyouuseabreakpointortheTrace to Here commandtohaltexecutionofaflow
service,youcanusetheResultspaneltoexaminethepipelineatthatpointwhereyou
haltedtheflow.Youmayalsooptionallyloadadifferentpipelineormodifythe
existingpipelineatthispoint.ForinformationaboutloadingapipelineintheResults
panel,seeSavingandRestoringthePipelineonpage 296.Forinformationabout
modifyinganexistingpipeline,seeModifyingtheCurrentPipelineonpage 295.
VariableswhoseobjecttypesarenotdirectlysupportedbytheDeveloperwillappear
intheResultspanel,butbecauseDevelopercannotrenderthevaluesofsuchobjects,
avaluedoesnotappearintheValuecolumn.Instead,theValuecolumndisplaysthe
objectsJavaclassmessage.
Variablesthatcontaincom.wm.util.TableobjectsappearasdocumentlistsintheResults
panel.
276
Developer inserts
Adatadefinition(forexample,the
Pipelinetab,the Input/Output tab,ora
document(IDataobject))
Thecopiedelementsdatadefinition.
Thenameofanelement
Thecopiedelementsname(andpositionifit
isamemberofacomplexelementsuchasa
Stringtable,document(IDataobject),or
documentlist(IData[])).
DisplaytheResultspanelandselecttheelementthatyouwanttocopy.(When
copyingelementsfromthelowerhalf,youcanselectagroupofcontiguouselements
bypressingtheSHIFTkeyandselectingthefirstandlastelementinthegroupthat
youwanttocopy.)
OntheEdit menu,clickCopy.
Selectthefieldintowhichyouwanttopastetheinformation,thenclickEditPaste
After.(IfthePastecommandisnotavailable,itindicatesthattheinformationcannotbe
pastedintotheselectedfield.)
Run-Time Exceptions
IfaservicethatyourunfromDeveloperthrowsanexception,Developerreportstheerror
inafollowingmessagebox.
YoucanclicktheDetailsbuttontodisplaythecallstackandthepipelineatthepoint
wheretheerroroccurred.
277
The Details button shows the call stack and the pipeline
Note: YoucanimproveperformanceandmemoryusageinDeveloperbycaching
elements,suchasservicesandschemas.Fordetails,seeCachingElementson
page 66.
This service
threw the
exception.
278
NowletsassumethatCHILD_BisaflowservicethatcallsthreeJavaservices:CHILD_B1,
CHILD_B2,andCHILD_B3.IfCHILD_B3throwsanexception,thecallstackwilllooklikethis:
Call stack from a deeply nested service
This service
threw the
exception.
NotethatthecallstackisLIFObased.Thatis,thetopentryinthestackidentifiesthelast
(thatis,mostrecent)serviceinvoked.Thebottomentryidentifiestheparentservice(the
onethatyouoriginallyinvokedfromDeveloper).Iftheparentitselfthrowstheexception,
itwillbetheonlyentryinthecallstack.
Note: ServicesinvokedfromwithinaJavaservicearenotreportedinthecallstack,
eveniftheythrowtheexception.
279
Ifyouaredevelopingservicesthatwillbeinvokedbybrowserbasedclients,particularly
oneswhoseoutputwillbeformattedusingoutputtemplates,youwillwanttotestthose
servicesusingtheRun in Browsercommandtoverifythattheyworkasexpected.
To test a service using a browser as the client
1
Opentheservicethatyouwanttotest.
OntheTestmenu,clickRun in Browser.Ifyouhaveunsavededits,Developerprompts
youtosavethem.
Iftheservicehasinputparameters,typetheinputvaluesforeachvariableinthe
InputdialogboxorclicktheLoadbuttontoretrievethevaluesfromafile.Formore
information,seeEnteringInputforaServiceonpage 272.
Note: OnlyStringsandStringlistsarepassedtothebrowser.
Ifyouwanttopassemptyvariables(variablesthathavenovalue)totheservice,select
theInclude empty values for String Typescheckbox.Whenyouselectthisoption,empty
Stringsarepassedwithazerolengthvalue.Ifyoudonotselectthisoption,
Developerexcludesemptyvariablesfromthequerystringthatitpassestothe
browser.
Ifyouwanttosavetheinputvaluesthatyouhaveentered,clickSave.Inputvalues
thatyousavecanberecalledandreusedinlatertests.Formoreinformationabout
savinginputvalues,seeSavingInputValuestoaFileonpage 274.
ClickOK.DeveloperbuildstheURLtoinvoketheservicewiththeinputsyouhave
specified,launchesyourbrowser,andpassesittheURL.
Iftheserviceexecutessuccessfully,itsresultsappearinyourbrowser.(Ifan
outputtemplateisassignedtotheservice,thetemplatewillbeappliedtothe
resultsbeforetheyarereturned.)
Iftheserviceexperiencesanerror,anerrormessageisdisplayedinthebrowser.
280
Opentheservicethatyouwanttotest.
IntheSelectTestModedialogbox,specifywhetheryouwanttheservicetorunin
TracemodeorStepmodeandclickOK.
IntheSelectFiledialogbox,selecttheXMLfilethatyouwanttosubmittothisservice
andclickOK.Developersubmitsthefiletotheserver,whichparsesitintoanode
objectandpassesittoselectedservice.
Iftheserviceexecutestocompletion,itsresultsappearontheResultspanel.For
moreinformation,seeViewingtheResultsoftheServiceonpage 275.
Iftheserviceexperiencesanerror,anerrormessagedisplays.ClickDetailsinthe
messageboxtoviewthecallstackandthestateofthepipelinewheretheerror
occurred.Foradditionalinformationabouterrorsthatoccurwhiletestinga
service,seeRunTimeExceptionsonpage 277.
281
Description
Trace
Executesflowstepsoneafteranothertotheendoftheserviceand
visuallymarksstepsastheyexecute.Forinformationaboutusing
thiscommand,seeUsingtheTraceToolsonpage 284.
Trace to Here
Executesflowstepsoneafteranotheruptoaspecifiedpointand
visuallymarksstepsastheyexecute.Forinformationaboutusing
thiscommand,seeUsingtheTraceToolsonpage 284.
Trace Into
Executesflowstepsoneafteranothertotheendoftheserviceand
visuallymarksstepsastheyexecute,includingstepsinchildflows.
Forinformationaboutusingthiscommand,seeTracingintoa
ChildFlowonpage 285.
Step
Executesthenextflowstepandthenhalts.Forinformationabout
usingthiscommand,seeUsingtheStepToolsonpage 286.
Step Into
OpensachildfloworaMAPstepsothatyoucandebugthe
individualflowstepswithinit.Forinformationaboutusingthis
command,seeSteppingthoughaChildFlowonpage 287and
UsingtheStepToolswithaMAPSteponpage 288.
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.
282
283
Thefollowingactionsdonotresetadebuggingsession:
Settingbreakpoints
Examiningthecontentsofanyoftheothertabsassociatedwiththeservice
SavingorrestoringthecontentsoftheResultspanel
Use...
Tracetotheendoftheservicewithouttracingchildservices
(breakpointsareignoredinthismode)
Trace
Tracetoaspecifiedpointintheservicewithouttracingchild
services(breakpointsareignoredinthismode)
Trace to Here
Tracetotheendoftheserviceorthenextbreakpoint,includingthe
pathsofallchildservicesthatthisserviceinvokes
Trace Into
Note: Totracethroughatoplevelservice,youmusthaveExecute,Read,andList
accesstotheservice.Totracethroughalltheserviceswithinatoplevelservice,you
musthaveExecute,List,andReadaccesstoallservicesthatthetoplevelservice
invokes.FormoreinformationaboutACLsandthetracetools,seeACLsand
Testing/DebuggingServicesonpage 111.
To trace to the end of a service
1
Opentheservicethatyouwanttotrace.
OntheTestmenu,clickTrace.
284
Iftheserviceisalreadyindebugmode,Developertracestheremainingsteps,
startingfromthecurrentpointofexecution(thestepoutlinedingreen.)
Iftheserviceisnotindebugmode,Developerstartsthetraceatthetopofthe
flow.Ifyouhaveanyunsavedchanges,Developerpromptsyoutosavethose
changesbeforeitstartsthetrace.Iftheservicetakesinput,youwillbeprompted
foritsinputvalues.
Opentheservicethatyouwanttotrace.
Intheeditor,selecttheflowstepuptowhichyouwanttotrace.(Developerwilltrace
allstepsupto,butnotincluding,theoneyouselect.)
Note: Ifthepointtowhichyouwanttotraceresidesinachildoftheservicethat
youaretesting,youmustusethebreakpointfeaturetotracetothatpoint.For
informationaboutsettingbreakpoints,seeSettingBreakpointsonpage 288.
OntheTestmenu,clickTrace to Here.
Iftheserviceisalreadyindebugmode,Developerstartsatthecurrentpointof
execution(thestepoutlinedingreen)andtracestotheselectedstep.Ifthe
selectedstepisbeforethecurrentpointofexecution,thetracestartsatthetopof
theflow.
Iftheserviceisnotindebugmode,Developerstartsthetraceatthetopofthe
flowserviceandtracestotheselectedstep.Ifyouhaveanyunsavedchanges,
Developerpromptsyoutosavethosechangesbeforeitstartsthetrace.Ifthe
servicetakesinput,youwillbepromptedforitsinputvalues.
WhenDeveloperreachestheselectedflowstep,ithalts.Atthispoint,youmaydoany
ofthefollowing:
ExaminethecontentsoftheResultspanel.
Modify,save,and/orrestorethecontentsoftheResultspanel.
UseSteporStep Intotoexecutesubsequentflowstepsoneatatime.
SelectanotherstepintheflowserviceanduseTrace to Heretotracetothatpoint.
SelectTracetotracetheremainderoftheservice.
SelectResettoclearthedebuggingsessionandresetthestartingexecutionpoint
tothetopoftheservice.
285
Opentheparentservicethatyouwanttotest.
OntheTestmenu,clickTrace Into.
Iftheserviceisalreadyindebugmode,Developerstartsthetraceatthecurrent
pointofexecution(thestepoutlinedingreen)andtracestheserviceandits
childrenuntilitreachesabreakpointortheendoftheflow.
Iftheserviceisnotindebugmode,Developerstartsthetraceatthetopofthe
flowandtracestheserviceanditschildrenuntilitreachesabreakpointortheend
oftheflow.Ifyouhaveanyunsavedchanges,Developerpromptsyoutosave
thosechangesbeforeitstartsthetrace.Iftheservicetakesinput,youwillbe
promptedforitsinputvalues.
Use...
Executethecurrentflowstep(theonewiththegreenoutline)
Step
Openachildflowsothatyoucandebugtheindividualflowsteps
withinit
Step Into
Returntotheparentflowfromachildthatyouhavesteppedinto
Step Out
Note: Tostepthroughatoplevelservice,youmusthaveExecute,Read,andList
accesstotheservice.Tostepthroughalltheserviceswithinatoplevelservice,you
musthaveExecute,List,andReadaccesstoallservicesthatthetoplevelservice
invokes.FormoreinformationaboutACLsandthesteptools,seeACLsand
Testing/DebuggingServicesonpage 111.
Note: Whenyoustepintoachildflow,Developerdisplaysthechildflowintheeditor.
Notethatatanypointwhilesteppingthroughaflowservice,youcandoanyofthe
following:
ExaminethecontentsoftheResultspanel.
Modify,save,and/orrestorethecontentsoftheResultspanel.
SelectastepintheflowserviceanduseTrace to Heretotracetothatpoint.
286
SelectTracetotracetheremainderoftheservice.
SelectResettoclearthedebuggingsessionandresetthestartingexecutionpointto
thetopoftheservice.
To step through a flow service
1
Opentheservicethatyouwanttostepthrough.
OntheTestmenu,clickStep.
Iftheserviceisalreadyindebugmode,Developerexecutesthecurrentstep(the
stepoutlinedingreen)andthenstops.
Iftheserviceisnotindebugmode,Developerentersdebugmodeandselectsthe
firststepintheflowservice.Toexecutethatflowstep,selectStepagain.Ifyou
haveanyunsavedchanges,Developerpromptsyoutosavethosechangesbefore
itentersdebugmode.Iftheservicetakesinput,youwillbepromptedforitsinput
values.
Selecttheparentflowserviceandsteportracetotheflowstepthatinvokesthechild
flow.SeeTostepthroughaflowserviceonpage 287orTotracetoaspecified
pointonpage 285ifyouneedproceduresforthisstep.
OntheTestmenu,clickStep Into.Developeropensthechildflowserviceandselects
(butdoesnotexecute)thefirststep.
OntheTestmenu,clickSteptoexecutethefirststepinthechildservice.Repeatthis
stepforeachflowstepthatyouwanttoindividuallyexecutewithinthechild.
Ifyouwanttoreturntotheparentflowservicewithoutsteppingthroughtheentire
child,clickStep OutfromtheTestmenu.Thiscommandwilltracetheremainingsteps
inthechildflow,returntotheparent,andthenselect(butnotexecute)thenextstepin
theparentflow.
Notes:
Whileyouaredebuggingthechild,youmayuseTrace to Hereorsetabreakpoint
toexecuteuptoparticularpointinthechild.
IfyouselectTraceorTrace Intowhileyouaredebuggingthechild,Developertraces
theremainingstepsinthechildandreturnstotheparentautomatically.
IfyouselectSteponthelaststepinthechildflowservice,Developer
automaticallyreturnsyoutotheparent.
287
YoucanuseStep Intotostepintoachildflowthatisnestedwithinachildthatyou
havesteppedinto.
IfyouselectStep Intoonastepthatisnotaflowservice,Stepisexecuted.
SelecttheparentservicethatcontainstheMAPstepandthensteportracetotheMAP
step.(Thatis,maketheMAPstepthecurrentflowstep.Developerindicatesthisby
outliningthestepingreen.)SeeTostepthroughaflowserviceonpage 287orTo
tracetoaspecifiedpointonpage 285ifyouneedproceduresforthisstep.
OntheTestmenu,clickStep Into.DeveloperselectsonthePipelinetab(butdoesnot
execute)thefirsttransformerintheMAPstep.
OntheTestmenu,clickSteptoexecutethefirsttransformer.Repeatthisstepforeach
transformerthatyouwanttoindividuallyexecutewithintheMAPstep.
IfyouwanttoreturntotheparentwithoutsteppingthroughtheentireMAP,select
Step OutfromtheTestmenu.ThistracestheremainingtransformersintheMAP,
returnstotheparent,andselects(butdoesnotexecute)thenextstepintheparent
flow.
Notes:
IfyouselectTraceorTrace IntowhileyouaredebuggingtheMAP,Developertraces
theremainingstepsintheMAPandreturnstotheparentautomatically.
IfyouselectSteponthelasttransformerintheMAP,Developerautomatically
executesthattransformerandreturnsyoutotheparentflow.
YoucanuseStep Intotostepintoatransformerthatisaflowservice.
IfyouselectStep Intoonatransformerthatisnotaflowservice,Stepisexecuted.
Setting Breakpoints
Abreakpointisapointinaflowservicewhereyouwantprocessingtohaltwhenyou
executethatflowservicewithcertaindebugmodes.Breakpointscanhelpyouisolatea
sectionofcodeorexaminedatavaluesataparticularpointintheexecutionpath.For
example,youmightwanttosetapairofbreakpointsbeforeandafteraparticular
segmentofaflowsothatyoucanexaminethepipelineontheResultspanelbeforeand
afterthatsegmentexecutes.
288
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 131.
Tosetabreakpointinaservice,youmusthaveReadaccesstoaservice.However,if
theserviceisinvokedwithinanotherservice(atoplevelservice)towhichyouhave
Readaccess,youcansetabreakpointontheservicewithinthetoplevelservice.
Opentheflowserviceinwhichyouwanttosetabreakpoint.
Intheeditor,selectthestepthatwillfunctionasthebreakpoint.(Duringdebugging,
processingwillhaltimmediatelybeforethisstep).
Opentheflowserviceinwhichyouwanttoclearabreakpoint.
Intheeditor,selectthebreakpointstep.
289
OntheTestmenu,clickBreakpointstodisplaythecurrentlistofbreakpointsonthe
currentserver.
Inthelist,selectthebreakpointthatyouwanttoclear.
ClickRemove.
Opentheflowserviceinwhichyouwanttosetabreakpoint.
Intheeditor,selecttheMAPstepcontainingthetransformerthatwillfunctionasthe
breakpoint.
OnthePipelinetab,selectthetransformerthatwillfunctionasthebreakpoint.(During
debugging,processingwillhaltimmediatelybeforethistransformer.)
iconappearsnexttothetransformer
Opentheflowserviceinwhichyouwanttoclearabreakpoint.
Intheeditor,selecttheMAPstepthatcontainsthetransformerfromwhichyouwant
toclearabreakpoint.
OnthePipelinetab,selectthetransformerfromwhichyouwanttoclearabreakpoint.
290
iconnexttothe
OR
1
OntheTestmenu,clickBreakpointstodisplaythecurrentlistofbreakpointsonthe
currentserver.
Inthelist,selectthebreakpointthatyouwanttoclear.
ClickRemove.
OntheTestmenu,clickBreakpoints.
Ifyouwanttogotoaspecificbreakpoint,selectitandthenclickGo to Breakpoint.
Ifyouwanttoclearabreakpoint,selectitandthenclickRemove.
Note: Remember,breakpointsarenotpersistent.TheyonlyexistduringtheDeveloper
sessiononthecurrentserverinwhichyousetthem.Whenyourefreshorcloseyour
sessiononthecurrentserver,yourbreakpointsarecleared.
291
Disablingastepisusefulinmanytestinganddebuggingsituations.Forexample,you
mightwanttodisableoneormorestepstoisolateaparticularsegmentofaflow,similar
tothewayyoumightcommentoutasectionofsourcecodeinaprogramyouare
testing.
Beawarethatdisablingastepsetsapersistentattributethatissavedintheflowservice.
Onceyoudisableastep,itremainsdisableduntilyouexplicitlyreenableitwith
Developer.
Important! Theruntimeeffectofdisablingastepisthesameasdeletingit.Disablinga
keysteporforgettingtoreenableadisabledstepcanbreakthelogicofaservice
and/orcausetheservicetofail.Developerallowsyoutodisableanystepinaflow
service,butitisyourresponsibilitytousethisfeaturecarefully.
To disable a step in a flow service
1
Opentheflowservicethatyouwanttoedit.
Intheeditor,selectthestepthatyouwanttodisable.
OntheComposemenu,clickDisable Step.
Thestepdims,indicatingthatitisdisabled.
To enable a step in a flow service
Opentheflowservicethatyouwanttoedit.
Intheeditor,selectthedisabledstepthatyouwanttoreenable.
OntheComposemenu,clickEnable Step.
292
Disabling Transformers
YoucanalsousetheComposeDisable StepcommandtodisableatransformerinaMAP
step.Transformersthatyoudisablearenotexecutedatruntime.Infact,webMethods
IntegrationServerdoesnotexecuteanyofthelinksbetweenpipelinevariablesandthe
variablesforadisabledtransformer.
DisabledtransformersappeardimmedwhenviewedinDeveloper.
Disabled transformers are not executed at run time
Note: WhenyoudisabletheMAPstep,Developerautomaticallydisablesallofthe
transformersinaMAPstep
Important! Theruntimeeffectofdisablingatransformeristhesameasdeletingit.
Disablingatransformerorforgettingtoreenableadisabledtransformercanbreak
thelogicofaserviceand/orcausetheservicetofail.AlthoughDeveloperallowsyou
todisableanytransformerorstepinaflowservice,usethisfeaturecarefully.
To disable a transformer in a MAP step
1
Opentheflowservicethatyouwanttoedit.
Intheeditor,selecttheMAPstepcontainingthetransformerthatyouwanttodisable.
OnthePipelinetab,selectthetransformeryouwanttodisable.
OntheComposemenu,clickDisable Step.
Thetransformerdims,indicatingthatitisdisabled.
293
Opentheflowservicethatyouwanttoedit.
Intheeditor,selecttheMAPstepcontainingthedisabledtransformerthatyouwant
toenable.
OnthePipelinetab,selectthedisabledtransformerthatyouwanttoenable.
OntheComposemenu,clickEnable Step.
Opentheflowservicethatyouwanttoedit.
Intheeditor,selecttheINVOKEorMAPstepthatcontainsthelinkwiththecondition
youwanttodisable.
OnthePipelinetab,selectthelinkwiththeconditionthatyouwanttodisable.
Opentheflowservicethatyouwanttoedit.
Intheeditor,selecttheINVOKEorMAPstepcontainingthelinkwiththecondition
youwanttoenable.
294
OnthePipelinetab,selectthelinkwiththeconditionthatyouwanttoenable.
IntheResultspanel,selectthenameofthevariableforwhichyouwanttochangethe
value.
RightclickandselectModify Value.
IntheModifyValuedialogbox,typethenewpipelinevalueforthevariable.
ClickOK.ThevalueischangedintheResultspanel.
Todebugtherestoftheservicewiththenewpipelinevalue,usetheStep,Step Into,or
Trace to Herecommand.Keepinmindthatthevalueisonlychangedforthecurrent
debuggingsession;itisnotchangedpermanently.
295
IntheResultspanel,selectthenameofthevariablethatyouwanttodropfromthe
pipeline.
RightclickandselectDrop.ThevariabledisappearsfromtheResultspanel.
Todebugtherestoftheservicewiththedroppedpipelinevalue,usetheStep,Step
Into,orTrace to Herecommand.Keepinmindthatthevalueisonlydroppedforthe
currentdebuggingsession;itisnotdroppedpermanently.
296
Youcanviewapipelinefilewithanordinarytexteditor.Whensavingthepipeline,keep
thefollowingpointsinmind:
OnlyXMLcodablevariablesaresaved.Thisincludes,Strings,Stringlists,String
tables,documents,anddocumentlists.VariablesthatarenotXMLcodablearenot
saved.
Emptyvariablesandnullvariablesaresaved.
DisplaytheResultspanelandclickanywherewithinit.
Rightclickandselectoneofthefollowingcommands:
To
Savethefiletoyourlocalfilesystem.
Note: Ifyouintendtousethepipelinefiletodynamically
restorethepipelineusingpub.flow:restorePipelineFromFile,
useSave Pipeline to Servertosavethefiletotheserver(see
below).
SavethefiletothepipelinedirectoryonwebMethods
IntegrationServer.
Selectthiscommandifyouwanttousethefileto
dynamicallyrestorethepipelineatruntimeusingthe
pub.flow:restorePipelineFromFile service.
3
Dependingonyouractioninthepreviousstep,dooneofthefollowing:
If you selected
Selectthedirectoryinwhichyouwantthefilesavedand
assignanametothefile.
Save Pipeline to
Server
Specifythenameofthefileinwhichyouwantthepipeline
saved.Bydefault,Developersavesthefileto
IntegrationServer_directory\pipeline,whichiswherethe
restorePipelineFromFileserviceexpectspipelinefiles.Ifyou
specifyarelativepathinthefilename,thepathis
understoodtoberelativetothepipelinedirectory.
297
Opentheservice.
Invokepub.flow:savePipelineToFileatthepointwhereyouwanttosaveacopyofthe
pipeline.
Setthefollowingparameter:
Key
Description
filename
Astringthatspecifiesthenameofthefiletowhichyouwantthe
filesaved.Ifyoudonotspecifyafullyqualifiedpath,thefileis
savedrelativetoIntegrationServer_directory\pipeline.
Savetheservice.(IfyouareusingyourownIDE,youwillneedtorecompilethe
service,reregisteritontheIntegrationServer,andreloaditspackage.)
Executetheservice.
Foradditionalinformationaboutpub.flow:savePipelineToFile,seethewebMethodsIntegration
ServerBuiltInServicesReference.
298
DisplaytheResultspanel.(Ifyousimplywanttoinspectasavedpipeline,createa
new,emptyflowserviceanddisplayitsResultspanel.)
Rightclickandselectoneofthefollowingcommands:
To...
Select...
Loadapipelinefilefromyourlocalfilesystem
Loadafilethatresidesinthedefaultpipelinedirectory
onwebMethodsIntegrationServer
Dependingonyouractioninthepreviousstep,dooneofthefollowing:
If you selected...
Selectthefilethatyouwanttoload.
Specifythenameofthefilethatyouwanttoload.
Developerretrievesthefilefrom
IntegrationServer_directory\pipeline.
Opentheservice.
Invokepub.flow:restorePipelineFromFileatthepointwhereyouwanttoloadthepipeline
file.
299
Setthefollowingparameters:
Key
Description
filename
AStringthatspecifiesthenameofthepipelinefile.Ifyoudonot
specifyafullyqualifiedpath,thefileisassumedtoberelativeto
IntegrationServer_directory\pipeline.Forexample,ifyouset
filenametobadPipeline.xml,restorePipelineFromFileexpectsto
findthatfilein
IntegrationServer_directory\pipeline\badPipeline.xml.
merge
AStringthatspecifieswhetheryouwantthecontentsofthefile
toreplaceorbemergedwiththeexistingpipeline.
Set merge to...
To...
false
Replacetheexistingpipelinewiththeone
fromthefile.
true
Mergethecontentsofthefileintotheexisting
pipeline.
Savetheservice.(IfyouareusingyourownIDE,youwillneedtorecompilethe
service,reregisteritonwebMethodsIntegrationServer,andreloaditspackage.)
Executetheservice.
Foradditionalinformationaboutpub.flow:restorePipelineFromFile,seethewebMethods
IntegrationServerBuiltInServicesReference.
300
15:46:58
15:46:58
15:47:00
15:47:03
15:47:10
15:47:10
15:47:11
15:47:14
15:47:14
15:47:14
15:47:14
15:47:15
15:47:18
15:47:20
15:47:20
15:47:21
15:47:21
15:47:21
15:47:21
15:47:22
15:47:22
15:47:22
15:47:22
15:47:22
15:47:26
15:48:07
15:49:12
15:49:14
15:49:15
15:49:30
15:49:35
15:49:36
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
EDT
[ISS.0025.0001C]
[ISS.0025.0006C]
[ISS.0025.0017C]
[ISS.0025.0024C]
[ISS.0025.0023C]
[ISS.0025.0021C]
[ISS.0025.0008C]
[ISS.0025.0010C]
[ISS.0025.0020C]
[ISS.0025.0022C]
[ISS.0025.0018C]
[ISS.0025.0012C]
[ISS.0098.0026D]
[ISS.0098.0026D]
[ISS.0098.0021D]
[ISS.0106.0003D]
[ISS.0106.0005D]
[ISS.0106.0001D]
[ISS.0025.0032C]
[ISS.0100.0001C]
[ISS.0025.0004C]
[ISS.0025.0002C]
[ISS.0025.0011C]
[ISS.0028.0001C]
[ISS.0028.0005C]
[ISS.0028.0005C]
[ISS.0028.0005C]
[ISS.0028.0005C]
[ISS.0028.0005C]
[ISS.0028.0005C]
[ISS.0028.0005C]
[ISS.0028.0005C]
301
detailedlog.Formoreinformationabouttheavailablelogginglevels,seethewebMethods
LoggingGuide.
Thefollowingexampleshowsthestartupcommandyouwouldusetostarttheserverat
thetracedebuglevel.
bin\server.bat debug trace
(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,seewebMethodsLoggingGuide.
Important! DebuglevelsaboveInfoproducelotsofdetailandcanquicklygeneratean
extremelylargelogfile.YoushouldnotrunyourserverattheDebugorTracelevels
exceptforbriefperiodswhenyouareattemptingtotroubleshootaparticularissue.
Youmayalsooptionallyredirectserverlogmessagestotheconsoleinsteadofafile
usingthelog nonestartupswitch.Formoreinformationaboutthisswitchand
debuglevels,seeStartingthewebMethodsIntegrationServerinthewebMethods
IntegrationServerAdministratorsGuide.
302
valueofaparticularvariableinthelogfilesoyoucanexamineitaftertheservice
executes.
Thefollowingexampleshowstwoprogressmessages(highlighted)thatwerepostedto
theserverlogusingpub.flow:debugLog.
Example of messages posted to server log with pub.flow:debugLog
2002-05-28
2002-05-28
2002-05-28
2002-05-28
16:56:12
16:56:53
16:57:56
16:57:56
EDT
EDT
EDT
EDT
[ISS.0028.0005C]
[ISC.0081.0001E]
[ISP.0090.0004C]
[ISP.0090.0004C]
Tousepub.flow:debugLog,takethefollowinggeneralsteps:
1
Invokepub.flow:debugLogatthepointwhereyouwanttheservicetowriteamessageto
theserverlog.
Setthefollowingparameters:
Key
Description
message
AStringthatspecifiesthemessagethatyouwantwrittentoserverlog.
Thiscanbealiteralstringthatyouassigntomessage,however,for
debuggingpurposes,itisoftenusefultolinkthisparametertoa
pipelinevariablewhoseruntimevalueyouwanttocapture.
function
Optional. AStringthatidentifiesyourservice.TheStringyouspecify
willappearinthesecondcolumnofthemessagethatdebugLogwritesto
serverlog.Thepurposeofthislabelistoidentifywhichcomponent
postedthemessagetothelog.
Ifyoudonotassignavaluetofunction,debugLogomitsthelabel.
However,keepinmindthatassigningavaluetofunctionwillmakeit
easierforyoutolocateyourservicesmessagewhenyouexaminethe
logfile.Althoughyoucanassignatextstringofanylengthtofunction,
onlythefirst6charactersappearinthelog.
level
Optional.AStringspecifyingthedebuglevelsunderwhichthis
messageistobepostedtothelog.Iftheserverisrunningatadebug
levellowerthanthevaluesetinlevel,themessageisnotputintothe
logfile.
Ifyoudonotspecifylevel,theFatallevelisassumed,whichmeansthat
themessageispostedtothelogfileregardlessofwhichdebuglevelthe
serverisrunningat.Formoreinformationaboutdebuglevel,see
ServerDebugLevelsonpage 301.
Savetheservice.(IfyouareusingyourownIDE,youwillneedtorecompilethe
service,reregisteritonwebMethodsIntegrationServer,andreloaditspackage.)
Executetheservice.
303
Foradditionalinformationabout pub.flow:debugLog,seethewebMethodsIntegrationServer
BuiltInServicesReference.
304
Tousepub.flow:tracePipeline,takethefollowinggeneralsteps:
1
Invokepub.flow:tracePipelineatthepointwhereyouwanttheservicetodumpacopyof
thepipelinetotheserverlog.
Setthefollowingparameters:
Key
Description
level
Optional. AStringspecifyingthedebuglevelsunderwhichthepipeline
willbepostedtothelog.Iftheserverisrunningatadebuglevellower
thanthevaluesetinlevel,thepipelineisnotwrittentothelogfile.
Ifyoudonotspecifylevel,Fatalisassumed,whichmeansthatthe
pipelineispostedtothelogfileregardlessofwhichdebuglevelthe
serverisrunningat.Formoreinformationaboutdebuglevel,see
ServerDebugLevelsonpage 301.
Savetheservice.(IfyouareusingyourownIDE,youwillneedtorecompilethe
service,reregisteritonwebMethodsIntegrationServer,andreloaditspackage.)
Executetheservice.Foradditionalinformationaboutpub.flow:tracePipeline,seethe
webMethodsIntegrationServerBuiltInServicesReference.
305
306
12
Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
308
310
310
311
317
323
327
328
307
Basic Concepts
InadditiontousingthebuiltinservicesthatwebMethodsIntegrationServerprovides,
youcancreatecustomizedservicesinavarietyofprogramlanguages.Thisallowsyouto
createalibraryofcustomcodethatcanbeaccessedandexecutedfromaflowserviceor
fromaclientapplication.
ThischapterdescribeshowtocreateyourownservicesusingJava,C/C++,andVisual
Basic.
Important! Javaisthenativelanguageforservices.Whenyoucreateservicesinother
languages,youmustwrapthemtoappearasaJavaclasstowebMethodsIntegration
Server.
Whenaserviceisinvoked,webMethodsIntegrationServerpassestheIDataobjecttoit.
TheserviceextractstheactualinputvaluesitneedsfromtheelementswithintheIData
object.Forexample:
public final static void myservice (IData pipeline)
throws ServiceException
{
IDataCursor myCursor = pipeline.getCursor();
if (myCursor.first( "inputValue1" )) {
String myVariable = (String) myCursor.getValue();
.
.
}
myCursor.destroy();
.
.
return;
}
308
AservicereturnsoutputbyinsertingitintoanIDataobject.Anyinformationthatis
producedbytheserviceandmustbereturnedtothecallingprogrammustbewrittento
theIDataobject.Forexample:
public final static void myservice (IData pipeline)
throws ServiceException
{
IDataCursor myCursor = pipeline.getCursor();
if (myCursor.first( "inputValue1" )) {
String myVariable = (String) myCursor.getValue();
.
.
}
myCursor.last();
myCursor.insertAfter( "outputValue1", myOutputVariable );
myCursor.destroy();
return;
}
FormoreinformationaboutusingtheIDataFactoryclass,seethedatapackageinthe
webMethodsIntegrationServerJavaAPIReferenceat:
Developer_directory\doc\api\Java\index.html.
309
310
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 72.
Make sure the folder in which you want to create the service already exists. Ifthefolderdoes
notalreadyexist,useDevelopertocreateit.Fordetails,seeCreatingNewElements
onpage 41.
Make sure that all Java and C services are unlocked or locked by you in the folderinwhichyou
wanttocreatethenewservice.Fordetails,seeLockingJavaandC/C++Serviceson
page 91.
Important! AllJavaservicesthatbelongtothesamefolderresideinthesameJavaclass
file.Thisclasshasthesamenameasthefolder.
311
Developer
automatically
generates required
code for you.
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
Type your
code in here.
312
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.
313
Note: Becauseservicesareimplementedasstaticmethods,mostsharedcodeisusually
staticaswell.
OntheFilemenu,clickNew.
ClickJava ServiceandclickNext.
IntheNewJavaServicedialogbox,nexttoFolder,selectthefolderintowhichyou
wanttosavethisservice.
IntheNamefield,typeanamefortheservice.
ClickFinish.
Ifyouknowthesetofinputsandoutputsyourprogramuses,specifytheseusingthe
Input/Outputtab.
Note: YoucanuseDevelopertoautomaticallygenerateJavacodethatgetsand
putsthoseinputandoutputvaluesinthepipeline.Formoreinformationabout
automaticallygeneratingJavacode,seeGeneratingJavaCodefromService
InputandOutputParametersonpage 315.
TypethecodeforyourserviceatthetopoftheJavaserviceeditor.Forinformation
aboutJavaclassesprovidedwithwebMethodsIntegrationServer,seethewebMethods
IntegrationServerJavaAPIReferenceinDeveloper_directory\doc\api\Java\index.html.
Ifyouwanttomakeadditionalmethodsand/orstructuresavailabletotheservice,
completethefollowingfieldsontheSharedtab.
314
To specify...
Extends
Thenameofthesuperclass(ifany)ofwhichthisclassisan
extension.Ifyouspecifyasuperclass,typeitsJavaclassname
(fullyqualifiedifnecessary).
To specify...
Implements
Thenamesofinterfaceswithinthesuperclassthatthisclass
implements.Takethefollowingstepstospecifyeachinterfacethat
youwanttoimplement:
Click
toaddanewrowtothelist.
TypethenameofavalidJavaclassname(fullyqualifiedif
necessary).Youdonotneedtotypetheimplements
keyword.
Imports
ThenamesofJavapackagesthatthisclassimports.Takethe
followingstepstospecifyeachpackagethatyouwanttoimport:
Click
toaddanewrowtothelist.
TypethenameofavalidJavaclassname(forexample,
com.wm.util.Table)orapackageimportspecification(for
example,java.util.*).Youdonotneedtotypetheimport
keyword.
Source
9
Datastructures,methods,andotherJavacodethatyouwantto
makeavailabletoallservicesinthisfolder.
WhenyoufinishspecifyingyourcodeintheJavaserviceeditorandontheSharedtab,
click
onthetoolbartosaveandcompiletheservice.
10 IfDevelopercannotcompiletheservicebecausetheIntegrationServertowhichyou
areconnectedcannotfindaJavacompiler,Developerdisplaysanerrormessage.Do
thefollowingtoensuretheIntegrationServercanlocatetheJavacompiler:
a
EnsurethataJavacompilerisinstalledonthesamemachineastheIntegration
Server.
AddthelocationoftheJavacompilertothesystempathofthemachinewherethe
IntegrationServerisinstalled.
RestarttheIntegrationServer.
315
Forexample,iftheInput/Outputtabfortheservicedefinesthefollowingvariablesasinput
andoutput:
Input
Output
Variable Name
Type
State
String
Amount
String
Variable Name
Type
Tax
String
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 126.
IfyouwanttogeneratecodeforasubsetofthevariablesontheInput/Outputtab,select
thosevariables.
OntheToolsmenu,clickGenerate Code.
316
Specifythefollowingoptions.
Under this...
Specify...
Specification
Whetheryouwanttogeneratecodefortheinputvariables,the
outputvariables,orboth.
Which fields?
Whetheryouwanttogeneratecodeforallvariablesinthe
Input/Outputtaborjusttheselectedvariables.
ClickFinish.DevelopergeneratescodeandplacesitontheClipboard.
PastethecontentsoftheClipboardintoyoursourcecode.
317
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
WhenyouuseDevelopertobuildaJavaservice,itautomaticallyupdatesandmaintains
thefolderandserviceinformationinthenamespace.However,ifyoubuildaJavaservice
inyourownIDE,youmustuseautilitycalledjcodetocompileyourserviceandgenerate
thenecessaryfilesinthenamespace.
Important! Althoughyoumaywanttoexaminethecontentsofthenamespace
directoriesonyourwebMethodsIntegrationServer,donotmodifythisinformation
byhand.OnlymodifythisinformationusingtheappropriatewebMethodstoolsor
utilities.Inappropriatechanges,especiallytothensdirectoryoftheWmRoot
package,candisableyourserver.
318
Note: ServicescanthrowServiceException.DonotcallService.throwError.
Additionally,
YourJavaclassmustimportthefollowingJavapackages.
com.wm.data.*;
com.wm.app.b2b.server.ServiceException;
com.wm.app.b2b.server.Service;
YourJavaclassmustbepublic.
Forperformancereasons,itisalsorecommendedthatyoumakeyourclassfinal.
Stage 2
319
Stage 3
Stage 4
Stage 5
<<IS-START-IMPORTS>> --com.wm.data.*;
java.util.*;
<<IS-END-IMPORTS>> ---
Youusesimilartagstomarkthebeginningandendofothercomponentsinyoursource
code.Foracompleteexample,seejcodeExampleinAppendix E,jcodetags.For
additionalinformationaboutthejcodeutility,seethenextsectionUsingthejcode
Utility.
320
Make Mode
Youusethismodetoexaminesourcefilesforoneormorefoldersinapackageand
compilethosethathavebeenmodifiedsincetheywerelastcompiled.Thejcodeutility
willreportwhichfileswerecompiled,aswellasanyerrorsthatwereencounteredduring
theprocess.
Tomakeallthecodeinapackage,typethefollowingonthecommandline:
jcode makeall Package
Tocompilesourcefiles,thejcodeutilityinvokestheJDKJavacompiler,javacusingthe
followingcommand:
javac classpath pathName d classDir fileList
WherepathNameistheclasspathtouseforthecompile,classDiristhedestination
directoryforthecompiledclasses,andfileListisalistofthenamesofsourcefilesto
compile.
IfyoudonothavetheJDKinstalled,oryouwanttouseanothercompiler,youcanset
webMethodsIntegrationServerswatt.server.compilepropertytoanewcommandline
(usingtheargumentsdescribedabove).Forinstance,touseIBMsjikes,youwouldset
thispropertyto:
jikes +E nowarn classpath pathName d classDir fileList
Fragment Mode
YouusethismodetoupdatetheJavacodefragmentsandservicesignatures(inputand
outputparameters)inthenamespacebasedonthejcodetagsinthesourcecodefile.The
originalsourcefileisnotmodified,butnamespaceinformationisupdatedandthesource
codefortheservicebecomesavailablethroughDeveloper.
321
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}.
Toupdate(makeandfrag)allthecodeinallpackagesonwebMethodsIntegration
Server,typethefollowingatthecommandline:
jcode upall
ToforceamakeandfragonallpackagesonwebMethodsIntegrationServer,type:
jcode hailmary
322
323
Note: IfyouarerunningtheIntegrationServerasanNTservice,youmust
completeoneofthefollowing:
SettheWindowssystemenvironmentvariablePATHtoinclude
IntegrationServer\lib
OR
CopythewmJNI.dllandwmJNIc.dllfileslocatedinIntegrationServer\lib
tothe
IntegrationServerdirectory
whereIntegrationServeristhedirectoryinwhichyouinstalledthe
IntegrationServer.
OntheFilemenu,clickNew.
ClickC ServiceandclickNext.
IntheNewCServicedialogbox,inthelistnexttoFolder,selectthefolderintowhich
youwanttosavethisservice.
IntheNamefield,typeanamefortheserviceandclickNext.
SelecttheplatformthatdescribesthemachineonwhichyourwebMethods
IntegrationServerisrunning(Developerneedstoknowthisinordertobuildthe
rightmakefile).ClickNext.
Selectthespecificationforthisservice.
ClickFinish.
324
DevelopergeneratesalltheJavacodeneededtosuccessfullycallyourCprogram.You
mayaddyourowncustomcodetotheCserviceeditororitsSharedtabifyouwantto
executeanyspecialproceduresbeforeoraftertheCprogramiscalled,butotherthan
that,thisservicecontainseverythingyouneed.
The C service editor contains code that calls the Java wrapper for the C program
The Shared tab contains code that loads the library containing the C program
325
The Input/Output tab declares the input/output parameters for the service
ThenamesofthefileswillmatchtheservicenameyouspecifiedinDeveloper.
To build the C/C++ source code
1
Locatethesourcecodeandmakefiles.
Copythesourcecodefiletoanewfile(inthesamedirectory)withthefollowingfile
name:
serviceNameImpl.c
Forexample,ifyourservicenameisPostPO,youwouldcopyPostPO.ctoPostPOImpl.c.
YoucreatetheprogramintheserviceNameImpl.cfile,nottheoriginalfile.Thisisthe
fileinwhichthemakefileexpectstofindyoursourcecode.(Thisstepistakento
maintainacopyoftheoriginalsourcefiletowhichyoucanrefer,orrevertbackto,
duringyourdevelopment.)
3
EdittheserviceNameImpl.cfileasnecessarytobuildyourservice.
Thisfilewillcontaininstructivecommentsthatwillguideyourdevelopment.Youcan
alsorefertowebMethodsCAPIforinformationabouthowtousethewebMethods
C/C++APItomakethedatainyourserviceavailabletootherservices.Thisfileis
locatedinDeveloper_directory\doc\api\c\index.html.
326
Editthemakefiletocustomizeitforyourdevelopmentenvironment.Setthe
followingpathsettings:
Set...
To...
JDKDIR
TothedirectorythatcontainstheJavaDevelopmentKit.
SEVRDIR
ThedirectoryinwhichwebMethodsIntegrationServeris
installed.
Important! ThesourcecodefileserviceName.ccontainscodebasedonthe
specificationyouselectedfortheservice.Ifyoueditthespecification,youneedto
regeneratethesourcecodefile.DeveloperdoesnotupdatetheserviceName.cfile
automatically.Formoreinformationaboutgeneratingsourcecodefilesfora
C/C++service,seeGeneratingFilesforaC/C++Serviceonpage 324.
5
Afteryoufinishcodingyourservice,runyourmakefiletocompileit.Followingisa
typicalmakecommand:
make f SalesTax.mak
ThemakefilecompilesyourprogramandputsthefinishedDLLinthecode\libs
directoryinthepackageinwhichtheserviceresides(ifthisdirectorydoesnotexist
whenyourunthemakefile,yourprogramwillnotcompilesuccessfully).
6
Onceyourprogramcompilessuccessfully,restartwebMethodsIntegrationServerto
reloadthecode\libsdirectory.Thismakestheserviceavailableforexecutionand
allowsyoutotestitwithDeveloper.Fordetailsontesting,seeChapter 11,Testing
andDebuggingServices.
327
Requirements
TousewebMethodsIntegrationServerwithCOMorDCOM,yourwebMethods
IntegrationServermustberunningJavaVirtualMachine1.2orlater.
Important! IfyoumodifyVisualBasiccodeintendedforusewithwebMethods
IntegrationServerlibraries,donotusethedebugmodeintheVisualBasic
developmentenvironmenttotestyourcode.(Thedebuggerdoesnotmaintain
referencestowebMethodsIntegrationServerlibraries.)Instead,usealoggingfeature
inyourdevelopmentenvironmenttotestthecode.
Description
progid
TheprogramIDoftheobjectthatyouwanttoinvoke.
OR
guid
TheGloballyUniqueIdentifier(GUID)oftheobjectthatyouwantto
invoke.
context
Thecontextfortheobject,whichisINPROC(DLL),LOCAL_SERVER
(EXE),orREMOTE_SERVER(EXE).
server
DCOMonly.TheTCP/IPdomainnameofthemachinewheretheDCOM
objectislocated.Forexample,doc.rubicon.comor128.111.222.001.
user
Optional.DCOMonly.Thenameoftheuserinwhichtolaunchthe
remoteCOMobject.
password
Optional.DCOMonly.Thepasswordassociatedwithuser.
domain
Optional.DCOMonly.TheWindowsdomainassociatedwithuser.
Note: TheWmWin32packageisdeprecatedforIntegrationServer7.1.
328
TheservicewillreturnareferencetotheobjectcalledpDispatchorthrowanerrorifthe
objectcannotbecreated.
Tip! TheWmWin32packageisinstalledwiththeIntegrationServeronMicrosoft
Windowsplatformsbut,bydefault,isnotenabled.Toviewthepackageandaccessits
serviceswithinDeveloper,firstenableitusingtheIntegrationServerAdministrator.
Description
pDispatch
AnobjectreferencepreviouslyobtainedbythecalltocreateObjector
obtainedintheresultvalueofapreviouscalltoinvoke.
dispName
ThenameoftheCOMmethodorpropertythatyouwanttoinvoke.
accessType
Optional.Thetypeofoperation(METHOD,GET,PUT,PUTREF)tobe
performedondispName.IfyouareinvokingaDCOMobject,alwaysset
accessTypetoGET.Incorrectsettingofthisparameterwillcausethe
invoketofail.
IfyouareunsurewhetheradispNameisamethodorproperty,examine
thecomponentstypelibraryusingOLEVIEWoraMicrosoft
developmentenvironment.
params
Optional.Anobjectarrayofparameters.ThisisexposedinDeveloperas
anarrayofStringsforusability(becauseObjectscannotbemanipulated
inDeveloper),butisinrealityanObjectarray.Ifyouneedtopass
complexornativetypes,youmayhavetocreatethisvaluewithinyour
ownservice.
Iftheinvocationissuccessful,thereturnvalueiscontainedinresult.Iftheresultisan
objectvariable,itcanthenbethetargetofsubsequentcallstoinvokebylinkingtheresult
topDispatchinthenextinvoke.
329
330
13
Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
332
332
335
337
339
341
331
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:
332
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.*
Ensurethattheunlimitedstrengthjurisdictionpolicyfiles
(local_policy.jarandUS_export_policy.jar)areinstalledaspartof
yourJVMinstallation.
Ifthesefilesarenotinstalled,downloadthemasfollows:
IfyouarerunningtheSunJDK1.5.*,downloadthefilesfrom
http://java.sun.com/javase/downloads/index.jsp.
IfyouarerunningtheIBMJDK1.5.*,downloadthefilesfrom
http://www106.ibm.com/developerworks/java/jdk/security/.
Youareusingoneofthecryptographicserviceproviders(CSPs)thatwebMethods
IntegrationServerprovides(Sun,IBM,Entrust,orIAIK).Ifyouareusingadifferent
provider,thelibrariessuppliedbythatprovidermustbedigitallysigned.
Yourclasspathconsistsofatleastthefollowing:
webMethods_directory\common\lib\wm-isclient.jar
webMethods_directory\common\lib\ext\mail.jar
IfyouwanttouseanyclassesintheEntrustToolkit,theclasspathmustcontainthe
following:
webMethods_directory\common\lib\ext\enttoolkit.jar
Limitations
WhenDevelopergeneratesclientcode,itignoresinputoroutputvariablesthatareof
typeObjectorObjectlist.Clientcodeisnotgeneratedforthesevariables.
WhenDevelopergeneratesclientcode,Developerreplacesanyspaceinavariable
namewithanunderscore.
TheclientcodethatDevelopergeneratesdoesnotsupportmultipleinputoroutput
variableswiththesamename.
Ifyouwanttooverridetheselimitations,youwillneedtomodifytheclientcodethat
Developergenerates.
333
Procedure
UsethefollowingproceduretogenerateJavaclientcodethatinvokesaservice:
To generate Java client code that invokes a service
1
Opentheserviceforwhichyouwanttogenerateclientcode.
OntheToolsmenu,clickGenerate Code.
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.
Description
Readme.txt
AfilethatcontainsinformationandinstructionsfortheJavaclient
code.Refertothisfileforinformationaboutcompilingand
runningtheJavaclientapplication.
ServiceName.java
Anexamplefile,encodedinISO8859_1,thatcontainsthe
applicationcodefortheJavaclient.Theapplicationcodeincludes
arudimentaryuserinterfacethatusestheclassesinthe
FolderNamedirectory.Itisnotintendedforuseasisincustom
applications.
334
Assumptions
webMethodsIntegrationServerisrunning.
AplatformthathastheC/C++compiler(forexample,GCC)isinstalled.webMethods
generatescodeforthefollowingplatforms:Windows,Solaris,HPUX,Linux,AIX.
Thewmisclient.jarfileisintheclasspathforDeveloper.Theclient.jarfileisa
webMethodsfilethatislocatedinthewebMethods_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.
335
Procedure
UsethefollowingproceduretohaveDevelopergenerateC/C++clientcodethatinvokesa
service:
To generate C/C++ client code that invokes a service
1
Opentheserviceforwhichyouwanttogenerateclientcode.
OntheToolsmenu,clickGenerate Code.
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.
Description
CReadme.txt
AfilethatcontainsinformationandinstructionsfortheCclient
code.Refertothisfileforinformationaboutcompiling,running,
anddeployingyourC/C++clientapplication.
ServiceName.mak
AfilethatcontainscompilingsettingsfortheC/C++client.Besure
toupdatethisfilewiththecorrectsettingsforyourenvironment.
ServiceName.c
AnexamplefilethatcontainstheC/C++clientcode.Itisnot
intendedforuseasisincustomapplications.
336
Assumptions
webMethodsIntegrationServerisrunning.
VisualBasicVersion6isinstalled.
webMethods7TypeLibraryisinstalled.
Note: ThewebMethods7TypeLibraryisaCOMobjectthatVisualBasicusesto
interactwithwebMethodsIntegrationServer.ThewebMethods7TypeLibraryis
automaticallyinstalledwhenyouinstallDeveloper.
Environment Setup
YoursystemPATHenvironmentvariablemustincludethefollowingdirectory:
webMethods7\jvm\win150\jre\bin\client
Limitations
TheclientcodethatDevelopergeneratessupportsonlyinputvaluesandoutput
valuesoftypeString,Stringlist,andStringtable.
TheclientcodethatDevelopergeneratesdoesnotsupportmultipleinputoroutput
variableswiththesamename.
WhenDevelopergeneratesclientcode,Developerreplacesanyspaceinavariable
namewithanunderscore.
Ifyouwanttooverridetheselimitations,youwillneedtomodifytheclientcodethat
Developergenerates.
Procedure
UsethefollowingproceduretohaveDevelopergenerateVisualBasicclientcodethat
invokesaservice.
To generate Visual Basic client code that invokes a service
1
Opentheserviceforwhichyouwanttogenerateclientcode.
OntheToolsmenu,clickGenerate Code.
337
IdentifythedirectorywhereyouwantDevelopertoplacethegeneratedclientcode.
Eitherselectanexistingdirectoryortypethepathforanewdirectory.Ifyoutypethe
pathforanewdirectory,Developercreatesthedirectory.
ClickFinish.
Developergeneratesseveralfiles,includingtheserviceNameReadMe.txtfile.Thisfile
containsdetailedinformationaboutallthegeneratedfiles.Refertoittocomplete
yourclientapplicationandforinformationaboutdeployingyourclientapplication.
General Files
File Name
Description
ServiceName.vbp
TheVisualBasicprojectfile.
ServiceNameReadme.txt
Thefilethatcontainsinformationandinstructionsforthe
VisualBasicclientcode.Refertothisfileforinformation
aboutdeployingyourVisualBasicclientapplication.
Description
frmArrayInput.frm
Containslayoutandcodethatisusedifanyoftheinput
valuesfortheserviceareoftypeStringlist.
frmOutput.frm
Containslayoutandcodethatisusedwhentheservice
returnsoutput.ItalsocontainstheSetup,Invoke,andExit
buttons.
frmSetup.frm
Containslayoutandcodethatpromptsfortheserver
propertiesforthewebMethodsIntegrationServeron
whichtheservicetoexecuteresides.
frmStringInput.frm
Containslayoutandcodethatisusedifanyoftheinput
valuesfortheserviceareoftypeString.
338
File Name
Description
frmTableInput.frm
Containslayoutandcodethatisusedifanyoftheinput
valuesfortheserviceareoftypeStringtable.
wmSampleLib.bas
Containscodethatisspecifictothesampletemplatethat
Developergenerates.
Description
ServiceName.bas
Anexamplefilethatillustrateshowtousetheserviceclass
inanapplication.Thismoduleisdependentonobjectsin
theprojecttemplatethatDeveloperprovides.Itisnot
intendedforuseasisincustomapplications.
ServiceName.cls
Theserviceobject.Youincludethisobjectinyourown
project.
File Containing the Code that Interacts with webMethods Integration Server
File Name
Description
wmVBConnection.bas
Codeusedasalayerofabstractiontointeractwith
webMethodsIntegrationServer.
Assumptions
webMethodsIntegrationServerisrunning.
Excel97orExcel2000isinstalled.
webMethods7TypeLibraryisinstalled.
Note: ThewebMethods7TypeLibraryisaCOMobjectthatVisualBasicusesto
interactwithwebMethodsIntegrationServer.ThewebMethods7TypeLibraryis
automaticallyinstalledwhenyouinstallDeveloper.
339
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
Opentheserviceforwhichyouwanttogenerateclientcode.
OntheToolsmenu,clickGenerate Code.
IntheLanguagefield,selectExcel 97/2000,andclickNext.
IdentifythedirectorywhereyouwantDevelopertoplacethegeneratedclientcode.
Eitherselectanexistingdirectoryortypethepathforanewdirectory.Ifyoutypethe
pathforanewdirectory,Developercreatesthedirectory.
ClickFinish.
Developergeneratesseveralfiles,includingtheserviceNameReadMe.txtfile.Thisfile
containsdetailedinformationaboutallgeneratedfiles.
CopythewmXLTemplate.xlsfilethatDeveloperprovidestothedirectorythat
containstheclientcodethatDevelopergenerated.ThewmXLTemplate.xlsfileis
locatedintheDeveloper_directory\support\Exceldirectory.
OpenthewmXLTemplate.xlsfile.Whenpromptedtoindicatewhetheryouwantto
enablemacros,selectEnable Macros.
FollowtheinstructionsinthewmXLTemplate.xlsfiletocompleteyourclient
application.SeetheServiceNameReadMe.txtfileforinformationaboutdeployingyour
clientapplication.
340
Description
ServiceNameReadMe.txt
Afilethatcontainsinformationandinstructionsforthe
VisualBasicclientcode.Refertothisfileforinformation
aboutdeployingyourVisualBasicclientapplication.
ServiceName.bas
Anexamplefilethatillustrateshowtousetheserviceclass
inaspreadsheet.Thismoduleisdependentonobjectsin
theprojecttemplatethatDeveloperprovides.Itisnot
intendedforuseasisincustomapplications.
ServiceName.cls
Theserviceobject.Youincludethisobjectintoyourown
project.
Assumptions
webMethodsIntegrationServerisrunning.
Theinputvaluesfortheservicesyouwanttoinvokearedetermined.Youwillneedto
includetheinputvaluesintheURLthatyouusetoinvokeaservice.
Limitations
WhenyoutestaserviceusingtheRun in Browsercommand,onlyinputvaluesofthetype
StringandStringlistwillbepassedtotheservice.Inputvaluesofthetypedocument,
documentlist,Object,andObjectlistwillnotbedisplayedwhentheWebpageisserved.
341
http://IS_server:5555/invoke/sample.webPageDemo/getProductCost?sku=A1&quantity=1
Item
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.
Note: IfyouareservingtheWebpagesthatinvokeservicesfromawebMethods
IntegrationServer,youcanusearelativeURLtoinvoketheservice.Bydoingso,you
canservetheexactWebpagefromseveralserverswithouthavingtoupdatethe
URLs.
342
SpecifytheURLfortheserviceintheACTIONattributeandPOSTintheMETHODattribute.
Forexample:
<FORM ACTION="/invoke/sample.webPageDemo/getProductCost" METHOD="POST">
Aftertheuserfillsintheformandsubmitsit,theWebbrowsercreatesadocumentthat
containstheinformationtheusersuppliedintheHTMLform(performsanHTTPPOST).
ThebrowserinvokestheURLidentifiedintheACTIONattribute,whichinvokesthe
serviceonwebMethodsIntegrationServer,andthebrowserpoststhedocumentthat
containstheusersinputinformationtowebMethodsIntegrationServer.Formore
informationabouthowtheservercreatestheIDataobjectthatitsendstotheservice,see
InputtotheServiceonpage 343.
Value
Data Type
sku
A1
String
skuList
A1
Stringlist
quantity
String
quantityList
Stringlist
343
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
Key
Value
Data Type
year
1998
String
yearList
1998
Stringlist
1999
Similarly,iftheHTMLformcontainstwofieldswiththesamenameandausersupplies
valuesformorethanone,theStringvariableintheIDataobjectcontainsonlythevalueof
thefirstvariable;theStringlistvariablecontainsallvalues.Forexample,thefollowing
showssampleHTMLcodethatrenderscheckboxes:
<INPUT TYPE="checkbox" NAME="Color" VALUE="blue">Blue<BR>
<INPUT TYPE="checkbox" NAME="Color" VALUE="green">Green<BR>
<INPUT TYPE="checkbox" NAME="Color" VALUE="red">Red<BR>
Ifthebrowseruserselectsallcheckboxes,thedocumentthatispostedtowebMethods
IntegrationServerwillcontainthreevaluesforthevariablenamedColor.Thefollowing
showstheIDataobjectthattheserverpassestotheservice:
Key
Value
Data Type
Color
blue
String
ColorList
blue
Stringlist
green
red
344
345
346
14
Subscribing to Events
348
350
357
359
360
362
364
366
367
368
370
372
347
14 Subscribing to Events
Description
Alarm
OccurswhenIntegrationServerthrowsanexceptionregardingthe
statusorhealthoftheserver.Theservergeneratesalarmevents
whenausercannotlogontotheserver,aportcannotbestarted,a
userisdeniedaccesstoaport,anerroroccursinClusterManager,
oraservicecannotexecutebecauseoferrors.Subscribetoalarm
eventstoinvokeeventhandlersthatperformspecificactionssuchas
notifyingadministratorsaboutportaccessexceptionsandservice
failures,orsendinginformationtoaconsolewhenaportcannotbe
started.
Audit
Occurswhenaservicegeneratesauditdata.Subscribetoaudit
eventstoinvokespecificactionswhenaparticularserviceorclassof
serviceexecutes.
Exception
Occurseverytimeaservicethrowsanexception.Subscribeto
exceptioneventstoinvokespecificeventhandlerswhenaparticular
serviceorclassofservicefails.
Guaranteed
Delivery
Occurswhenaclientusesguaranteeddeliverytoinvokeaservice
onanIntegrationServerandwhentheserverreturnstheservice
resultstotherequestingclient.Therearetwotypesofguaranteed
deliveryevents:GDStartandGDEnd.SubscribetoGDStartand
GDEndeventstoinvokeeventhandlersthatperformactionssuch
asloggingguaranteeddeliverytransactionstoafileorsending
notification.
JMS Delivery
Failure
OccurswhenthecontentsofaJMSmessagesentfromtheclientside
queuecausetheJMSprovidertothrowanontransienterror.
SubscribetoJMSdeliveryfailureeventstocaptureinformation
aboutJMSmessagesthattheJMSproviderdidnotprocess
successfully.Forexample,youmightwanttousetheeventhandler
tosendnotificationorloginformationabouttheundeliveredJMS
message.
JMS Retrieval
Failure
OccurswhenaJMStriggerserviceendsbecauseofanontransient
ortransienterrorandIntegrationServerisconfiguredtogenerate
JMSretrievalfailureevents.SubscribetoJMSretrievalfailureevents
toinvokeeventhandlerswhenJMSmessageprocessingendsin
error.
348
14 Subscribing to Events
Event Type
Description
Port Status
OccurseachtimeIntegrationServerupdatestheserverstatistics.
Theportstatuseventprovidesinformationaboutthestatusofall
theportsconfiguredonIntegrationServer.Subscribetoportstatus
eventstoinvokeeventhandlersthatperformactionssuchas
sendingportstatusdatatoanetworkmonitoringsystemorwriting
portstatusdatatoalogfile.
Replication
Occurswhenthepub.replicator:generateReplicationEventserviceexecutes.
Subscribetoreplicationeventstoinvokeeventhandlersthat
performactionssuchasnotifyingpackagesubscriberswhena
packageispublishedandmaintainingalogofpulledordistributed
packages.
Security
Occurswhenanadministrativeoroperationalsecurityactiontakes
placeonIntegrationServerandthatsecurityactionisconfiguredfor
auditing.
Administrativeactionsrefertoconfigurationchangesrelatedto
IntegrationServersecurityactivities.Examplesofsecurityactions
include:modificationtoauthorization,authentication,portsettings,
auditsettings,SSLconfiguration,passwordlengths,androot
certificates.
Operationalactionsrefertosuccessfulandunsuccessfullogin
attemptstoIntegrationServer,andsuccessfulorunsuccessfulaccess
toIntegrationServerservices,documents,andportlets.
Session
OccurswhenaclientstartsorendsasessionontheIntegration
ServerorwhentheIntegrationServerterminatesaninactive
session.Therearethreetypesofsessionevents:sessionstart,session
end,andsessionexpire.Subscribetosessioneventstoinvokeevent
handlersthatperformactionssuchasmaintainingyourownlog
files.
Stat events
OccureachtimeIntegrationServerupdatesthestatisticslog
(stats.log).Subscribetostateventstoinvokeeventhandlersthat
performactionssuchasmaintainingyourownlogfileorsending
serverstatisticstoanetworkmonitoringsystem.
Transaction
events
OccurwhenanIntegrationServerbeginsandfinishesprocessinga
guaranteeddeliverytransaction.Therearetwotypesoftransaction
events:TxStartandTxEnd.Subscribetotransactioneventsto
invokeeventhandlersthatperformspecificactions(suchassending
notificationorlogginginformation)whenaparticularguaranteed
deliverytransactionbeginsorfinishesprocessing.
349
14 Subscribing to Events
350
14 Subscribing to Events
Thefollowingsectionscontainmoreinformationabouteachofthesetasks.
Note: Youcanalsousebuiltinservicestoadd,modify,anddeleteeventsubscriptions.
Theseservicesarelocatedinthepub.eventfolder.Formoreinformationaboutbuiltin
services,seethewebMethodsIntegrationServerBuiltInServicesReference.
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.
Usethefollowingproceduretosubscribetoaneventonthecurrentserver.Toperform
thisprocedure,youmusthavealready:
Identifiedtheeventtypeyouwanttosubscribeto
Identifiedtheserviceorservicesthatgenerateaneventyouwanttosubscribeto(if
youwanttosubscribetoanauditevent,exceptionevent,orGDStartevent)
Writtentheeventhandlerthatwillexecutewhentheidentifiedeventoccurs
To subscribe to an event on the current server
1
OntheToolsmenu,clickEvent Manager.
Click
toaddanewsubscriber.
351
14 Subscribing to Events
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 352.
Comment
Anoptionaldescriptivecommentaboutthissubscription.
Enabled
Whetherthesubscriptionisactiveorinactive.Settotruetoactivatethe
subscription.Settofalsetodeactivatethesubscription.(Thisallowsyou
totemporarilysuspendasubscriptionwithoutdeletingit.)
ClickOK.Subscriptionstakeeffectimmediately.
Note: IntegrationServersavesinformationforeventtypesandeventsubscriptionsin
theeventcfg.binfile.ThisfileisgeneratedthefirsttimeyoustarttheIntegration
Serverandislocatedinthefollowingdirectory:IntegrationServer_directory\config.
CopythisfilefromoneIntegrationServertoanothertoduplicateeventsubscriptions
acrossservers.
352
14 Subscribing to Events
Thefollowingtableidentifiestheinformationthatyoucanfilteronforeacheventtype.
Noticethatyoucannotcreateafilterforsomeeventtypes.Fortheseeventtypes,every
generatedeventinvokestheeventhandlerssubscribedtoit.
Important! Theasterisk(*)istheonlywildcardcharacterallowedinaneventfilter.All
othercharactersinthepatternstringaretreatedasliterals.Patternstringsarecase
sensitive.
For this event type...
Alarm Event
Themessagegeneratedbythealarmevent.Createafilterthat
specifiessomeofthetextofthemessage.Theeventhandlerwith
thisfilterwillprocessallalarmeventscontainingthespecified
text.
Thefollowingfilterspecifiesthatanyalarmeventsthatgeneratea
messagecontainingthewordportwillinvoketheevent
handler:
*port*
Audit Event
Thefullyqualifiednameoftheservicethatgeneratestheaudit
event.Createafiltertospecifytheserviceswhoseauditevents
youwanttoinvoketheeventhandler.
Thefollowingfilterspecifiesthattheservice
sgxorders.Authorization:creditAuthwillinvoketheeventhandler:
sgxorders.Authorization:creditAuth
Exception Event
Thefullyqualifiednameoftheservicethatgeneratesthe
exceptionevent.Createafiltertospecifytheserviceswhose
exceptioneventsyouwanttoinvoketheeventhandler.
Thefollowingfilterspecifiesthatallservicesthatstartwiththe
wordcreditandbelongtoanyfolderwillinvoketheevent
handler:
*:credit*
GD End Event
N/A
ThefilterforallGDEndeventsisthefollowing:
*
GD Start Event
Thefullyqualifiednameoftheservicethatisbeinginvokedusing
guaranteeddelivery.Createafiltertospecifytheservicesthat,
wheninvokedusingguaranteeddelivery,willinvoketheevent
handler.
Thefollowingpatternstringspecifiesthatallservicesthatstart
withthewordsendPOandbelongtoanyfolderwillinvokethe
eventhandler:
*:sendPO*
353
14 Subscribing to Events
JMS Delivery
Failure Event
ThenameoftheJMSconnectionaliasusedtosendthemessageto
theJMSprovider.
ThefollowingfilterspecifiesthataJMSdeliveryfailureevent
involvingaJMSconnectionaliaswithXAintheJMSconnection
aliasnamewillinvoketheeventhandler:
*XA*
JMS Retrieval
Failure Event
ThefullyqualifiednameoftheJMStriggerthatcalledthetrigger
serviceforwhichtheerroroccurred.
ThefollowingfilterspecifiesthataJMSretrievalfailureevent
involvingaJMStriggernamedordering:processTransactionwill
invoketheeventhandler:
*ordering:processTransaction*
N/A
Thefilterforallportstatuseventsisthefollowing:
*
Replication Event
Thenameofthepackagebeingreplicated.Createafiltertospecify
thepackagesthat,whenreplicated,willinvoketheeventhandler.
Thefollowingfilterspecifiesthatareplicationeventinvolvingthe
packagenamedAcmePartnerPkgwillinvoketheeventhandler:
AcmePartnerPkg
Security Event
N/A
Youcannotfilteronsecurityevents.
N/A
Thefilterforallsessionendeventsisthefollowing:
*
Session Expire
Event
N/A
Thefilterforallsessionexpireeventsisthefollowing:
*
TheusernamefortheuserstartingthesessionontheIntegration
Serverorthegroupstowhichtheuserbelongs.Createafilterto
specifywhichusersorwhichusergroupsinvokeaneventhandler
whentheystartasessionontheserver.
Thefollowingfilterspecifiesthatasessionstarteventgenerated
byauserintheAdministratorsgroupwillinvoketheevent
handler.
*Administrators*
354
14 Subscribing to Events
Stat Event
N/A
Thefilterforallstateventsisthefollowing:
*
Tx End Event
N/A
ThefilterforallTxEndeventsisthefollowing:
*
Tx Start Event
N/A
ThefilterforallTxStarteventsisthefollowing:
*
sgxorders.Auth:creditAuth
Theservicesgxorders.Auth:creditAuth.
sgxorders.Auth:credit*
Allservicesinthesgxorders.Auth folder,startingwiththe
characterscredit.
sgxorders.Auth:*
Allservicesinthesgxorders.Auth folder.
sgxorders.*
Allservicesinthesgxorders folderanditssubfolders.
*.Auth*:credit*
Allservicesstartingwiththecharacterscreditthat
resideinanysubfolderwhosenamestartsthe
charactersAuth.
*:credit*
Allservicesstartingwiththecharacterscreditinany
folder.
Allservices.
OntheToolsmenu,clickEvent Manager.
355
14 Subscribing to Events
Clickthesubscriptionyouwanttoedit,andthenclick
ModifythefieldsintheEnterInputValuesdialogboxasneededandthenclickOK.
Repeatsteps 24foreachsubscriptionyouwanttovieworedit.
ClickOKwhenyoufinishviewingoreditingeventsubscriptions.Yourchangestake
effectimmediately.
OntheToolsmenu,clickEvent Manager.
Clickthesubscriptionyouwanttoedit,andthenclick
IntheEnterInputValuesdialogbox,intheEnabledlist,selectfalse.
Repeatsteps 24foreacheventsubscriptionyouwanttosuspend.
ClickOKwhenyoufinishsuspendingeventsubscriptions.Yourchangestakeeffect
immediately.
OntheToolsmenu,clickEvent Manager.
Clickthesubscriptionyouwanttodelete,andthenclick
Repeatsteps 2and3foreachsubscriptionyouwanttodelete.
ClickOKwhenyoufinishdeletingevents.Yourchangestakeeffectimmediately.
356
14 Subscribing to Events
Stage 2
Stage 3
Stage 4
Stage 5
CreateanemptyflowserviceandnameitprocessLogon.
Stage 2
IntheSelectdialogbox,navigatetoandselectthepub.event:sessionStartspecification.
ClickOK.
357
14 Subscribing to Events
Stage 3
Ontheeditortoolbar,click
IntheBrowsedialogbox,navigatetoandselectthepub.client:smtpservice.ClickOK.
andselectBrowse.
modifiertoassignvaluestothefollowing
Specify
to
Theemailaddressforthepersontosendeventnotificationto.
subject
%userid% logged in
ThesubjectoftheemailmessagewillcontaintheuserIDofthe
personwhologgedontotheIntegrationServerasamemberofthe
Administratorsgroup.
mailhost
Thenetworknameofyourmailhost(forexample,
[email protected]).
body
Thebodyoftheemailmessagewillcontaintheusername,session
name,andsessionIDforthepersonwhologgedontothe
IntegrationServerasanAdministrator.
4
OntheFilemenu,clickSavetosavetheservice.
Stage 4
UsethetestinganddebuggingtoolsinDeveloper(suchasTestRun)totestand
debugtheservice.Formoreinformationaboutthesetools,seeChapter 11,Testing
andDebuggingServices.
Stage 5
Click
358
toaddaneweventsubscription.
14 Subscribing to Events
IntheEnterInputValuesdialogbox,completethefollowingfields:
In this field
Do this
Service
Click andusetheSelectdialogboxtonavigatetoandselectthe
processLogonservice.
Filter
Type: *Administrators*
ThispatternstringspecifiesthattheprocessLogoneventhandlerwill
executeonlywhenauserbelongingtoausergroupcontainingthe
stringAdministratorslogsontotheserver.
Formoreinformation,seeBuildingHandlersforSessionStart
Eventsonpage 369.
Comment
Specifyadescriptivecommentaboutthissubscription.
Enabled
Selecttruetoactivatethesubscription.
ClickOK.Subscriptionstakeeffectimmediately.
359
14 Subscribing to Events
Description
time
AStringcontainingthedateandtimethatthealarmeventoccurred,inthe
formatyyyy/MM/dd HH:mm:ss.SS
service
AStringcontainingthefullyqualifiednameoftheservicethatgenerated
theevent.Aservicecangenerateanalarmeventwhenaclientinvokesa
servicethataccessesinformationoraserviceonaremoteserver.Ifthe
clientisnotamemberofanallowedgroupfortheportontheremote
server,theservicewillgenerateanalarmevent.
sessionID
AStringcontainingtheidentificationnumberforthesessionduringwhich
thealarmeventwasgenerated.Somealarmeventsarenotgenerated
duringsessions.Inthesecases,thesessionIDvariablewillnotcontaina
value.
msg
AStringcontainingtheerrormessagefromthealarmevent.
Tip! Whenyousubscribeaneventhandlertoanalarmevent,youcancreateafilterfor
themsgfieldtobemoreselectiveaboutthealarmeventsthatinvoketheevent
handler.
360
14 Subscribing to Events
Description
time
AStringcontainingthedateandtimetheeventoccurred.Bydefault,the
formatisyyyyMMddHH:mm:ssz.Youcansettheformatbyspecifying
thewatt.server.dateStampFmtproperty.Forinstructionsabouthowto
specifyserverpropertysettings,seethewebMethodsIntegrationServer
AdministratorsGuide.
threadID
AStringcontainingthehashidentifyingtheserverthreadthatgeneratedthe
auditevent.
service
AStringcontainingthefullyqualifiednameoftheservicethatgenerated
theevent.
ssnid
AStringcontainingtheidentificationnumberforthesessionoftheservice
thatgeneratedtheevent.
result
AStringindicatingtheauditpoint.Willbeoneofthefollowing:
String
Description
Started
Thiseventmarksthebeginningofaservice.
Ended
Thiseventmarkstheendofaservicethatexecuted
successfully.
Failed
Thiseventmarkstheendofaservicethatexecuted
unsuccessfully(thatis,threwanexception)andisnot
configuredtoretryorhasexhaustedallretries.
Note: Tocapturedetailsaboutanyexceptionthatisthrown
whenaservicefails,youmustsubscribetoExceptionEvents.
ForinformationaboutExceptionEvents,seethefollowing
section.
Retried
Aretriedeventwillbecreatedeachtimeaserviceisretried.
Eventsareonlycreatedforaserviceifauditingforthattypeof
eventisenabledfortheservice(forexample,starteventswill
notbecreatedunlessauditingforservicestartisenabledfor
thatservice).
361
14 Subscribing to Events
Key
Description
pipeline
Acopyofthestateofthepipelineatthepointwheretheeventoccurred.
NotethatthiselementisonlyincludedintheinputobjectiftheInclude
pipelinepropertyissettoAlwaysorOn errors onlyorifthewatt.server.auditLog
serverpropertyissettoverbose.FormoreinformationabouttheInclude
pipelinepropertyintheAuditcategoryofthePropertiespanel,seeIncluding
thePipelineintheAuditLogonpage 143.
user
AStringcontainingtheusernamethatinvokedtheservicethatgenerated
theevent.
Theauditeventhandlersthatyoubuildcanmakeuseoftheseinputsastheyneedto.
KeepinmindthatwhentheservicesLog onoptionissettoError, success, and startanaudit
eventhandleriscalledtwiceeachtimeaserviceruns:oncewhentheservicestartsand
againwhenitends.Youreventhandlercancheckthevalueoftheresultparameterto
determinewhetheritisprocessinganauditeventfrombeforeoraftertheservice
executed.FormoreinformationabouttheLog onpropertyintheAuditcategoryofthe
Propertiespanel,seeSpecifyingWhenAuditDataIsGeneratedonpage 142.
Also,ifyoureventhandlerneedsdatafromtheinvokingservicespipeline,makesure
thatservicesInclude pipelineoptionissettoAlwaysorOn errors only.Otherwise,thepipeline
elementwontbeincludedintheinputobjectthatispassedtoyoureventhandler.
Tip! Whenyousubscribeaneventhandlertoanauditevent,youcancreateafilterfor
theservicefieldtospecifytheserviceswhoseauditeventsyouwanttosubscribeto.
Thatis,youcanspecifywhichservicesauditeventsinvoketheeventhandler.
362
14 Subscribing to Events
Description
time
AStringcontainingthedateandtimetheeventoccurred.Bydefault,
theformatisyyyyMMddHH:mm:ssz.Youcansettheformatby
specifyingthewatt.server.dateStampFmtproperty.Forinstructions
abouthowtospecifyserverpropertysettings,seethewebMethods
IntegrationServerAdministratorsGuide.
error
AStringcontainingtheerrormessagefromtheexception.
localizedError
AStringcontainingtheerrormessagetextinthelanguagethat
correspondstoyourlocale.
errorType
AStringcontainingtheexceptiontypethatwasthrown.
errorDump
AStringcontainingmoredetailedinformationabouttheexception(if
theexceptionobjectcontainsdumpinformation).
service
AStringcontainingthefullyqualifiednameoftheservicethat
generatedtheevent.
user
AStringcontainingtheuserthatrequestedtheservicethatgenerated
thisevent.
callStack
Adocument(IDataobject)containingtheitemsinthecallstack.Seethe
pub.event:callStackItemISdocumenttypeforthedefinitionofthe
documentsincallStack.
pipeline
Acopyofthestateofthepipelineatthepointwhentheexception
occurred.
threadID
AStringidentifyingthethreadthatinvokedtheservice.
ssnid
AStringcontainingtheidentificationnumberofthesessionduring
whichtheexceptionoccurred.
errorMsgID
AStringcontainingtheidentificationnumberfortheerrormessage.
errorDetails
Adocument(IDataobject)containingadditionalexceptioninformation
providedbytheauthoroftheJavaservice.Formoreinformationabout
constructingexceptionstoreturnadditionalinformation,seethe
webMethodsIntegrationServerJavaAPIReferenceforthe
com.wm.util.LocalizedExceptionclass.
nestedErrorInfo Adocument(IDataobject)containinganynestederrorsand
exceptions.Seethepub.event:exceptionInfoISdocumenttypeforthe
definitionoftheitemsinnestedErrorInfo.
363
14 Subscribing to Events
Tip! Whenyousubscribeaneventhandlertoanexceptionevent,youcancreateafilter
fortheservicefieldtospecifytheserviceswhoseexceptioneventsyouwantto
subscribeto.Thatis,youcanspecifywhichservicesexceptioneventsinvokethe
eventhandler.
364
14 Subscribing to Events
A Guaranteed Delivery Transaction generates Guaranteed Delivery Events and Transaction Events
webMethods Integration Server
(local)
Service A
Service B
Stage
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.
Fordetailsaboutguaranteeddelivery,seetheGuaranteedDeliveryDevelopersGuide.
Description
time
AStringcontainingthedateandtimethattheeventoccurred,intheformat
yyyy/MM/dd HH:mm:ss.SS.
TID
AStringcontainingthetransactionidentificationnumberoftheservice
thatgeneratedtheGDStartevent.
365
14 Subscribing to Events
Key
Description
svcname
AStringcontainingthenameoftheserviceinvokedusingguaranteed
delivery.
result
AStringcontainingthestatusoftheguaranteeddeliverytransaction,such
asNEW.
Tip! WhenyousubscribeaneventhandlertoaGDStartevent,youcancreateafilter
forthesvcnamefieldtospecifytheservicesinaguaranteeddeliverytransactionthat
youwanttosubscribeto.Thatis,youcanspecifytheservicesthatwheninvoked
usingguaranteeddeliverywillinvoketheeventhandler.
Description
time
AStringcontainingthedateandtimethattheeventoccurred,intheformat
yyyy/MM/dd HH:mm:ss.SS.
TID
AStringcontainingthetransactionidentificationnumberoftheservicethat
generatedtheGDEndevent.
result
AStringcontainingthestatusoftheguaranteeddeliverytransaction,suchas
DONE.
366
14 Subscribing to Events
Description
portStatusInfo
Adocumentreferencelistcontainingstatusinformationforeach
configuredportontheIntegrationServer.
String
Description
time
AStringcontainingthedateandtimethattheevent
occurred,intheformatyyyy/MM/dd HH:mm:ss.SS.
port
AStringcontainingthenumberfortheport.
status
AStringindicatingthestatusoftheport.
protocol
AStringindicatingthetypeofport(forexample,http,
https,ftp,oremail).
primary
AStringindicatingtheprimaryport.Bydefault,the
IntegrationServerdesignatesanHTTPportatport5555as
theprimaryport.
enabled
AStringindicatingwhetherornottheportisenabled.The
valuewillbeoneofthefollowing:
String
Description
true
Theportisenabled.
false
Theportisdisabled.
367
14 Subscribing to Events
Description
time
AStringcontainingthedateandtimethattheeventoccurred,inthe
formatyyyy/MM/dd HH:mm:ss.SS.
action
AuserdefinedStringdescribingtheaction(suchascreateorpush)for
thereplicationevent.Youcanusethevalueoftheactionvariableto
maintainseparatelogsforeachactiontype.
package
AStringcontainingthenameofthereleasedorpushedpackage.
service
AStringcontainingthenameoftheflowservicethatinvokedthe
pub.replicator:generateReplicationEventservice.
Tip! Whenyousubscribeaneventhandlertoareplicationevent,youcancreateafilter
tospecifythepackagethat,whenreplicated,willinvoketheeventhandler.
368
14 Subscribing to Events
Description
time
AStringcontainingthedateandtimetheeventoccurred,intheformat
yyyy/MM/dd HH:mm:ss.SS.
sessionID
AStringcontainingtheidentificationnumberofthesession.
userid
AStringcontainingtheuserIDthattheISclientordeveloperusedto
logontotheIntegrationServer.
sessionName
AStringcontainingthenameofthenewsession.
Tip! WhenyousubscribeaneventhandlertoaSessionStartevent,youcancreatea
filtersothatonlysessionstarteventsgeneratedbyaspecificuserorbyamemberofa
specificgroupinvoketheeventhandler.
Description
time
AStringcontainingthedateandtimethattheeventoccurred,inthe
formatyyyy/MM/dd HH:mm:ss.SS.
sessionID
AStringcontainingtheidentificationnumberofthesession.
rpcs
AStringcontainingthenumberofservicecallsperformedduringthe
session.
age
AStringidentifyinghowlongthesessionexisted(inmilliseconds)
beforeitended.
369
14 Subscribing to Events
Description
time
AStringcontainingthedateandtimetheeventoccurred,intheformat
yyyy/MM/dd HH:mm:ss.SS.
sessionID
AStringcontainingtheidentificationnumberofthesession.
rpcs
AStringcontainingthenumberofservicecallsperformedduringthe
session.
age
AStringidentifyinghowlongthesessionexisted(inmilliseconds)
beforeitexpired.
Description
startTime
AStringcontainingthedateandtimethattheeventoccurred,inthe
formatyyyy/MM/dd HH:mm:ss.SS.
uptime
AStringidentifyingthelengthoftimetheserverhasbeenrunning,in
theformatyyyy/MM/dd HH:mm:ss.SS.
370
14 Subscribing to Events
Key
Description
totalMem
AStringidentifyingthetotalamountofusedandunusedstorage
spaceavailable(inkilobytes)totheIntegrationServer.
freeMem
AStringidentifyingtheamountofunusedstoragespaceavailable(in
kilobytes)totheIntegrationServer.
usedMem
AStringidentifyingtheamountofstorageused(inkilobytes)bythe
IntegrationServer.
freeMemPer
AStringidentifyingthepercentageoffreememory.
usedMemPer
AStringidentifyingthepercentageofusedmemory.
svrT
AStringidentifyingthenumberofexecutingservices.
svrTMax
AStringidentifyingthemaximumnumberofservicesthatexecuted
concurrentlyduringthepreviouspollcycle.
sysT
AStringidentifyingthenumberofthreadsinuse.
sysTMax
AStringidentifyingthemaximumnumberofthreadsthatexecuted
concurrentlyduringthepreviouspollcycle.
conn
AStringidentifyingthenumberofcurrentsessionsontheIntegration
Server.
connMax
AStringidentifyingthemaximumnumberofconnectionsthatran
concurrentlyduringthepreviouspollcycle.
reqTotal
AStringidentifyingthetotalnumberofrequestsduringthepollcycle.
reqAvg
AStringidentifyingtheaverageprocessingdurationforaservice
duringthepreviouspollcycle.
newReqPM
AStringidentifyingthenewrequestsperminuteatthebeginningof
thepollcycle.
endReqPM
AStringidentifyingthenewrequestsperminuteattheendofthepoll
cycle.
errSvc
AStringidentifyingthenumberofservicesthatcompletedwitherrors
sincetheIntegrationServerstarted.
svcRate
AStringidentifyingthenumberofservicestartsandendspersecond
duringthelastpollcycle.
ssnUsed
Numberoflicensedsessionscurrentlyactive.
ssnPeak
Greatestnumberoflicensedsessionsthathaverunconcurrentlyonthe
server.
ssnMax
Maximumnumberofsessionsforwhichtheserverislicensed.
errSys
AStringidentifyingthenumberoferrorsthatwerenotcausedby
servicesinthepreviouspollcycle.
371
14 Subscribing to Events
Description
time
AStringcontainingthedateandtimethattheeventoccurred,intheformat
yyyy/MM/dd HH:mm:ss.SS.
TID
AStringcontainingthetransactionIDfortheguaranteeddelivery
transactionthatgeneratedtheevent.
result
AStringcontainingthestatusoftheguaranteeddeliverytransaction,such
asNEW.
372
14 Subscribing to Events
Description
time
AStringcontainingthedateandtimethattheeventoccurred,intheformat
yyyy/MM/dd HH:mm:ss.SS.
TID
AStringcontainingthetransactionIDoftheguaranteeddelivery
transactionthatgeneratedtheevent.
result
AStringcontainingthestatusoftheguaranteeddeliverytransaction,such
asDONE.
373
14 Subscribing to Events
374
15
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
376
376
377
375
Overview
Whencreatingaservice,youcanconstructandconfiguretheservicetoretry
automaticallyifatransienterroroccursduringserviceexecution.Atransienterrorisan
errorthatarisesfromatemporaryconditionthatmightberesolvedorrestored,suchas
theunavailabilityofaresourceduetonetworkissuesorfailuretoconnecttoadatabase.
TheservicemightexecutesuccessfullyiftheIntegrationServerwaitsashortintervalof
timeandthenretriestheservice.
TosignaltheIntegrationServertoreexecutetheservice,youcanbuildtheserviceto
throwanISRuntimeExceptionwhenatransienterroroccurs.Then,ifaserviceends
becauseofanISRuntimeExceptionandyousetretrypropertiesfortheservice(orthe
triggercallingtheservice),IntegrationServerwillreexecutetheserviceusingthe
originalserviceinput.
Thisappendixprovidesguidanceforbuildingflowservicesthatretryifatransienterror
occursduringserviceexecution.
376
Note: Ifyouinvokeanadapterservicewithinaflowservicethatusesthetrycatch
structure,andthetrycontainsanadapterservice,makesurethatthecatchstructure
caninterprettheadapterserviceexceptionthatsignalsaretry.Youmustensurethat
theerrorevaluatinglogicinthecatchstructurecanaccountfortheadapterservice
exceptionthatsignalsaretry.Ifitdoesnot,theIntegrationServerwillnotretrythe
flowservice.Fordetailsaboutbuildingaflowservicethatthrowsan
ISRuntimeException,seeBuildingaServicethatThrowsanExceptionforRetry,
below.
Formoreinformationaboutadapterservices,seetherelevantadapterguides.
377
Determinewhetherthelasterrorisatransienterrorthatcanberetried.
Note: Iftheflowserviceincludesanadapterservice,andatransienterror
occursduringadapterserviceexecution,theadapterservicethrowsan
exceptionthatextendstheISRuntimeException.
Iftheservicecanberetried,setaflagtoindicatethis.Forexample,youmightseta
variablenamedisTransientErrortotrue.AsubsequentBRANCHstepwilluse
theflagtodeterminewhethertoexecutethepub.flow:throwExceptionForRetryService.
Keepinmindthatyoumightneedtousemorethanoneservicetohandletheerror,
determineifitwascausedbyatransienterror,andsetthetransienterrorflag.
378
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.
8
Description
wrappedException
AnObjectcontaininganyexceptionthatyouwanttoinclude
aspartofthisISRuntimeException.Thismightbethe
exceptionthatcausesthepub.flow:throwExceptionForRetryservice
toexecute.Forexample,iftheserviceattemptstoconnecttoa
databaseandtheconnectionattemptfails,youmightmapthe
exceptiongeneratedbythedatabaseconnectionfailuretothe
wrappedExceptionparameter.
message
Astringcontainingamessagetobeloggedaspartofthis
exception.
Note: Ifyouwanttoinsertretrylogicintoaservicethatmakesdatabasecallsor
involvestransactions,yourserviceneedstoincludelogicforstarting,committing,
androllingbackthetransaction.Specifically,therollbackcallshouldbemadeinthe
catchsequence.
379
Description
Step 1
380
Step
Description
1.1
Description
Step
Description
1.1.1
1.2
Description
1.2.1
1.2.2
381
Description
1.2.3
Step 2
382
Step
Description
2.1
BRANCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
384
EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
386
INVOKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
388
LOOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
389
MAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
390
REPEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
391
SEQUENCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
394
383
BRANCH
TheBRANCHstepselectsandexecutesachildstepbasedonthevalueofoneormore
variablesinthepipeline.Youindicatethevariablesyouwanttobranchonbyspecifyinga
switchvalueorbywritinganexpressionthatincludesthevariables.
Name of the
switch field is
choice
Name1
Name2
NameN
$null
no
$defaul
Branching on Expressions
Whenyoubranchonexpressions,yousettheEvaluate labelspropertyoftheBRANCH
steptotrue.IntheLabelpropertyforeachchildstep,youwriteanexpressionthat
includesoneormorevariables.Atruntime,theBRANCHstepexecutesthefirstchild
stepwithanexpressionthatevaluatestotrue.
Ifyouwanttospecifyachildsteptoexecutewhennoneoftheexpressionsaretrue,set
thelabelofthechildstepto$default.
384
Evaluate
labels is set to
true
if the expression of nth child is
Otherwise
Child1
Child2
ChildN
$defau
TheBRANCHstepinthefollowingillustrationevaluatesexpressionstodeterminewhich
childstepsexecute.TheruntimevalueofBuyerAccount,PromotionalCode,or
shippingMethoddeterminestheshippingchargesaddedtoanorder.
Simple BRANCH step using expressions
Properties
TheBRANCHstephasthefollowingproperties.
Property
Description
Comments
Optional.Specifiesadescriptivecommentforthestep.
Scope
Optional.Specifiesthenameofadocument(IDataobject)inthe
pipelinetowhichyouwanttorestrictthisstep.Ifyouwantthisstepto
haveaccesstotheentirepipeline,leavethispropertyblank.
Timeout
Optional.Specifiesthemaximumnumberofsecondsthatthisstep
shouldrun.Ifthistimeelapsesbeforethestepcompletes,theserver
waitsforthesteptocompleteandthenraisesanexception.
Ifyouwanttousethevalueofapipelinevariableforthisproperty,type
thevariablenamebetween%symbols.Forexample,%expiration%.
Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeoutblank.
385
Property
Description
Label
Optional.(RequiredifyouareusingthisBRANCHstepasatargetfor
anotherBRANCHorEXITstep.)Specifiesanameforthisinstanceof
theBRANCHstep,oranull,unmatched,oremptystring($null,
$default,blank).
Switch
SpecifiestheStringfieldthattheBRANCHstepusestodetermine
whichchildflowsteptoexecute.TheBRANCHstepexecutesthechild
flowstepwhoselabelmatchesthevalueofthefieldspecifiedinthe
Switchproperty.DonotspecifyavalueifyousettheEvaluate labels
propertytoTrue.
Evaluate
labels
Specifieswhetherornotyouwanttheservertoevaluatelabelsofchild
stepsasconditionalexpressions.Whenyoubranchonexpressions,you
enterexpressionsintheLabelpropertyforthechildrenoftheBRANCH
step.Atruntime,theserverexecutesthefirstchildstepwhoselabel
evaluatestoTrue.Tobranchonexpressions,selectTrue.Tobranchonthe
Switchvalue,selectFalse.
EXIT
TheEXITstepexitstheentireflowserviceorasingleflowstep.Specifically,itmayexit
fromthenearestancestorloopstep,aspecifiedancestorstep,theparentstep,orthe
entireflowservice.
TheEXITstepcanthrowanexceptioniftheexitisconsideredafailure.Whenan
exceptionisthrown,userspecifiederrormessagetextisdisplayedbytypingitdirectlyor
byassigningittoavariableinthepipeline.
386
Properties
TheEXITstephasthefollowingproperties.
Property
Description
Comments
Optional.Specifiesadescriptivecommentforthestep.
Label
Optional.(RequiredifyouareusingthisEXITstepasatargetfora
BRANCHstep.)Specifiesanameforthisspecificstep,oranull,
unmatched,oremptystring($null,$default,blank).
Exit from
Required.Specifiestheflowsteporservicefromwhichyouwantto
exit.
Specify this value
To exit the
$parent
Parentflowstep,regardlessofthetypeofstep.
$loop
NearestparentLOOPorREPEATstep.
$flow
Entireflow.
label
Nearestancestorstepthathasalabelthat
matchesthisvalue.
Note: Ifthelabelyouspecifydoesnotmatchthe
labelofanancestorflowstep,theflowwillexit
withanexception.
Signal
Required.Specifieswhethertheexitisconsideredasuccessora
failure.ASUCCESSconditionexitstheflowserviceorstep.AFAILURE
conditionexitstheflowserviceorstepandthrowsanexception.The
textoftheexceptionmessageiscontainedintheFailure message
property.
Failure
message
Optional.Specifiesthetextoftheexceptionmessagethatisdisplayed
whenSignalissettoFAILURE.Ifyouwanttousethevalueofapipeline
variableforthisproperty,typethevariablenamebetween%symbols.
Forexample,%mymessage%.
387
INVOKE
TheINVOKEflowstepinvokesanotherservice.Youcanuseittoinvokeanytypeof
service,includinganotherflowservice.
Properties
TheINVOKEstephasthefollowingproperties.
Property
Description
Comments
Optional.Specifiesadescriptivecommentforthestep.
Scope
Optional.Specifiesthenameofadocument(IDataobject)inthe
pipelinetowhichyouwanttorestrictthisstep.Ifyouwantthisstepto
haveaccesstotheentirepipeline,leavethispropertyblank.
Timeout
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).
Service
Required.Specifiesthefullyqualifiednameoftheservicetoinvoke.
Validate input
Optional.Specifieswhethertheservervalidatestheinputtothe
serviceagainsttheserviceinputsignature.Ifyouwanttheinputtobe
validated,selectTrue.Ifyoudonotwanttheinputtobevalidated,
selectFalse.
Validate output
Optional.Specifieswhethertheservervalidatestheoutputofthe
serviceagainsttheserviceoutputsignature.Ifyouwanttheoutputto
bevalidated,selectTrue.Ifyoudonotwanttheoutputtobevalidated,
selectFalse.
388
LOOP
TheLOOPsteptakesasinputanarrayvariablethatisinthepipeline.Itloopsoverthe
membersofaninputarray,executingitschildstepseachtimethroughtheloop.For
example,ifyouhaveaservicethattakesastringasinputandastringlistinthepipeline,
usetheLOOPsteptoinvoketheserviceonetimeforeachstringinthestringlist.
Youidentifyasinglearrayvariabletouseasinputwhenyousetthepropertiesforthe
LOOPstep.Youcanalsodesignateasinglevariableforoutput.TheLOOPstepcollects
anoutputvalueeachtimeitrunsthroughtheloopandcreatesanoutputarraythat
containsthecollectedoutputvalues.Ifyouwanttocollectmorethanonevariable,
specifyadocumentthatcontainsthefieldsyouwanttocollectfortheoutputvariable.
The LOOP step
No
input is
an array
more input
array
members?
Yes
get next
member of
input array
child
child
child
Properties
TheLOOPstephasthefollowingproperties.
Property
Description
Comments
Optional.Specifiesadescriptivecommentforthestep.
Scope
Optional.Specifiesthenameofadocument(IDataobject)inthe
pipelinetowhichyouwanttorestrictthisstep.Ifyouwantthisstepto
haveaccesstotheentirepipeline,leavethispropertyblank.
Timeout
Optional.Specifiesthemaximumnumberofsecondsthatthisstep
shouldrun.Ifthistimeelapsesbeforethestepcompletes,theserver
waitsforthesteptocompleteandthenraisesanexception.
Ifyouwanttousethevalueofapipelinevariableforthisproperty,type
thevariablenamebetween%symbols.Forexample,%expiration%.
Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeoutblank.
389
Property
Description
Label
Optional.(RequiredifyouareusingthisstepasatargetforaBRANCH
orEXITstep.)Specifiesanameforthisspecificstep,oranull,
unmatched,oremptystring($null,$default,blank).
Input array
Required.Specifiestheinputarrayoverwhichtoloop.Youmust
specifyavariableinthepipelinethatisanarraydatatype(thatis,
Stringlist,Stringtable,documentlist,orObjectlist).
Output array
Optional.Specifiesthenameofthefieldinwhichtheserverplaces
outputdataforaniterationoftheloop.Theservercollectstheoutput
fromtheiterationsintoanarrayfieldwiththesamename.Youdonot
needtospecifythispropertyiftheloopdoesnotproduceoutputvalues.
MAP
TheMAPstepadjuststhepipelineatanypointinaflow.Itmakespipelinemodifications
thatareindependentofanINVOKEstep.
WithintheMAPstep,youcan:
Link(copy)thevalueofapipelineinputfieldtoaneworexistingpipelineoutput
field.
Dropanexistingpipelineinputfield.(Keepinmindthatonceyoudropafieldfrom
thepipeline,itisnolongeravailabletosubsequentservicesintheflow.)
Assignavaluetoapipelineoutputfield.
Performdocumenttodocumentmappinginasingleviewbyinsertingtransformers.
390
Properties
TheMAPstephasthefollowingproperties.
Property
Description
Comments
Optional.Specifiesadescriptivecommentforthisstep.
Scope
Optional.Specifiesthenameofadocument(IData)inthepipelinetowhich
youwanttorestrictthisstep.Ifyouwantthissteptohaveaccesstothe
entirepipeline,leavethispropertyblank.
Timeout
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).
REPEAT
TheREPEATsteprepeatedlyexecutesitschildstepsuptoamaximumnumberoftimes
thatyouspecify.ItdetermineswhethertoreexecutethechildstepsbasedonaRepeat on
condition.Youcansettherepeatconditiontooneofthefollowing:
Repeatifanyoneofthechildstepsfails.
Repeatifalloftheelementssucceed.
YoucanalsospecifyatimeperiodthatyouwanttheREPEATflowsteptowaitbeforeit
reexecutesitschildsteps.
391
child
child
child
reps = reps + 1
wait for
repeat
interval
Yes
Yes
Repeat
condition
met?
No
Exit
No
Exit
Properties
TheREPEATstephasthefollowingproperties.
Property
Description
Comments
Optional.Specifiesadescriptivecommentforthisstep.
Scope
Optional.Specifiesthenameofadocument(IDataobject)inthepipeline
towhichyouwanttorestrictthisstep.Ifyouwantthissteptohaveaccess
totheentirepipeline,leavethispropertyblank.
Timeout
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).
Count
Required.Specifiesthemaximumnumberoftimestheserverreexecutes
thechildstepsintheREPEATstep.SetCountto0(zero)toinstructthe
serverthatthechildstepsshouldnotbereexecuted.SetCounttoavalue
greaterthanzerotoinstructtheservertoreexecutethechildstepsuptoa
specifiednumberoftimes.SetCountto-1toinstructtheservertore
executethechildstepsaslongasthespecifiedRepeat onconditionistrue.
Ifyouwanttousethevalueofapipelinevariableforthisproperty,type
thevariablenamebetween%symbols.Forexample,%servicecount%.
392
Property
Description
Repeat
interval
Optional.Specifiesthenumberofsecondstheserverwaitsbeforere
executingthechildsteps.Specify0(zero)toreexecutethechildsteps
withoutadelay.
Ifyouwanttousethevalueofapipelinevariableforthisproperty,type
thevariablenamebetween%symbols.Forexample,%waittime%.
Repeat on
Required.SpecifieswhentheserverreexecutestheREPEATchildsteps.
SelectSUCCESStoreexecutethechildstepswhentheallthechildsteps
completesuccessfully.SelectFAILUREtoreexecutethechildstepswhen
anyoneofthechildstepsfails.
SUCCESS
AchildwithintheREPEATblockfails.
FAILURE
TheCountlimitisreachedbeforeitschildrenexecute
successfully.
IftheREPEATstepisachildofanotherstep,thefailureispropagatedtoitsparent.
393
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
If exit
condition is
child
child
Properties
TheSEQUENCEstephasthefollowingproperties.
Property
Description
Comments Optional.Specifiesadescriptivecommentforthisstep.
Scope
Optional.Specifiesthenameofadocument(IDataobject)inthepipelineto
whichyouwanttorestrictthisstep.Ifyouwantthissteptohaveaccessto
theentirepipeline,leavethispropertyblank.
Timeout
Optional.Specifiesthemaximumnumberofsecondsthatthisstepshould
run.Ifthistimeelapsesbeforethestepcompletes,theserverwaitsforthe
steptocompleteandthenraisesanexception.
Ifyouwanttousethevalueofapipelinevariableforthisproperty,typethe
variablenamebetween%symbols.Forexample,%expiration%.
Ifyoudonotneedtospecifyatimeoutperiod,leaveTimeoutblank.
Label
394
Optional.(RequiredifyouareusingthisstepasatargetforaBRANCHor
EXITstep.)Specifiesanameforthisspecificstep,oranull,unmatched,or
emptystring($null,$default,blank).
Property
Description
Exit on
Required.SpecifieswhentoexittheSEQUENCEstep.
Specify this value...
To...
FAILURE
Exitthesequencewhenachildstepfails.(Execution
continueswiththenextflowstepintheflowservice.)
TheSEQUENCEstepexecutesitschildstepsuntileither
onefailsoruntilitexecutesallitschildsteps.Thisisthe
default.
Note: WhenaSEQUENCEstepexitsonfailure,the
IntegrationServerrollsbackthepipelinecontents.That
is,theIntegrationServerreturnsthepipelinetothestate
itwasinbeforetheSEQUENCEstepexecuted.
SUCCESS
Exitthesequencewhenachildstepexecutes
successfullyorafterallchildstepsfail.(Execution
continueswiththenextflowstepintheflowservice.)
DONE
Exitthesequenceafterallchildstepsexecute.
TheSEQUENCEstepexecutesallofitschildsteps
regardlessofwhethertheysucceedorfail.
395
396
Regular Expressions
398
398
398
397
B Regular Expressions
Important! Charactersinregularexpressionsarecasesensitive.
retainsthefirst30charactersineachmatchingelementanddiscardstherest.
To
Matchanysinglecharacterexceptanewline.
Example doc.p[/web.ethods/].text
Thisexamplewouldreturnanyparagraphcontainingthestringweb
followedbyanysinglecharacterandthestringethods.Itwouldmatch
bothwebMethodsandwebmethods.
398
B Regular Expressions
Use this
symbol
To
Matchthebeginningofthestringorline.
Example doc.p[/^webMethods/].text
Thisexamplewouldreturnanyparagraphcontainingthestring
webMethodsatthebeginningoftheelementoratthebeginningofany
linewithinthatelement.
Matchtheendofthestringorline.
Exampledoc.p[/webMethods$/].text
Thisexamplewouldreturnanyparagraphcontainingthestring
webMethodsattheendoftheparagraphelementorattheendofany
linewithinthatelement.
Matchtheprecedingitemzeroormoretimes.
Exampledoc.p[/part *555-A/].text
Thisexamplewouldreturnanyparagraphcontainingthestringpart
followedbyzeroormorespacesandthenthecharacters555A.
Matchtheprecedingitem1ormoretimes.
Exampledoc.p[/part +555-A/].text
Thisexamplewouldreturnanyparagraphcontainingthestringpart
followedbyoneormorespacesandthenthecharacters555A.
Matchtheprecedingitem0or1times.
Example doc.p[/part ?555-A/].text
Thisexamplewouldreturnanyparagraphcontainingthestringpart
followedbyzerooronespaceandthenthecharacters555A.
()
Whenusedinanindex,thesecharactersgroupanitemwithintheregular
expression.
Exampledoc.p[/part(,0)+May/].text
Thisexamplewouldreturnanyparagraphcontainingthestringpart
followedbyoneormoreoccurrencesofthecharacters,0andthenthe
charactersMay.
Whenusedinamask,theyspecifycharactersthatyouwanttoretain.
Example doc.p[].text[(^.{25}).*]
Thisexamplewouldkeepthefirst25characterswithineachparagraph
anddiscardtherest.
399
B Regular Expressions
Use this
symbol
To
{n}
Matchtheprecedingitemexactlyntimes.
Example doc.p[/^.{24}webmethods/].text
Thisexamplewouldreturnanyparagraphinwhichtheword
webmethodsstartedinthe25thcharacterpositionoftheparagraph.
{n,}
Matchtheprecedingitemnormoretimes.
Example doc.p[/^.{10,}webmethods/].text
Thisexamplewouldreturnanyparagraphinwhichtheword
webmethodsappearedanywhereafterthe10thcharacterpositionofthe
paragraph.Thatis,thisexamplewouldreturnaparagraphinwhichthe
wordwebmethodsstartedinthe11thorlatercharacterpositionofthe
paragraph.
{0,m}
Matchtheprecedingitemnoneoratmostmtimes.
Exampledoc.p[/^.{0,4}webmethods/].text
Thisexamplewouldreturnanyparagraphinwhichtheword
webmethodsstartedinanyofthefirst5characterpositionsofthe
paragraph.
{n,m}
Matchtheprecedingitematleastntimes,butnotmorethanmtimes.
Exampledoc.p[/^.{1,4}webmethods/].text
Thisexamplewouldreturnanyparagraphinwhichtheword
webmethodsstartedincharacterposition2through5oftheparagraph.
Matchtheexpressionthatprecedesorfollowsthischaracter.
Example doc.p[/webmethods|webMethods/].text
Thisexamplewouldreturnanyparagraphthatcontainedeither
webmethodsorwebMethods.
\b
Matchawordboundary.
Exampledoc.p[/\bport\b/].text
Thisexamplewouldreturnanyparagraphthatcontainedthewordport,
butnotparagraphsthatcontainedthesecharactersaspartofalarger
word,suchasimport,support,portsorported.
\B
Matchaboundarythatisnotawordboundary.
Exampledoc.p[/\B555-A/].text
Thisexamplewouldreturnanyparagraphthatcontainedthecharacters
555AaspartofalargerwordsuchasAZ555A,orDept555A,butnot
555Aalone.
400
B Regular Expressions
Use this
symbol
To
\A
Matchonlyatthebeginningofastring(equivalentto^).
Exampledoc.p[/\AwebMethods/].text
Thisexamplewouldreturnanyparagraphcontainingthestring
webMethodsatthebeginningoftheelementoratthebeginningofany
linewithinthatelement.
\Z
Matchonlyattheendofastring(orbeforeanewlineattheend).
Example doc.p[/webMethods\Z/].text
Thisexamplewouldreturnanyparagraphcontainingthestring
webMethodsattheendoftheparagraphelementorattheendofany
linewithinthatelement.
\n
Matchanewline.
Exampledoc.p[/webMethods\n/].text
Thisexamplewouldreturnanyparagraphcontainingthestring
webMethodsfollowedbythenewlinecharacter.
\r
Matchacarriagereturn.
Example doc.p[/webMethods\r/].text
Thisexamplewouldreturnanyparagraphcontainingthestring
webMethodsfollowedbyacarriagereturn.
\t
Matchatabcharacter.
Exampledoc.p[/\twebMethods/].text
Thisexamplewouldreturnanyparagraphcontainingthestring
webMethodsprecededbyatabcharacter.
\f
Matchaformfeedcharacter.
Exampledoc.p[/webMethods\f/].text
Thisexamplewouldreturnanyparagraphcontainingthestring
webMethodsfollowedbyaformfeedcharacter.
\d
Matchanydigit.Sameas[09].
Exampledoc.p[/part \d555-A/].text
Thisexamplewouldreturnanyparagraphcontainingapartnumberthat
startswithanydigit0through9,andisfollowedbythecharacters555A.
Therefore,itwouldmatchpart1555AbutnotpartA555Aorpart
#555A.
401
B Regular Expressions
Use this
symbol
To
\D
Matchanynondigit.Sameas[^09].
Example doc.p[/part \D555-A/].text
Thisexamplewouldreturnanyparagraphcontainingapartnumberthat
startswithanycharacterotherthan0through9,andisfollowedbythe
characters555A.Therefore,itwouldmatchpartA555Aandpart#555
A,butnotpart1555A.
\w
Matchanywordcharacter.Sameas[09az_AZ].
Exampledoc.p[/part \w4555-A/].text
Thisexamplewouldreturnanyparagraphcontainingapartnumberthat
startswithaletterordigitandisfollowedbythecharacters555A.
Therefore,itwouldmatchpartA555Aandpart1555A,butnotpart
#555A.
\W
Matchanynonwordcharacter.Sameas[^09az_AZ].
Example doc.p[/part \W4555-A/].text
Thisexamplewouldreturnanyparagraphcontainingapartnumberthat
startswithacharacterotherthanaletterordigit,andisfollowedbythe
characters555A.Therefore,itwouldmatchpart#555Aandpart555
A,butnotpart1555AorpartA555A.
\s
Matchanywhitespacecharacter.Sameas[\t\n\r\f].
Exampledoc.p[/\swebMethods/].text
Thisexamplewouldreturnanyparagraphcontainingthestring
webMethodsifitisprecededbyatabcharacter,anewlinecharacter,a
carriagereturn,oraformfeedcharacter.
\S
Matchanynonwhitespacecharacter.Sameas[^\t\n\r\f].
Exampledoc.p[/\SwebMethods/].text
Thisexamplewouldreturnanyparagraphcontainingthestring
webMethods,ifthatstringisnotprecededbyatabcharacter,anewline
character,acarriagereturn,oraformfeedcharacter.
\0
Matchanullstring.
Exampledoc.p[/[^\0]/].text
Thisexamplewouldreturnanyparagraphthatisnotempty(null).
\xnn
Matchanycharacterwiththehexadecimalvaluenn.
Exampledoc.p[/\x1FwebMethods/].text
ThisexamplewouldreturnanyparagraphcontainingtheASCIIunit
separatorcharacter(1F)followedbythecharacterswebMethods.
402
B Regular Expressions
Use this
symbol
To
[]
Matchanycharacterwithinthebrackets.
Exampledoc.p[/part [023]555-A/].text
Thisexamplewouldreturnanyparagraphcontainingapartnumberthat
startswiththenumbers0,2,or3andisfollowedbythecharacters555A.
Therefore,itwouldmatchpart0555Aandpart2555A,butnotpart
4555A.
Thefollowingcharactershavespecialmeaningwhenusedwithin
brackets:
Use this char
To
Excludecharactersfromthepattern.
Exampledoc.p[/part [^023]555-A/].text
Thisexamplewouldreturnanyparagraphcontaininga
partnumberthatdoesnotstartwiththenumbers0,2,
or3,butisfollowedbythecharacters555A.Therefore,
itwouldmatchpart4555AandpartA555A,butnot
part0555A.
Specifyarangeofallowedcharacters.
Exampledoc.p[/part [A-M]555-A/].text
Thisexamplewouldreturnanyparagraphcontaininga
partnumberthatstartswithanyletterAthroughMand
isfollowedbythecharacters555A.Therefore,itwould
matchpartA555AandpartJ555A,butnotpart
N555A.
403
B Regular Expressions
404
Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
406
409
405
Data Types
DataispassedinandoutofaservicethroughanIDataobject.AnIDataobjectisthe
collectionofname/valuepairsonwhichaserviceoperates.AnIDataobjectcancontain
anynumberofelementsofanyvalidJavaobjects,includingadditionalIDataobjectsand
IDataCodableobjects.
EachelementstoredinanIDataobjectcorrespondstoadatatype.Thefollowingtable
identifiesthedatatypessupportedbyDeveloper.
Data Type
Description
Java Type
String
Stringofcharacters.
java.lang.String
Stringlist
AonedimensionalString
array.
java.lang.String[]
Stringtable
AtwodimensionalString
array.
java.lang.String[][]
Document
Adatastructurethatisa
containerforother
variables.Documentscan
containvariablesofany
otherdatatype.The
contentsofadocument
(IDataobject)arestoredas
key/valuepairswherethe
variablenameisthekey.
com.wm.data.IData
Aonedimensionalarray
ofISdocumenttypes
(IData[]orValues[]).
com.wm.data.IData[]
Documentlist
Icon
com.wm.util.Values
Formoreinformation,seethe
webMethodsIntegrationServer
JavaAPIReference.
com.wm.util.Values[]
com.wm.util.Table
Document
reference
Adocumentwhose
structureisdefinedbyan
ISdocumenttype.
Referencetoanexistingobject
whichimplementsthe
com.wm.data.IDatainterfaceor
areferencetoanexisting
com.wm.util.Valuesobject.
Document
referencelist
Adocumentlistwhose
structureisdefinedbyan
ISdocumenttype.
Referencetoanexistingobject
whichimplementsthe
com.wm.data.IDatainterfaceor
areferencetoanexisting
com.wm.util.Valuesobject.
406
Data Type
Object
Objectlist
Icon
Description
Java Type
Adatatypethatdoesnot
fallintoanyofthedata
typesdescribedinthe
aboverows,andisnot
declaredtobeoneofthe
basicJavaclasses
supportednativelyby
IntegrationServer.This
iconisusedforObjectsof
unknowntype.
Anysubclassofjava.lang.Object.
AnarrayofObjectsof
unknowntype.
Anarrayofanysubclassof
java.lang.Object.
Examplejava.util.InputStream
Examplejava.util.InputStream[]
Note: YoucanviewtheactualdatatypesrepresentedbyObjectorObjectlisticonsin
builtinservicesbylookinguptheserviceinthewebMethodsIntegrationServerBuiltIn
ServicesReference.
Note: Developerdisplayssmallsymbolsnexttoavariableicontoindicatevalidation
constraints.Developeruses toindicateanoptionalvariable.Developerusesthe
symboltodenoteavariablewithacontentconstraint.Forinformationaboutapplying
constraintstovariables,seeApplyingConstraintstoVariablesonpage 255.
modifier.
Note: WhenyouinputvaluesforaconstrainedObjectduringtestingorwhen
assigningavalueinthepipeline,Developervalidatesthedatatomakesureitisofthe
correcttype.
407
ThefollowingtableidentifiestheJavaclassesyoucanapplytoObjectsandObjectlist
variablesinDeveloper.
Data Type
Description
Java Class
boolean
Trueorfalse.
java.lang.Boolean
booleanlist
Aonedimensionalbooleanarray.
java.lang.Boolean[]
byte
Signedinteger.Thevaluemustbe
greaterthanorequalto128but
lessthanorequalto127.
java.lang.Byte
byte[]
Aonedimensionalbytearray.
primitivetype
bytelist
Aonedimensionalbytearray.
java.lang.Byte[]
character
Asingleunicodecharacter.
java.lang.Character
characterlist
Aonedimensionalcharacter
array.
java.lang.Character[]
date
Dateandtime.
java.util.Date
datelist
Aonedimensionaldatearray.
java.util.Date[]
double
Doubleprecisionfloatingpoint
number.
java.lang.Double
doublelist
Aonedimensionaldoublearray.
java.lang.Double[]
float
Standardprecisionfloatingpoint
number.
java.lang.Float
floatlist
Aonedimensionalfloatarray.
java.lang.Float[]
integer
Signedinteger.Thevaluemustbe
greaterthanorequalto
2147483647butlessthanorequal
to2147483647.
java.lang.Integer
integerlist
Aonedimensionalintegerarray.
java.lang.Integer[]
long
Signedinteger.Thevaluemustbe
greaterthanorequalto
9223372036854775808butless
thanorequalto
9223372036854775807.
java.lang.Long
longlist
Aonedimensionallongarray.
java.lang.Long[]
408
Icon
Data Type
Icon
Description
Java Class
short
Signedinteger.Thevaluemustbe
greaterthanorequalto32768but
lessthanorequalto32767.
java.lang.Short
shortlist
Aonedimensionalshortarray.
java.lang.Short[]
Note: ObjectandObjectlistvariablesconstrainedwithaJavaclassesshouldbelinked
onlytootherObjectandObjectlistvariablesofthesameJavaclassorofunknown
type.AlthoughDeveloperpermitsalinkbetweenconstrainedObjectsofdifferent
Javaclasses,theruntimebehaviorisundefined.Formoreinformationabout
specifyingJavaclassesforObjects,seeConsiderationsforObjectConstraintson
page 257.
409
If you link
To
Then
Ascalar
variable
Anarrayvariablethatis
empty(thevariabledoesnot
haveadefinedlength)
Thelinkdefinesthelengthofthe
arrayvariable;thatis,itcontains
oneelementandhaslengthofone.
Thefirst(andonly)elementinthe
arrayisassignedthevalueofthe
scalarvariable.
value
[empty]
value
If you link
To
Then
Ascalar
variable
Anarrayvariablewitha
definedlength
Thelengthofthearrayispreserved
andeachelementofthearrayis
assignedthevalueofthescalar
variable.
value
X
Y
Z
value
value
value
If you link
To
Then
Anarray
variable
Ascalarvariable
Thescalarvariableisassignedthe
firstelementinthearray.
X
Y
Z
410
[empty]
If you link
To
Then
Anarray
variable
Anarrayvariablethatdoes
nothaveadefinedlength
Thelinkdefinesthelengthofthe
targetarrayvariable;thatis,itwill
bethesamelengthasthesource
arrayvariable.Theelementsinthe
targetarrayvariableareassigned
thevaluesofthecorresponding
elementsinthesourcearray
variable.
X
Y
Z
[empty]
X
Y
Z
If you link
To
Then
Anarray
variable
Anarrayvariablethathasa
definedlength
Thelengthofthesourcearray
variablemustequalthelengthofthe
targetarrayvariable.Ifthelengths
donotmatch,thelinkwillnot
occur.Ifthelengthsareequal,the
elementsinthetargetarrayvariable
areassignedthevaluesofthe
correspondingelementsinthe
sourcearrayvariable.
X
Y
Z
A
B
C
X
Y
Z
Nolinkoccurs.
V
W
X
Y
Z
A
B
C
Note: Asourcevariablethatisthechildofadocumentlististreatedlikeanarray
becausethereisonevalueofthesourcevariableforeachdocumentinthedocument
list.Forexample:
411
If you link...
To...
StringList
DocumentLis
String
DocumentLis
DocumentList1
String
a
DocumentList1
a
b
c
String b
DocumentList1
String
412
Conditional Expressions
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
414
Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
415
Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
418
Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
424
Addressing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
425
428
413
D Conditional Expressions
Overview
webMethodsIntegrationServerprovidessyntaxandoperatorsthatyoucanusetocreate
expressionsforusewiththeBRANCHstep,pipelinemapping,andtriggers.
InaBRANCHstep,youcanuseanexpressiontodeterminethechildstepthat
webMethodsIntegrationServerexecutes.Atruntime,theIntegrationServerexecutes
thefirstchildstepwhoseconditionalexpressionevaluatestotrue.Formore
informationabouttheBRANCHstep,seeTheBRANCHSteponpage 160
Inpipelinemapping,youcanplaceaconditiononthelinkbetweenvariables.Atrun
time,webMethodsIntegrationServeronlyexecutesthelinkiftheassignedcondition
evaluatestotrue.Formoreinformationaboutapplyingconditionstolinksbetween
variables,seeApplyingConditionstoLinksBetweenVariablesonpage 204.
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 428.
414
D Conditional Expressions
Syntax
Whenyoucreateanexpression,youneedtodeterminewhichvaluestoincludeinthe
expression.Valuescanberepresentedasvariablenames,regularexpressions,numbers,
andstrings.Thefollowingtableidentifiesthetypesofvaluesyoucanuseinan
expressionandthesyntaxforeachvaluetype.
Value Type
Syntax
Description
Regular
Expression
/regularExpression/
Patternmatchingstring.Usethefollowing
syntaxforpatternmatchingofvariablevalues:
variableName=/regularExpression/
Formoreinformationaboutregularexpressions,
seeAppendix B,RegularExpressions.
Variable
variableName
OR
%variableName%
Example
Explanation
sku = /^WM[0-9]+/
Evaluatestotrueifthe
skuvariablehasavalue
thatstartswithWM
andisfollowedbyone
ormoredigits(WM001,
WM95157)
Variablename.Forinformationabouthowtouse
thissyntaxtoaddresschildrenofothervariables
orelementsofarrayvariables,seeAddressing
Variablesonpage 425.
Example
Explanation
price
Valueoftheprice
variable
%address/postalCode%
ValueofthepostalCode
variableintheaddress
document
%poItems[0]%
Valueofthefirst
elementinthepoItems
array
415
D Conditional Expressions
Value Type
Syntax
Description
String
string
Literalstring.Usethisvaluetypetocomparethe
valueofavariabletoastring.
OR
string
Example
Explanation
Favorite Customer
Valueistheliteralstring
FavoriteCustomer
Favorite Customer
Valueistheliteralstring
FavoriteCustomer
Note: Stringsnotenclosedinquotes(or)are
interpretedasvariablenames.
Number
Null
416
number
$null
Number.Thefollowingexamplesindicatethe
acceptednumberformats:
Examples
Explanation
-10, 5, 100
Integers
5.0, 6.02
Floatingpointnumber
(java.lang.Double)
6.345e+4
Scientificnotation
Variableisnullormissing.Typicallycompared
withavariablenametodetermineifthevariable
isnullormissingfromtheinputdata.
Example
Explanation
%quantity% = $null
Evaluatestotrueifthe
quantityvariableis
missingfromtheinput
dataorisnull
D Conditional Expressions
Boolean
trueorfalse
Example:%myBoolean%=="true"
Thestringconstantintheexpressioniscaseinsensitive.For
example,theexpressions%myBoolean%=="true"and
%myBoolean%=="tRUe"areequivalent.
Byte
xx
Example:10(for0X0A)
Character
a
Example:C
Double
xxxxxx.xorxxxxxxorxxxxxx
Example:123456.0,123456,123456
Float
xxxx.xorxxxx.x
Example:1234.1,1234.1
Integer
xxxxxorxxxxx
Example:12345,12345
Long
xxxxxxorxxxxxx
Example:123456or123456
Short
xxxorxxx
Example:123or123
Date
yyyyMMddHH:mm:sstimezone
Example:2002062500:00:00EDT
417
D Conditional Expressions
Description
Variable
exists
variableName
Evaluatestotrueifthespecifiedvariableexistsand
hasanonnullvalue.
Variable
doesnot
exist
!variableName
This example...
customerID
ThecustomerIDvariableexistsand
isnotnull.
Evaluatestotrueifthespecifiedvariabledoesnot
existorisnull.
This example...
!quantity
Thequantityvariabledoesnot
existorisnull.
Thecolorvariabledoesnotexistor
isnullandthesizevariabledoes
notexistorisnull.
Operators
Expressionscanincluderelationalandlogicaloperators.Relationaloperatorsareusedto
comparevaluestoeachother.Logicaloperatorsareusedtocombinemultipleexpressions
intoasinglecondition.
Relational Operators
Youcanuserelationaloperatorstocomparethevalueoftwofieldsoryoucancompare
thevalueofafieldwithaconstant.TheIntegrationServerprovidestwotypesof
relationaloperators:standardandlexical.
Standardrelationaloperatorscanbeusedinexpressionsandfilterstocomparethe
contentsoffields(variables)withothervariablesorconstants.
Lexicalrelationaloperatorscanbeusedtocomparethecontentsoffields(variables)
withstringvaluesinBroker/localtriggerfilters.
Relationaloperatorsaresometimescalledcomparisonoperators.
418
D Conditional Expressions
Note: Youcanalsousestandardrelationaloperatorstocomparestringvalues.
However,filtersthatusestandardrelationaloperatorstocomparestringvalueswill
notbesavedwiththetriggersubscriptionontheBroker.Ifthesubscriptionfilter
residesonlyontheIntegrationServer,theBrokerautomaticallyplacesthedocument
inthesubscribersqueue.TheBrokerdoesnotevaluatethefilterforthedocument.
TheBrokerroutesallofdocumentstothesubscriber,creatinggreaternetworktraffic
betweentheBrokerandtheIntegrationServerandrequiringmoreprocessingbythe
IntegrationServer.
Syntax
Description
a=b
Equalto.
==
a==b
This example...
customerID = "webMethods"
ThevalueofthecustomerId
variableiswebMethods.
Equalto.
This example...
sku == "WM001"
Thevalueoftheskuvariableis
WM001.
419
D Conditional Expressions
Operator
Syntax
Description
!=
a!=b
Notequalto.
<>
>
>=
<
420
a<>b
a>b
a>=b
a<b
This example...
quantity != 0
Thevalueofthequantityvariable
doesnotequal0(zero).
Notequalto.
This example...
Thevalueofthestatevariabledoes
notequalME(Maine).
Greaterthan.
This example...
Thevalueofthepricevariableis
greaterthan100.
ThevalueofthecompanyID
variableisgreaterthanAcme.
Greaterthanorequalto.
This example...
ThevalueofthetotalPricevariable
isgreaterthanorequalto100.
ThevalueofthecompanyID
variableisgreaterthanorequalto
Acme.
Lessthan.
This example...
quantity < 5
Thevalueofthequantityvariable
islessthan5.
ThevalueofthecompanyID
variableislessthanAcme.
D Conditional Expressions
Operator
Syntax
Description
<=
a<=b
Lessthanorequalto.
This example...
ThevalueoftheunitPricevariable
islessthanorequalto100.
ThevalueofthecompanyID
variableislessthanorequalto
Acme.
421
D Conditional Expressions
Operator
Description
L_EQUALS
Lexicalequalto.
L_NOT_EQUALS
L_LESS_THAN
L_LESS_OR_EQUAL
L_GREATER_THAN
L_GREATER_OR_EQUAL
422
This example...
Thevalueofthe
myStringvariableis
abc.
Lexicalnotequalto.
This example...
Thevalueofthe
myStringvariableis
notabc.
Lexicallessthan.
This example...
Thevalueofthe
myStringvariableis
lessthanabc.
Lexicallessthanorequalto.
This example...
Thevalueofthe
myStringvariableis
lessthanorequalto
abc.
Lexicalgreaterthan.
This example...
Thevalueofthe
myStringvariableis
greaterthanabc.
Lexicalgreaterthanorequalto.
This example...
Thevalueofthe
myStringvariableis
greaterthanorequal
toabc.
D Conditional Expressions
Logical Operators
Youcanusethefollowinglogicaloperatorsinexpressionstocreateconditionsconsisting
ofmorethanoneexpression:
Operator
Syntax
Description
!expr
Negatesthenextexpression.
not
||
or
notexpr
expr|expr
expr||expr
exprorexpr
This example...
! (%sku% = "WM001")
Thevalueoftheskuvariableis
notequaltoWM001.
Negatesthenextexpression.
This example...
Thecolorvariableisnotequal
toblue.
Logical*OR.Trueifeitheroftheexpressionsistrue.
This example...
%color% = "blue" |
%color% = "red"
Thevalueofthecolorvariable
isblueorred.
LogicalOR.Trueifeitheroftheexpressionsistrue.
This example...
ThevalueofthetotalPrice
variableisgreaterthan1000or
thevalueofthecustomerID
variableequalsFavorite
Customer.
LogicalOR.Trueifeitheroftheexpressionsistrue.
This example...
creditCardNum = $null or
cardExpireDate = $null
or cardExpireDate <=
orderDate
ThevalueofthecreditCardNum
variableisnullormissingorif
thevalueofthecardExpireDate
variableisnullormissingorif
thevalueofthecardExpireDate
variableislessthanorequalto
thevalueoftheorderDate
variable.
423
D Conditional Expressions
Operator
Syntax
Description
&
expr&expr
LogicalAND.Bothexpressionsmustevaluatetotrueforthe
entireconditiontobetrue.
&&
and
expr&&
expr
This example...
%customerID% = 'Favorite
Customer' & %sku% =
'WM001'
ThevalueofthecustomerID
variableisFavoriteCustomer
andthevalueofthesku
variableisWM001.
LogicalAND.Bothexpressionsmustevaluatetotrueforthe
entireconditiontobetrue.
exprand
expr
This example...
Thevalueofthequantity
variableisgreaterthanor
equalto20andthevalueofthe
totalPricevariableisgreater
thanorequalto100.
LogicalAND.Bothexpressionsmustevaluatetotrueforthe
entireconditiontobetrue.
This example...
Thecolorvariabledoesnot
existintheinputorisnulland
thesizevariabledoesnotexist
intheinputorisnull.
Precedence
webMethodsIntegrationServerevaluatesexpressionsinaconditionaccordingtothe
precedenceleveloftheoperatorsintheexpressions.
Thefollowingtableidentifiestheprecedencelevelofeachoperatoryoucanuseinan
expression.
Precedence Level
Operators
()
not,!
=,==,!=,<>,>,>=,<,<=
and,&,&&
or,|,||
424
D Conditional Expressions
Note: Tooverridetheorderinwhichexpressionsinaconditionareevaluated,enclose
theoperationsyouwantevaluatedfirstinparentheses.webMethodsIntegration
Serverevaluatesexpressionscontainedinparenthesesfirst.
Addressing Variables
Inanexpression,youcanrefertothevaluesofvariablesthatarechildrenofother
variablesandrefertothevaluesofelementsinanarrayvariable.Toaddresschildrenof
variablesoranelementinanarray,youneedtouseadirectorylikenotationtodescribe
thepositionofthevalue.
Use this notation
To
variableName
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.
425
D Conditional Expressions
To
duplicateVariableName(index)
Addressanoccurrenceofavariable
wheretherearemultiplevariables
withthesamenameinthedocument
orpipeline.Theindexiszerobased.
Example:address(1)
Valueofthesecondvariablenamed
address.
%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 415.
426
D Conditional Expressions
Followingaresomeexamplesofhowtoaddressvariablesthatcontainspecialcharacters.
Type...
To...
%Date/Time%
AddressavariablenamedDate/Time.
%purchaseOrder/"Date/Time%
AddressavariablenamedDate/Timeinthe
documentvariablepurchaseOrder.
Note: IfyoudidnotencloseDate/Timein
quotationmarks,andinsteadhad
%purchaseOrder/Date/Time%or
%purchaseOrder/Date/Time%,theexpression
wouldaddressavariablenamedTimeina
documentnamedDatethatwascontainedina
documentnamedpurchaseOrder.
%address(work)/phone(cell)%
Addressavariablenamedphone(cell)inthe
documentvariableaddress(work).
%Date\\Time%
AddressavariablenamedDate\Time.
Character Name
Special sequence
backslash
\\
openingbracket
closingbracket
openingparenthesis
closingparenthesis
percent
\%
"
quotationmarks
slashmark(forward)
Important! Whenyouusevariablenameswithspecialcharactersinexpressionsor
filters,youmustenclosethevariablenamein(quotationmarks).
427
D Conditional Expressions
428
D Conditional Expressions
Examples
Fieldnameswithsyntax,characters,
symbols,orwordstheBrokerconsiders
restrictedorreserved
Nocomparisonoperators
"fieldName"
"!fieldName"
Astandardrelationaloperatorto
comparefieldsoftypeString
Alexicalrelationaloperatortocompare
fieldsthatarenotoftypeString
%price% L_LESS_THAN 50
AfieldoftypeStringcomparedwitha
numericvalue
"stringName" > 12
Operatorsotherthan=,==,!=,or<>to
compareanObjectconstrainedasa
Booleanwithavalue
AnObjectconstrainedasaBoolean
comparedwithafieldoftypeString
myBoolean = "stringFieldName"
Note: AlthoughtheBrokerconsidersa
fieldnamethatcontainsthe%symbolto
beinvalid,youcanusethe%symbolto
enclosefieldnamesintheexpression.
Note: ExpressionsthatcheckanObject
constrainedasaBooleanforatrueorfalse
valueshouldincludetrueorfalseas
partofthefilter.Thestringconstantinthe
expression(trueorfalse)iscase
insensitive.
A$nulltoken
%fieldName% = $null
Areferencetoanarrayfield
Regularexpressionsthatcontainback
references
fieldName = /^(a|b)\1$/
Regularexpressionsthatusequantifiers
otherthan+,?,and*
/a{1}/
Regularexpressionsthatuseextended
metacharacters
fieldName = /\w/
/a{1,5}/
429
D Conditional Expressions
430
jcode tags
jcode Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
432
jcode Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
432
431
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.
*/
432
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
433
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.
*/
434
E jcode tags
435
E jcode tags
436
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
438
Content Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
438
Constraining Facets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
448
437
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).
Content Types
ThefollowingtableidentifiesthecontenttypesyoucanapplytoString,Stringlist,or
Stringtablevariables.Eachofthesecontenttypescorrespondstoabuiltinsimpletype
definedinthespecificationXMLSchemaPart2:Datatypes.
Note: FordetailsaboutconstraintsforObjectsandObjectlists,seeAppendix C,
SupportedDataTypes.
438
Content Types
Description
anyURI
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
Awholenumberwhosevalueisgreaterthanorequalto128but
lessthanorequalto127.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example
-128, -26, 0, 15, 125
date
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)
439
Content Types
Description
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
Anumberwithanoptionaldecimalpoint.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example
8.01, 290, -47.24
double
Doubleprecision64bitfloatingpointtype.
Constraining Facets
enumeration,maxExclusive,maxInclusive,minExclusive,
minInclusive,pattern
Example
6.02E23, 3.14, -26, 1.25e-2
440
Content Types
Description
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
SequenceofwhitespaceseparatedENTITYvaluesdeclaredinthe
DTD.RepresentstheENTITIESattributetypefromtheXML1.0
Recommendation.
Constraining Facets
enumeration,length,maxLength,minLength
ENTITY
NameassociatedwithanunparsedentityoftheDTD.Represents
theENTITYattributetypefromtheXML1.0Recommendation.
Constraining Facets
enumeration,length,maxLength,minLength,pattern,whiteSpace
float
Anumberwithafractionalpart.
Constraining Facets
enumeration,maxExclusive,maxInclusive,minExclusive,
minInclusive,pattern
Example
8.01, 25, 6.02E23, -5.5
441
Content Types
Description
gDay
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
442
Content Types
Description
gYear
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
Hexencodedbinarydata.
Constraining Facets
enumeration,length,maxLength,minLength,pattern
ID
Anamethatuniquelyidentifiesanindividualelementinan
instancedocument.ThevalueforIDneedstobeavalidXML
name.TheIDdatatyperepresentstheIDattributetypefromthe
XML1.0Recommendation.
Constraining Facets
enumeration,length,maxLength,minLength,pattern,whiteSpace
IDREF
AreferencetoanelementwithauniqueID.ThevalueofIDREFis
thesameastheIDvalue.TheIDREFdatatyperepresentsthe
IDREFattributetypefromtheXML1.0Recommendation.
Constraining Facets
enumeration,length,maxLength,minLength,pattern,whiteSpace
443
Content Types
Description
IDREFS
SequenceofwhitespaceseparatedIDREFsusedinanXML
document.TheIDREFSdatatyperepresentstheIDREFSattribute
typefromtheXML1.0Recommendation.
Constraining Facets
enumeration,length,maxLength,minLength
int
Awholenumberwithavaluegreaterthanorequalto
2147483647butlessthanorequalto2147483647.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example
-21474836, -55500, 0, 33123, 4271974
integer
Apositiveornegativewholenumber.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example
-2500, -5, 0, 15, 365
language
Languageidentifiersusedtoindicatethelanguageinwhichthe
contentiswritten.Naturallanguageidentifiersaredefinedin
IETFRFC1766.
Constraining Facets
enumeration,length,maxLength,minLength,pattern,whiteSpace
long
Awholenumberwithavaluegreaterthanorequalto
9223372036854775808butlessthanorequalto
9223372036854775807.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example -55600, -23, 0, 256, 3211569432
Name
XMLnamesthatmatchtheNameproductionofXML1.0(Second
Edition).
Constraining Facets
enumeration,length,maxLength,minLength,pattern,whiteSpace
NCName
NoncolonizedXMLnames.Setofallstringsthatmatchthe
NCNameproductionofNamespacesinXML.
Constraining Facets
enumeration,length,maxLength,minLength,pattern,whiteSpace
444
Content Types
Description
negativeInteger
Anintegerwithavaluelessthanorequalto1.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example
-255556, -354, -3, -1
NMTOKEN
Anymixtureofnamecharacters.RepresentstheNMTOKEN
attributetypefromtheXML1.0Recommendation.
Constraining Facets
enumeration,length,maxLength,minLength,pattern,whiteSpace
NMTOKENS
SequencesofNMTOKENS.RepresentstheNMTOKENSattribute
typefromtheXML1.0Recommendation.
Constraining Facets
enumeration,length,maxLength,minLength
nonNegativeInteger
Anintegerwithavaluegreaterthanorequalto0.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example
0, 15, 32123
nonPositiveInteger
Anintegerwithavaluelessthanorequalto0.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits,whiteSpace
Example
-256453, -357, -1, 0
normalizedString
Representswhitespacenormalizedstrings.Setofstrings
(sequenceofUCScharacters)thatdonotcontainthecarriage
return(#xD),linefeed(#xA),ortab(#x9)characters.
Constraining Facets
enumeration,length,maxLength,minLength,pattern,whiteSpace
Example
MAB-0907
445
Content Types
Description
positiveInteger
Anintegerwithavaluegreaterthanorequalto1.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example
1, 1500, 23000
short
Awholenumberwithavaluegreaterthanorequalto32768but
lessthanorequalto32767.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example
-32000, -543, 0, 456, 3265
string
CharacterstringsinXML.AsequenceofUCScharacters(ISO
10646andUnicode).Bydefault,allwhitespaceispreservedfor
variableswithastringcontentconstraint.
Constraining Facets
enumeration,length,maxLength,minLength,pattern,whiteSpace
Example
MAB-0907
time
Aninstantoftimethatoccurseveryday.Valuesmustmatchthe
followingpattern:
hh:mm:ss.sss
Wherehhindicatesthehour,mmtheminutes,andsstheseconds.
ThepatterncanincludeaZattheendtoindicateCoordinated
UniversalTimeortoindicatethedifferencebetweenthetimezone
andcoordinateduniversaltime.
Constraining Facets
enumeration,maxExclusive,maxInclusive,minExclusive,
minInclusive,pattern
Example
(6:10pm,EasternStandardTime)Eastern
StandardTimeis5hoursbehindCoordinatedUniversalTime.
18:10:00-05:00
token
Representstokenizedstrings.Setofstringsthatdonotcontainthe
carriagereturn(#xD),linefeed(#xA),ortab(#x9)characters,
leadingortrailingspaces(#x20),orsequencesoftwoormore
spaces.
Constraining Facets
enumeration,length,maxLength,minLength,pattern,whiteSpace
446
Content Types
Description
unsignedByte
Awholenumbergreaterthanorequalto0,butlessthanorequal
to255.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example
0, 112, 200
unsignedInt
Awholenumbergreaterthanorequalto0,butlessthanorequal
to4294967295.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example
0, 22335, 123223333
unsignedLong
Awholenumbergreaterthanorequalto0,butlessthanorequal
to18446744073709551615.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example
0, 2001, 3363124
unsignedShort
Awholenumbergreaterthenorequalto0,butlessthanorequal
to65535.
Constraining Facets
enumeration,fractionDigits,maxExclusive,maxInclusive,
minExclusive,minInclusive,pattern,totalDigits
Example
0, 1000, 65000
447
Constraining Facets
Whenyouapplyacontenttypetoavariable,youcanalsosetconstrainingfacetsforthe
contenttype.Constrainingfacetsarepropertiesthatfurtherdefinethecontenttype.For
example,youcansetaminimumvalueorprecisionvalueforadecimalcontenttype.
Eachcontenttypehasasetofconstrainingfacets.Theconstrainingfacetsdescribedinthe
followingtablecorrespondtoconstrainingfacetsdefinedinthespecificationXMLSchema
Part2:Datatypes.
Constraining Facet
Description
Usage Notes
enumeration
Thepossiblevaluesforthe
variableatruntime.
Ifyoualsoenteredpossible
valuesusingthePick list
choicespropertyinthe
Generalcategoryofthe
Propertiespanel,thosevalues
willbedisplayedatruntime.
However,theenumeration
valueswillbeusedfor
validation.
fractionDigits
Themaximumnumberofdigitsto
therightofthedecimalpoint.For
example,thefractionDigitsofthe
value999.99is2.
fractionDigitsmustbelessthan
orequaltototalDigits.
length
Thepreciseunitsoflength
requiredforthevariablevalue.
Ifyouspecifylength,you
cannotspecifyeither
minLengthormaxLength.
maxExclusive
Theupperboundofarangeof
possiblevalues.Therange
excludesthevalueyouspecify.The
variablecanhaveavaluelessthan
butnotequaltomaxExclusive.
maxExclusivemustbegreater
thanorequaltominExclusive.
Theupperboundofarangeof
possiblevalues.Therange
includesthevalueyouspecify.The
variablecanhaveavaluelessthan
orequaltomaxInclusive.
maxInclusivemustbegreater
thanorequaltominInclusive.
Themaximumunitsoflength
permittedforthevariablevalue.
maxLengthmustbegreater
thanorequaltominLength.
maxInclusive
maxLength
448
Youcannotspecify
maxInclusiveandmaxExclusive
forthesamecontenttype.
Youcannotspecify
maxInclusiveandmaxExclusive
forthesamecontenttype.
Constraining Facet
Description
Usage Notes
minExclusive
Thelowerboundofarangeof
possiblevalues.Therangedoes
notincludethevalueyouspecify.
Thevariablecanhaveavalue
greaterthanbutnotequalto
minExclusive.
minExclusivemustbelessthan
orequaltomaxExclusive.
Thelowerboundofarangeof
possiblevalues.Therange
includesthevalueyouspecify.The
variablecanhaveavaluegreater
thanorequaltominInclusive.
minInclusivemustbelessthan
orequaltomaxInclusive.
minLength
Theminimumunitsoflength
permittedforthevariablevalue.
minLengthmustbelessthanor
equaltomaxLength.
pattern
Apattern(regularexpression)that
thevalueofthevariablemust
match.Forexample,youcanusea
regularexpressiontospecifythata
variablethatisastringcontent
constraintmatchaSocialSecurity
numberformat.
totalDigits
Themaximumnumberofdecimal
digitsallowedinavalue.For
example,thetotalDigitsofthevalue
999.99is5.
whiteSpace
Thewhitespacenormalization
performedonthevariablevalue.
ThevalueofwhiteSpacecanbeone
ofthefollowing:
minInclusive
Youcannotspecify
minInclusiveandminExclusive
forthesamecontenttype.
Youcannotspecify
minInclusiveandminExclusive
forthesamecontenttype.
totalDigitsmustbegreater
thanorequaltofractionDigits.
Nowhitespace
normalizationisperformed.
preserve:
Carriagereturns(#xD),
linefeeds(#xA),andtabs(#x9)are
replacedwithasinglespace
(#x20).
replace:
Afterthewhitespace
normalizationspecifiedbyreplace
isperformed,sequencesofspaces
(#x20)andleadingandtrailing
spaces(#x20)areremoved.
collapse:
449
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.
450
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
452
Validation Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
452
Validation Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
465
470
451
Overview
Thisappendixdescribeserrormessagesthatcanoccurduringdatavalidation,ISschema
generation,orISdocumenttypegeneration.
WhenthevalidationengineinthewebMethodsIntegrationServervalidatesanobject(an
XMLnode,thepipeline,ordocuments)andtheobjectdoesnotconformtotheblueprint
ormodel,theservergenerateserrorsand/orexceptions.Youmightalsoreceiveerrors
andexceptionswhencreatinganISschema.Thefollowingsectionsdescribetheerrors
andexceptionsyoucanreceivewhenperformingvalidationandwhencreatinganIS
schema.
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
DT002
DT003
452
Error Code
DT004
DT005
DT006
DT007
DT008
DT009
DT010
DT011
DT012
DT013
453
Error Code
DTBinary001
DTBinary002
DTBinary003
DTBinary004
DTBoolean001
DTDecimal001
DTDecimal002
DTDecimal003
DTDecimal004
DTDecimal005
DTDecimal006
454
Error Code
DTDouble001
DTDouble002
DTDouble003
DTDouble004
DTFloat001
DTFloat002
DTFloat003
DTFloat004
DTInt001
DTInt002
DTInt003
455
Error Code
DTInt004
DTINTEGER001
DTINTEGER002
DTINTEGER003
DTINTEGER004
DTLong001
DTLong002
DTLong003
DTLong004
DTList001
DTList002
DTList003
456
Error Code
DTList004
DTRecurringDuration001
DTRecurringDuration002
DTRecurringDuration003
DTRecurringDuration004
DTSTR001
DTSTR002
DTSTR003
DTSTR004
DTTime001
457
Error Code
DTTime002
DTTime003
DTTime004
DTTimeDuration001
DTTimeDuration002
DTTimeDuration003
DTTimeDuration004
DTTimePeriod001
DTTimePeriod002
DTTimePeriod003
458
Error Code
DTTimePeriod004
NV001
NV002
NV003
NV004
NV005
NV006
459
Error Code
NV007
NV008
NV009
NV010
460
Error Code
NV011
NV012
NV013
However,theschemaprocessorisunabletoresolvethe
QNameusingthenamespacedeclarationsintheinstance
document.
Response: Checktomakesurethatthedocument
conformstotheschema.
NV014
461
Error Code
NV015
NV016
NV017
NV018
VV001
462
Error Code
VV002
[ISC.0082.9026]UndefinedObjectfound
Cause: Adocument(IDataobject)containsanorphan
variable.(ThismessageonlyappearsiftheAllow
unspecified fieldspropertyintheConstraintscategoryofthe
PropertiespanelisFalse.)
Response: Makesurethatallvariablesaredefined,or
checktheboxtoallowunspecifiedfieldsonthe
constraintstaboftheVariablePropertiesdialogbox.
VV003
VV004
463
Error Code
464
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
When is it thrown?
Description
Realtimeand
designtime
Cause: Theobjecttobevalidateddoes
notexistinthepipeline.
Response: LinkanXMLnodeor
documentvariabletotheobject
variableinService In.
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.
465
When is it thrown?
Description
[ISS.0062.9202] Invalid:
minLength
Designtime
[ISS.0062.9203] Invalid:
maxLength
Designtime
[ISS.0062.9211] Invalid
Regular Expression:
Expression
Designtime
[ISS.0062.9212] Invalid:
minInclusive
Designtime
Cause: ThepatternisaninvalidPerl
regularexpression.
Response: Modifythepatternand
makesurethatitisPerlregular
expression.
Cause: ThespecifiedminInclusivevalue
isinvalid.Forexample,the
minInclusivevalueforavariablewith
contenttypeconstraintofshortmust
alsobeashort.
Response: MakesuretheminInclusive
isavalidnumberforthespecified
contenttype.
[ISS.0062.9213] Invalid:
minExclusive
Designtime
Cause: ThespecifiedminExclusive
valueisinvalid.Forexample,the
minExclusivevalueforavariablewith
contenttypeconstraintofshortmust
alsobeashort.
Response: MakesuretheminExclusive
isavalidnumberforthespecified
contenttype.
466
When is it thrown?
Description
[ISS.0062.9214] Invalid:
maxInclusive
Designtime
Cause: ThespecifiedmaxInclusive
valueisinvalid.Forexample,the
maxInclusivevalueforavariablewith
contenttypeconstraintofshortmust
alsobeashort.
Response: MakesurethemaxInclusive
isavalidnumberforthespecified
contenttype.
[ISS.0062.9215] Invalid:
maxExclusive
Designtime
Cause: ThespecifiedmaxExclusive
valueisinvalid.Forexample,the
maxExclusivevalueforavariablewith
contenttypeconstraintofshortmust
alsobeashort.
Response: MakesurethemaxExclusive
isavalidnumberforthespecified
contenttype.
Designtime
Cause: Thevalueofaconstraining
facethasaninvalidscale.
Response: Examinetheconstraining
facetvaluestomakesurethevalues
donotconflict.
[ISS.0062.9231] Exceeds
precision: minInclusive
Designtime
Cause: ThevalueoftheminInclusive
constrainingfacetexceedsthevalue
specifiedfortotalDigits.
Response: Changethevalueof
minInclusiveortotalDigitstomakesure
thevaluesdonotconflict.
[ISS.0062.9232] Exceeds
precision: minExclusive
Designtime
Cause: ThevalueoftheminExclusive
constrainingfacetexceedsthevalue
specifiedfortotalDigits.
Response: Changethevalueof
minExclusiveortotalDigitstomakesure
thevaluesdonotconflict.
[ISS.0062.9233] Exceeds
precision: maxInclusive
Designtime
Cause: ThevalueofthemaxInclusive
constrainingfacetexceedsthevalue
specifiedfortotalDigits.
Response: Changethevalueof
maxInclusiveortotalDigitstomakesure
thevaluesdonotconflict.
467
When is it thrown?
Description
[ISS.0062.9234] Exceeds
precision: maxExclusive
Designtime
Cause: ThevalueofthemaxExclusive
constrainingfacetexceedsthevalue
specifiedfortotalDigits.
Response: Changethevalueof
maxExclusiveortotalDigitstomakesure
thevaluesdonotconflict.
[ISS.0062.9235] Invalid
enumerated item
Designtime
Cause: Acontenttypeconstraintis
definedintermsofthecollectiveset
ofconstrainingfacetvalues.Together,
thesevaluesdeterminetheallowed
valuesandpropertiesofthecontent
type.Theconstrainingfacetvalueyou
justspecifiedmayconflictwithother
constrainingfacetvalues.For
example,ifyouspecifylengthforthe
stringcontenttype,youcannot
specifymin lengthormax length.
Response: Examinetheconstraining
facetvaluestomakesurethevalues
donotconflictwitheachother.
[ISS.0062.9302] Maximum is
less than minimum
Designtime
Cause: Invalidcondition.The
maximumvalueislessthanthe
minimumvalue.
(maximum<minimum)
Response: Changethemaximumor
minimumvaluetoeliminatethe
conflict.
468
When is it thrown?
Description
[ISS.0062.9303] Minimum is
out of range (Valid range is
from lowerBound to
upperBound)
Designtime
Cause: Theminimumvalueisoutof
thevalidrangeforthecontenttype.
[ISS.0062.9304] Maximum is
out of range (Valid range is
from lowerBound to
upperBound)
Designtime
Response: Changetheminimumvalue
(min exclusive,min inclusive,ormin
length)andmakesurethatitiswithin
theallowedrangeforthecontent
type.
Cause: Thespecifiedmaximumvalue
isoutofthevalidrangeforthe
contenttype.
Response: Changethemaximum
value(max exclusive,max inclusiveor
max length)andmakesurethatitis
withintheallowedrangeforthe
contenttype.
469
CONV001
DTDC001
DTDC002
DTDC003
DTDC005
470
Code
XSDC001
XSDC002
XSDC003
XSDC004
XSDC005
XSDC006
471
Code
XSDC008
XSDC009
XSDC080
XSDC081
472
Code
473
474
Index
Symbols
! 423
!= 420
" 427
% 427
& 424
&& 424
( 427
) 427
/ 427
< 420
<= 421
<> 420
= 419
== 419
> 420
>= 420
\ 427
_env field 243
| 423
|| 423
259
A
access control 104
ACLs
assigning to elements 104, 107
assigning to packages and folders 106
checking for services 105
defined 104
element creation, view, and deletion implications
112
inheritance 109
locking implications 111
requirements for using Developer 18
testing and debugging implications 111
viewing on a server 109
actions, performing on IS elements 32
adapter notifications
described 243
guidelines for moving and copying 49
adapter services, retry behavior 376
adding
folders 121
packages 72
transformers 214
variables to pipeline link 211
addressing
variables in expressions and filters 425
variables with special characters 426
alarm events
building handlers for 360
definition of 348, 359
reasons generated 359
uses of 359
all content model 227
Allow unspecified fields option 256
and operator 424
annotating source code for jcode 320
anonymous type definitions 227
any attribute declaration 226
any element declaration 226
anyURI content constraint 439
API for Java services 314
applying
conditions to links 204
constraints to variables 255, 438
areas of Developer window
behavior and operation 31
editor 27
focus 31
general layout 21
Navigation panel 22
Properties panel 29
Recent Elements tab 27
resizing 33
Results panel 31
switching perspectives 34
UDDI Registry tab 25
zooming 33
arithmetic services 214
array variables
default behavior for linking 409
definition of 409
475
Index
B
base64Binary content constraint 439
blank labels in BRANCH steps 164
blue links, in the Pipeline tab 202
476
booleans
content constraint 439
in filters, Broker restrictions 429
BRANCH step
branching on empty values 164
branching on expressions 163
branching on null values 164
branching on switch value 160
creating 168
creating a multi-step child for 166
definition of 118, 384
Evaluate labels property 163
specifying default step 165
specifying label value 161
specifying switch variable 161
switch value 160
using conditional expressions 163
using in a flow 160
using SEQUENCE as a target of 166
using with regular expressions 161
breakpoints
and the Trace Into command 289
clearing from flow steps 289
clearing from transformers 290
listing all 291
locating in flow services 291
overview 288
point when processing halts 289, 290
removing 291
setting in flow services 289
setting on a flow step 289
setting on a transformer 290
Broker
filter collation locale 421
filter rules 428
Broker document type, creating publishable
document type from 240
Broker/local trigger
definition of 23
Broker/local triggers
creating filters for 414
browser clients
creating 341
invoking services from 342, 343
testing from 279
Index
building
event handler sample 357
event handlers 357
flow services 116
built-in services
for arithmetic operations 214
for date/time transformations 214
for document (IData object) validation 263
for pipeline validation 264
for remote services 158
for string manipulation 214
for XML validation 264
invoking 158
throwExceptionForRetry 137
byte content constraint 439
C
C/C++ clients
creating 335, 336
creating a make file 336
C/C++ services
compiling with a make file 323
creating 323, 324
caching
definition of 131
elements to improve Developer performance 66
services not suited for 131
services suited for 131
setting 133
using prefetch 133
call stack 278
catch sequence, in service retry 377
changing
level of a step 154
passwords 37
position of a step 154
child flows
described 154
stepping in/out of child flows 287
tracing 285
choice content model 227
circular dependencies, between packages 83
class files
location of 318
clearing
breakpoints on flow steps 289
breakpoints on transformers 290
client applications
creating browser-based 341
creating C/C++ 335
creating Excel 339
creating Java 332
creating Visual Basic 337
closed documents, described 256
closing a session on webMethods Integration Server
35
coded services, about 308
collapsing
transformers 220
white space 449
COM objects
invoking as services 328
using with webMethods components 327
COM services
creating 327
com.wm.app.b2b.server.ISRuntimeException class
137
combining Trace and Step commands 283
commands
Disable Step 291, 293
Enable Step 291, 293
Load Pipeline Locally 299
Reset 283
Restore Pipeline from Server 299
Restore Pipeline Locally 299
Save Pipeline from Server 299
Save Pipeline Locally 297
Save Pipeline to Server 297
Set Breakpoint 289
Step 282, 286, 287
Step Into 282, 286, 287
Step Out 286, 287
Trace 282, 284
Trace Into 282, 284, 285
Trace to Here 282, 284, 285
comments for jcode 320
Comments property, definition 156, 388
compiling
C/C++ services 327
error in Java compiler location 315
Java services 315, 321
services with Developer 315
services with jcode 321, 322
specifying the Java compiler 315
477
Index
478
Index
packages 72
specifications for C/C++ services 323
version numbers for packages 78
cursors 309
customizing content types 257
D
dagger symbol, next to variable icon 259
data transformations, definition of 186
data types
icons to represent 123
linking with Pipeline tab 199
supported by webMethods Integration Server 406
tables 409
data validation
allowing undeclared variables 256
applying constraints 255
benefits of 254
blueprints for 254
closed variables 256
content constraints 255
definition of 254
document (IData object) validation 263
errors 452
exceptions 266, 465
input/output validation
definition of 259
performing via Input/Output tab 261
performing via INVOKE step properties 262
open variables 256
pipeline validation 263
requiring variable existence 256
structural constraints 255
types of 254
XML validation 264
date content constraint 439
date conversion services 214
dateTime content constraint 440
DCOM objects
invoking as services 328
using with webMethods Integration Server 327
debug level, setting on server 301
debugging flow services
breakpoints 288
combining trace and step 283
disabling a single flow step 291
disabling a transformer 293
disabling conditions on links 294
479
Index
480
E
edit perspective 34
editing
elements. See editor
event subscriptions 355
flow services 116
properties 30
Service property 157
simple types in IS schema 231
editor
described 27
help about 38
hiding and showing 33
inserting flow steps into 153
resizing 33
supported data types 123
tabs 27
viewing and editing elements in 28
element declaration 226
element lock
copying, moving, and deleting 94
removing. See unlocking elements
system lock 88
user lock 88
element reference 226
elements (IS)
See also editor 43
assigning ACLs 107
caching to improve Developer performance 66
copying 47
creating 41
cutting 47
definition of 40
deleting 53
displayed in editor 27
displayed in Navigation panel 22
displayed in Recent Elements tab 27
displayed in UDDI Registry tab 25
double-clicking to open 45
editing 43
exporting 78
finding dependents 43
finding in Navigation panel 55
finding unresolved references 62
fully-qualified names 41
guidelines
copying 47
creating 41
Index
deleting 53
general actions 44
moving 47
opening and closing 45
renaming 51
help for properties 38
locating in Navigation panel 29
locking 43
moving 47
naming guidelines 42
overwriting when creating publishable document
types 241
pasting 47
performing actions 44
performing actions on 32
permissions 104
references 61
renaming 51
saving 53
single-clicking does not open 45
unlocking 43
viewing as HTML 43
empty
content 227
strings in filters 421
values, branching on 164
Enable service audtiting options, described 141
Enable Step command 291, 293
enabling
flow steps 291
service auditing 141
transformers 293
end-to-end linking 213
entering input for a service 272
ENTITIES content constraint 441
ENTITY content constraint 441
enumeration constraining facet 448
envelope field
in publishable document types 243
usage restrictions 243
error auditing, described 146
error handling, in flow services 176
errors
data validation 452
document (IData object) generation 470
flow service generation 470
IS schema generation 470
pipeline validation 452
481
Index
482
F
facets, See constraining facets
failIfInvalid property 465
failure
of a flow step 176
of a REPEAT step 171
fields
content type constraint symbol 259
dagger symbol 259
green squares 259
optional symbol 259
filter collation locale 421
filtering events 352
filters
addressing variables 425
addressing variables with special characters 427
allowed quantifiers 429
arrays 429
Index
G
GD End events
building handlers for 366
definition of 364
pub.remote.gd:end 364
uses of 364
when generated 364
GD Start events
building handlers for 365
definition of 364
pub.remote.gd:start 364
uses of 364
when generated 364
gDay content constraint 442
Generate Code command 334, 336, 337
generating complex types as document types 237
global declarations, in XML Schemas and DTDS
226
483
Index
H
hailmary mode (jcode) 322
hard-coding input variables 206
help, obtaining 38
hexBinary content constraint 443
hiding and showing panels 33
HTML, viewing elements in 43
I
ID content constraint 443
IData objects
creating 309
definition of 308
484
Index
input/output validation
definition of 259
performing via Input/Output tab 261
performing via INVOKE step 262
inserting
INVOKE step 158
steps into flow services 153
transformers 214
installing Java services 317
int content constraint 444
integer content constraint 444
Integrated Development Environment. See IDE
Integration Server Administrator, unlocking elements
95
Integration Server. See webMethods Integration
Server
interfaces
implementing in Java service 313
INVOKE step
Comments property 388
creating 158
definition of 117, 388
finding 59
invoking built-in services 158
invoking services on another server 158
Label property 388
peforming validation via step properties 262
Pipeline tab 187
Scope property 388
Service property 157, 388
Timeout property 388
using in a flow 157
Validate input property 388
Validate output property 388
invoking
built-in services 158
remote services 158
services 158
services from a browser 342, 343
services on another server 158
IS document types
See also documents (IData objects)
creating empty document types 234
creating from Broker document type 240
creating from DTD 235
creating from XML document 235
creating from XML Schema 235
described 233
editing 244
expanding complex types inline 237
generating complex types as document types 237
guidelines for creating 235
IS elements. See elements (IS)
IS schemas
appearance 224
constraints 224
content constraints 224
creating 229
definition of 224
editing simple types 231
errors from generating 470
generating multiple 230
import element 230
include element 230
structural constraints 224
using to validate an XML document 264
warnings from generating 470
ISRuntimeExceptions
description of 135
throwing in services 376
J
Java classes for object and object list variables 407
Java clients, creating 332, 334
Java keywords
extends 313
implements 313
import 313, 319
Java service editor 311
Java services
adding private methods to 313
compiler location 315
compiling with Developer 315
compiling with jcode 321
creating 314, 315
creating with an IDE 317, 319
creating with Developer 311
extending the class of 313
implementing interface in 313
importing packages into 313, 319
installing manually 317
jcode requirements 320
location of class files 318
location of source files 318
publishing to the server 317
required code 319
485
Index
K
keyboard shortcuts 32
L
L_EQUALS 422
L_GREATER_OR_EQUAL 422
L_GREATER_THAN 422
L_LESS_OR_EQUAL 422
L_LESS_THAN 422
L_NOT_EQUALS 422
Label property
definition 388
for evaluating expressions 163
for general use 156
for specifying the default BRANCH step 165
for targeting BRANCH steps 161
language content constraint 444
length constraining facet 448
lexical relational operators
conditional expressions 421
definition of 421
empty string 421
locale 421
non-string variables 421
libs directory 323, 327
link indices 202
486
linking
array variables 201
default rules 409
guidelines for 203
to array variables 409
to scalar variables 409
to transformers 217
between document formats 213
conditional links 204
considerations 194
copying by reference 196
copying by value 196
default behavior for arrays 203
deleting links between variables 204
different data types 199
disabling conditions on links 294
document (IData object) variables 198
in a single view 213
input variables 192
output variables 193
pipeline variables to service variables 192
scalar variables to array variables 409
the pipeline 195
transformers 215
variables conditionally 204
variables explicitly 192
variables implicitly 192
links
blue colored 202
deleting 204
disabling conditions 294
executing at run time 196
gray colored 192
in Pipeline tab 192
list variables in filters 429
Load Pipeline Locally command 299
loading
input values from a file 274
pipeline values from a file
into Results panel 299
overview 298
with restorePipelineFromFile service 299
locating a breakpoint 291
locking elements
corresponding server files 98
description 88
Index
M
make file
creating 323
using to compile C/C++ services 327
make mode (jcode) 321
MAP modifier
definition of 190
executing at run time 196
linking different data types 199
linking from service output 193
linking to service input 192
MAP step
debugging 288
definition of 117, 390
disabling transformers 293
enabling transformers 293
inserting transformers 214
Pipeline tab 189
transformers 213
using in a flow 183
using to initialize variables in a flow 184, 207
mapping. See linking
Max attempts property 137
maxExclusive constraining facet 448
maximum retry period, definition of 136
maximum retry period, description of 136
maxInclusive constraining facet 448
maxLength constraining facet 448
maxOccurs threshold value, for validation 267
memory
reducing usage 66
running out of during validation 267
menu bar, using to perform actions 32
metacharacters, in filters 429
methods, adding to a Java service 313
minExclusive constraining facet 449
minInclusive constraining facet 449
minLength constraining facet 449
mixed content 227
modifying the pipeline 190
moving
IS elements 47
steps in a flow service 154
steps within a flow 154
N
Name content constraint 444
name transformations, definition of 186
namespace information (for services)
creating source file from 322
location of 317
updating with jcode 321
namespaces
usage in universal names 137
XML namespace property 247
naming services 41
Navigation panel
described 22
help about 38
hiding and showing 33
icons 22, 88
refreshing contents of 25
resizing 33
toolbar 26
NCName content constraint 444
negativeInteger content constraint 445
NMTOKEN content constraint 445
NMTOKENS content constraint 445
nonNegativeInteger content constraint 445
nonPositiveInteger content constraint 445
not operator 423
notification, of server shutdown 36
ns directory 317
$null
in filters 429
in labels for BRANCH steps 164
null, branching on 164
487
Index
O
Object data type
definition of 407
in filters 429
Object list data type, definition of 407
object list variables, Java classes 407
object variables, Java classes 407
online help, obtaining 38
open and closed documents 256
open documents, described 256
opening a session on webMethods Integration
Server 35
operations, performing on IS elements 32
operators
conditional expressions and filters 418
lexical relational operators 421
logical 423
precedence in expressions 424
relational 418
standard relational operators 419
optional variables for validation 256
or operator 423
out of sync publishable document types 244
Output array property 179
output templates
assigning to a service 127
definition of 127
output variables
declaring 124
declaring for a service 122
declaring in a document (IData object) 233
linking considerations 194
linking in the pipeline 193
Overwrite Pipeline Value option 207
P
packages
adding 72
assigning version numbers 78
copying 74
creating 72
creating circular dependencies 83
cutting 74
definition of 70
deleting 77
dependencies, using with startup services 84
documenting 76
exporting 78
488
identifying dependencies 81
importing into Java services 313, 319
moving 74
naming guidelines 72
pasting 74
reloading 77
reloading vs refreshing 77
removing dependencies 83
required by Java services 319
viewing details 73
viewing patch history 79
panels
editor 27
Navigation 22
Properties 29
Recent Elements 27
Results 31
switching perspectives 34
UDDI Registry 25
parameters
applying constraints 255
benefits of declaring 122
declaring 122, 126
declaring for a service 123, 124
parent/child relationships in a flow 154
passwords
changing 37
requirements 37
patch history
removal by Integration Server 80
viewing for a package 79
pattern constraining facet 449
pattern matching, in event subscriptions 352
Perform Variable Substitution option 208
Performance 144
performance impact, service auditing 144
permission
See also ACLs
assigning to elements 104
Permissions property 107
perspectives of views 34
pipeline
adding variables to 211
addressing variables 425
adjusting 190
assigning values to 206
changing values 295
checking for variables 418
Index
489
Index
490
Index
R
Recent Elements tab
described 25, 27
help about 38
hiding and showing 33
resizing 33
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
recursive complex types in XML Schemas 238
redefine mechanism, in XML Schemas 230
re-enabling
flow steps 291
transformers 293
referenced elements, importing during
synchronization 241
references
finding 61
inspecting pipeline 63
refresh
difference from restoring a session 36
Navigation panel contents 25
Recent Elements tab contents 27
regular expressions
creating event filters with 355
definition of 398
operators 398
using as a BRANCH label 161
using in a mask 398
reinvoking services 146
relational operators
definition of 418
lexical 421
standard 419
types of 418
reloading packages 77
remote servers, invoking services on 158
remote services, invoking 158
removing
breakpoints 291
breakpoints from transformers 290
package dependencies 83
packages 77
replication services 86
shutdown services 86
startup services 86
variables from the pipeline 210
renaming
IS elements 51
transformers 221
Repeat on property 170, 171, 393
REPEAT step
creating (on failure) 172
creating (on success) 174
definition of 118, 391
failure 171
specifying the repeat condition 170, 171, 393
using in a flow 170
using to retry a failed step 171
using to retry a successful step 174
replace white space 449
replication events
building handlers for 368
definition of 349, 367
uses of 367
replication services
assigning 85
definition of 84
guidelines for assigning 85
removing 86
when to use 84
requirements for passwords 37
requiring variable existence for validation 256
Reset command 283
resizing
panels 33
window areas 33
Restore Pipeline from Server command 299
Restore Pipeline Locally command 299
restorePipelineFromFile service 296, 298
restoring
pipeline values from a file
into Results panel 299
overview 298
with restorePipelineFromFile service 299
sessions 36
Results panel
copying elements from 277
described 31
general information 276
help about 38
491
Index
S
Save Pipeline Locally command 297
Save Pipeline to Server command 297
savePipelineToFile service 298
saving
changes to elements 53
elements (IS) 53
input values to a file 274
test results from Results panel 297
test results using savePipelineToFile service 298
test results, overview 296
scalar variables
default behavior for linking 409
definition of 409
linking to or from array variables 409
scale constraining facet 448
schema browser, definition of 225
schema details area, definition of 228
schema editor 224
schema processor, definition of 229
schema services
for document (IData object) validation 263
for pipeline validation 264
for XML validation 264
Scope property, definition 388
Send XML File command 280
sequence content model 227
SEQUENCE step
as target for a BRANCH 166
definition of 118, 394
setting exit condition 176
using in a flow 176
492
Index
setting
breakpoints on flow steps 289
breakpoints on transformers 290
variable values 206
Settings tab. See Properties panel
Shared tab 313
short content constraint 446
shortcuts, for toolbars 26
showing and hiding panels 33
shutdown services
assigning 85
definition of 84
guidelines for assigning 85
removing 86
when to use 84
signature
for trigger services 124
of a service 308
simple types 227
editing in IS schema 231
single view linking 213
source code
compiling with C/C++ make file 327
compiling with jcode 321, 322
creating automatically for a Java service 315
creating from namespace information 322
creating in your own Java IDE 319
creating Java 316
location of 318
tagging for jcode 320
writing in C/C++ 326
writing in Developer 311
source control system, integration with 88
Source field on Shared tab 313
Source tab. See Java service editor
special characters
in variable names 426
typing in expressions 427
specifications
assigning to a service 251
benefits of 248
creating 248
definition of 248
finding dependents 43
squares, green 259
stack overflow, during validation 267
493
Index
494
symbol
for content type constraints 259
for optional variables 259
syntax for conditional expressions and filters 415
system locking
defined 88
elements 92
T
tables, support of 409
tabs
Input/Output tab 125
Pipeline tab 186
Schema tab. See schema editor 224
selecting 27
Settings tab for services. See also Properties
panel 317
Shared tab 313
tagging source code for jcode 320
templates
assigning to a service 127
definition of 127
test perspective 34
test results
changing pipeline values 295
copying 277
loading 296
saving 296
viewing 275
testing services
entering test input 272
from a browser 279
from Developer 271
inspecting the pipeline 275
loading input values from a file 274
loading the pipeline 296
overview 270
run-time exceptions 277
saving input to a file 274
saving the pipeline 296
setting breakpoints 288
testing in debug mode 281
viewing results 275
viewing the call stack 278
viewing the pipeline 279
XML document as input 280
threshold value, for maxOccurs 267
throw exception for retry 377
Index
renaming 221
Service property 215
services provided by webMethods 214
setting breakpoints 290
stepping in/out of child flows 288
Validate input property 215
Validate output property 215
validating input and output 218
zooming in on 220
transient error, definition of 135, 376
trigger services, input signature requirements 124
triggers
disabled when copied 48
filter syntax restrictions 428
filters and relational operators 421
lexical operators 418
testing 270
used with adapter notifications 243
using standard relational operators 419
troubleshooting information 16
try sequence, in service retry 377
Tx End events
building handlers for 373
definition of 372
uses of 372
when generated 364
Tx Start events
building handlers for 372
definition of 372
uses of 372
when generated 364
type definitions
anonymous 227
complex types 227
simple types 227
U
Unicode, and Java source code 322
universal names
assigning to services 137
implicit vs explicit 138
local portion of name 138
namespace portion of name 137
removing from a service 140
unlocking elements
more than one 93
system locked 97
495
Index
V
Validate input property 159, 215
definition 388
Validate output property 159, 215
definition 388
validatePipeline service 264
validating
See also validation
documents (IData objects) 263
from Java services 265
input/output for transformers 218
input/output via Input/Output tab 261
input/output via INVOKE step 262
pipeline via built-in services 264
pipeline, overview 263
service input/output 259, 261, 262
XML documents 264
validation
See also validating
allowing undeclared variables 256
applying constraints 255
benefits of 254
blueprints for 254
constraining facets 448
constraints, definition of 255
content constraints 438
definition of 254
errors 266, 452
exceptions 266, 465
input/output 259
overview 254
requiring variable existence 256
running out of memory 267
service input and output 259
stack overflow 267
types of 254
496
Index
warnings
document (IData object) generation 470
flow service generation 470
IS schema generation 470
watt.server.auditLog property, described 148
watt.server.invoke.maxRetryPeriod 136
watt.server.stats.pollTime property 366
webMethods Developer
main window 21
online help 38
starting 19
toolbar 26
webMethods Integration Server
access requirements for 18
closing a session 35
connecting to 19, 35
disconnecting from 35
logging on to 19
notification of shutdown 36
opening a session 35
performing ACL checking 105
supported data types 406
webMethods Monitor 140, 146
webMethods Type Library 333, 337, 339
When to include input pipeline options, described
143
When to log options, described 142
whiteSpace constraining facet 449
win32.COM.dispatch:createObject 328
windows
layout 21
zooming 33
WmPublic package, definition of 158
XML documents
creating documents (IData objects) from 233
creating IS document types from 235
creating IS schemas from 229
testing services with 280
XML Namespace property, described 247
XML Schema definitions
creating documents (IData objects) from 233
creating IS document types from 235
creating IS schemas from 229
import mechanism 230
include mechanism 230
IS schema generation warnings 470
recursive complex types 238
redefine mechanism 230
referenced by other XML Schemas 230
XML validation
content constraints 224
creating IS schemas 229
definition of 264
errors 452
exceptions 465
IS schemas, overview 224
performing 264
structural constraints 224
Z
zooming
in a window 33
in on transformers 220
497
Index
498