IDL Extraction from Integration Server

Integration Server services (e.g. flow services) can be called from an RPC client, using an adapter listener. To create a listener you need a Software AG IDL file, which describes the call interface (signature) of the Integration Server service. This IDL file can be created automatically using the IDL Extractor for Integration Server, a component of the Designer that reads a package from the Integration Server and generates an IDL file from:

  • all services contained in the package (if you are using an EntireX Adapter version 10.3 or lower)

  • all services contained in the package or a subset thereof (if you are using an EntireX Adapter version 10.5 or above)

As an alternative, you can create an IDL file from a specified subset of Integration Server services, using service pub.wmentirex.listener:generateIDLfromService from the WmEntireX package. This alternative is described below, along with an overview of data type mapping relevant for both approaches.


Using the Service pub.wmentirex.listener:generateIDLfromService

Service pub.wmentirex.listener:generateIDLfromService generates an IDL file for a given list of Integration Server services. For each service, a program in the IDL file is created. If the IDL file already exists, it is extended with the newly created program definitions. Duplicate definitions for the same program are possible. In this case, the IDL file has to be corrected manually. Note that this service creates/updates only the IDL file. Creating or updating a listener with the definitions of the IDL file has to be done with webMethods Integration Server Wrapper of the Designer. The following parameters are relevant. Parameter direction can be In or Out:

Parameter I/O Description
serviceName String I The full name of the Integration Server service (e.g. folder1.folder2:service). Multiple services can be specified using a semicolon (;) as delimiter.
fileName String I The name of the IDL file (with extension ".idl"). You cannot specify a folder name. The file is created in the folder <IntegrationServer_instance>/packages/WmEntireX/resources.
libraryName String I The library name to be used in the IDL file. If the IDL file already exists, this parameter is ignored.
stringType String I The IDL data type which is used for string data types. Possible values are AV, AVn, or An. This parameter is optional, default is AV.
language String I The target language for the RPC clients. Possible values are COBOL, Natural, PL/I, or Other.
result String O Either a success message if the generation was successful (which includes the full pathname of the IDL file) or an error message.

Integration Server Data Types to IDL Mapping

The signature of an Integration Server service specifies the data types for the parameters of the service. There are three data types: String, Record and Object. Parameters of type String are mapped to an IDL alphanumeric data type, parameters of type Record to IDL groups. The mapping of parameters of type Object has been enhanced in recent versions of the EntireX Adapter. For details see table below.

Integration Server Object Type
Java Wrapper Types
Software AG IDL Data Type
Adapter Version 10.5 Adapter Version 10.3 Adapter Version 9.12 Fix 1 or 10.1 Adapter Version 9.12 or lower
java.lang.String An, AV, AVn(1)(3) An, AV, AVn(1) An, AV, AVn(1) An, AV, AVn(1)
java.lang.Long N19 N19 N19 error
java.lang.Integer I4 I4 I4 error
java.lang.Short I2 Input parameter: ignored;
Output parameter: An, AV, AVn(1)
error error
java.lang.Byte I1 Input parameter: ignored;
Output parameter: An, AV, AVn(1)
error error
java.lang.Float F4 F4 F4 error
java.lang.Double F8 F8 F8 error
java.lang.Boolean L L L error
java.util.Date A24 (format 2017-08-15T10:53:35.087Z) An, AV, AVn(1) error error
java.math.BigInteger An, AV, AVn(1) Input parameter: ignored;
Output parameter: An, AV, AVn(1)
error error
java.math.BigDecimal An, AV, AVn(1) Input parameter: ignored;
Output parameter:An, AV, AVn(1)
error error
byte[] BV, BV256 (depending on target language) BV, BV256 (depending on target language) BV, BV256 (depending on target language) error
All other wrapper types or record without subcomponents Input parameter: ignored; output parameter: An, AV, AVn(1) Input parameter: ignored; output parameter: An, AV, AVn(1) error error
No wrapper type BV, BV256 if extracting from EntireX Adapter Service (4); otherwise see above BV, BV256 if extracting from EntireX Adapter Service (4); otherwise see above error; or BV, BV256 if extracting from EntireX Adapter Service (4) error; or BV, BV256 if extracting from EntireX Adapter Service (4)

Parameters of type String may have an associated context type which is specified in the constraints of the parameter's properties. This content type may influence the data type mapping. The following table shows the mapping.

Integration Server Content Type Software AG IDL Data Type
boolean L Logical
decimal Nx, Nx.y or An, AV, AVn Unpacked decimal or Alphanumeric (5)
float F4 Floating point (small)
double F8 Floating point (large)
Date An, AV, AVn Alphanumeric (1)
dateTime An, AV, AVn Alphanumeric (1)
base64Binary An, AV, AVn Alphanumeric (1)
byte I1 Integer (small)
unsignedByte NU3 Unpacked decimal unsigned
short I2 Integer (medium)
unsignedShort NU5 Unpacked decimal unsigned
int I4 Integer (large)
unsignedInt NU10 Unpacked decimal unsigned
long N19 Unpacked decimal
unsignedLong NU20 Unpacked decimal unsigned
integer N29 Unpacked decimal
positiveInteger NU29 Unpacked decimal unsigned
nonPositiveInteger N29 Unpacked decimal
negativeInteger N29 Unpacked decimal
nonNegativeInteger NU29 Unpacked decimal unsigned
string An, AV, AVn Alphanumeric (2)
all others An, AV, AVn Alphanumeric (1)

Notes:

  1. All parameters of type String are mapped to an IDL alphanumeric data type, available as variable (AV, AVn) or fixed (An) length. Which alphanumeric type is used is specified in the wizard page of the IDL Extractor for Integration Server or as a parameter of the generation service.
  2. If the content type specifies a length len, then Alen is used. If the content type specifies a maximum length max, then AVmax or Amax is used, see (1) for the choice between A versus Av. If neither length nor maximum length is specified, the choice is the same as in (1).
  3. If an input parameter of a service has a default value, this value is shown in the extracted IDL file as a comment. When the Adapter Listener calls this service and no value (or only a value with blanks) is specified by the RPC client, the default value is used as the parameter value.
  4. A parameter of an EntireX Adapter service of type Object is mapped to an IDL binary data type. Depending on the target language, it is either mapped to BV (for Natural and Other) or to BV256 (for COBOL and PL/I).
  5. If the content type specifies a total number of digits and a number of fraction digits, then Nx.y is used. If only a total number of digits is specified, then Nx is used. If no total number of digits is specified, or the total number exceeds the maximum allowed value, or the number of fraction digits exceeds the maximum allowed value, then a string according to (1) is used. The maximum allowed value for the total number of digits is 29, for COBOL it is 31. The maximum allowed value for the number of fraction digits is 7, for COBOL it is 31 and for Natural it is 29.