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 EntireX Workbench that reads a package from the Integration Server and generates an IDL file from all services contained in the package.
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.
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 EntireX Workbench.
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. |
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. Parameters of type
Object
cannot be mapped to an IDL data type and thus result in an
error. If such an error occurs, the IDL program which contains the invalid data
type mapping is written to the IDL file, however, all lines are comments.
Starting with version 9.12 Fix 1 of the EntireX Adapter a subset of the Java Wrapper types are mapped to IDL types.
This subset has been chosen so it is compatible to the JSON data type mapping in Integration Server.
Integration Server Object Type Java Wrapper Types |
Software AG IDL Data Type | |
---|---|---|
Adapter Version 9.12 Fix 1 or higher | Adapter Version 9.12 or lower | |
java.lang.String |
See table below | See table below |
java.lang.Long |
N19 |
error |
java.lang.Integer |
I4 |
error |
java.lang.Float |
F4 |
error |
java.lang.Double |
F8 |
error |
java.lang.Boolean |
L |
error |
byte[] |
BV , BV256 (depending on target language)
|
error |
No wrapper type | Error; or BV , BV256 if extracting from EntireX Adapter Service(1) |
Error; or BV , BV256 if extracting from EntireX Adapter Service(1) |
(1) Starting with version 9.7, 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
).
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.
Parameters of type String
may have an associated context
type which is specified in the constraints of the parameter's properties. This
content type influences the data type mapping. The content type was already
considered in previous versions of the EntireX Adapter (version 9.6 or
lower). However, its usage was not documented and the mapping was not yet
complete. The handling of the content type was reworked with version 9.7.
The following table shows both the new and the old mapping. The new mapping is
different from the old one. If you want to use the old mapping with version 9.7
or higher, set watt.com.softwareag.entirex.wmadapter.extractor.contenttype.handling.pre97=true
under Settings > Extended on the Integration Server administration page.
Integration Server Content Type | Software AG IDL Data Type | |||
---|---|---|---|---|
Adapter Version 9.7 or higher | Adapter Version 9.6 or lower | |||
boolean |
L |
Logical | L |
Logical |
decimal |
Nx , Nx.y or An , AV , AVn |
Unpacked decimal or Alphanumeric (1) | N10.2 |
Unpacked decimal |
float |
F4 |
Floating point (small) | F4 |
Floating point (small) |
double |
F8 |
Floating point (large) | F8 |
Floating point (large) |
Date |
An , AV , AVn |
Alphanumeric (2) | D |
Date |
dateTime |
An , AV , AVn |
Alphanumeric (2) | T |
Time |
base64Binary |
An , AV , AVn |
Alphanumeric (2) | BV |
Binary variable length |
byte |
I1 |
Integer (small) | I1 |
Integer (small) |
unsignedByte |
NU3 |
Unpacked decimal unsigned | I1 |
Integer (small) |
short |
I2 |
Integer (medium) | I2 |
Integer (medium) |
unsignedShort |
NU5 |
Unpacked decimal unsigned | I2 |
Integer (medium) |
int |
I4 |
Integer (large) | I4 |
Integer (large) |
unsignedInt |
NU10 |
Unpacked decimal unsigned | I4 |
Integer (large) |
long |
N19 |
Unpacked decimal | An , AV , AVn |
Alphanumeric (2) |
unsignedLong |
NU20 |
Unpacked decimal unsigned | An , AV , AVn |
Alphanumeric (2) |
integer |
N29 |
Unpacked decimal | An , AV , AVn |
Alphanumeric (2) |
positiveInteger |
NU29 |
Unpacked decimal unsigned | An , AV , AVn |
Alphanumeric (2) |
nonPositiveInteger |
N29 |
Unpacked decimal | An , AV , AVn |
Alphanumeric (2) |
negativeInteger |
N29 |
Unpacked decimal | An , AV , AVn |
Alphanumeric (2) |
nonNegativeInteger |
NU29 |
Unpacked decimal unsigned | An , AV , AVn |
Alphanumeric (2) |
string |
An , AV , AVn |
Alphanumeric (3) | An , AV , AVn |
Alphanumeric (2) |
all others |
An , AV , AVn |
Alphanumeric (2) | An , AV , AVn |
Alphanumeric (2) |
Notes:
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 (2) 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.
AV
, AVn
or An
is used.
len
, then
Alen
is used. If the content type specifies a maximum length
max
, then AVmax
or Amax
is used, see (2)
for the choice between A
versus Av
. If neither length
nor maximum length is specified, the choice is the same as in (2).