This topic contains answers to frequently asked questions
about developing service flows.
Also see Troubleshooting information for service flow projects.
This topic contains the following subtopics:
Importing resources from BMS files
How can I change the BMS mapset name as defined in the original
BMS imported source to be the same as that installed into CICS®?
Perform the following
steps:
- Use the flow message editor to open the screen message file (.sfmxsd)
that you want to change. This should be the screen message file that
was created from the imported BMS information for the application
screen that you are interested in.
- In the flow message editor, do the following:
- On the Overview tab, expand Groups and
select the group that you are interested in.
- On the Properties tab, do the following:
- In the left pane, expand and select Global
Group.
- In the right pane, in the mapset field,
type the name that you would like to use as the mapset recognition
value in the generated runtime code.
- Save your work and close the flow message editor.
The value has now been updated and subsequent generation
and execution will produce the desired results.
How do I set the next transaction id when the original BMS
imported source does not have a BMS named field defined for the first
data entry field on that screen?
Perform the following steps:
- In the flow editor, determine which node you want to use to set
the transaction ID. This can be an existing node or an Assign node
that you create for this purpose.
- In the flow editor, use the mapping editor to open the
mapping file for the flow and then select the mapping routine for the
node that you want to use.
- In the mapping editor, create a one-sided mapping that assigns
the transaction ID that you want to use (for example, 'AINQ')
to the SNA_NEXT_TRANSID field in the SNA_FIELDS structure. Follow
these steps:
- In the Target pane of the mapping editor, right-click anywhere
in the pane and then select Add Message Mapping Output.
The Select a Message window opens.
- In the Select a Message window:
- In the left pane, expand IBMCICS and select IBMCICS.sfmxsd.
- In the center pane, select SNA_FIELDS.
- Click OK to close the window.
The SNA_FIELDS message is added to the Target pane of the mapping
editor.
- In the target pane of the mapping editor, right-click the SNA_NEXT_TRANSID element
in the SNA_FIELDS message, then select Create One-sided
Mapping. A one-sided mapping is created in the Overview
pane.
- Edit the one-sided mapping to set the value of the SNA_NEXT_TRANSID
element to the transaction ID that you want to use (for example, 'AINQ')
(see One-sided
mapping).
- Save your work and close the mapping editor.
When the node is performed, the mapping routine is performed.
When the mapping routine is performed, the value that you specified
is stored into the SNA_NEXT_TRANSID element in the SNA_FIELDS message.
This sets the transaction ID.
- After I import a BMS map, when I open the resulting
screen message file in the Screen Message editor, select the Screen
Structure tab, and look at the list of fields in the Outline view,
I do not see all of the fields that were in the BMS map. What is the
problem?
The BMS Import wizard processes only fields that are
defined inside the BMS file that you import. The wizard ignores all
assembler instructions in the BMS file (that is, TITLE, PRINT, EJECT,
RMODE, AMODE, as well as COPY) that are not part of the BMS syntax,
treating them as comment lines.
Therefore, if you import a BMS
file that contains a COPY instruction that copies segments of BMS
DFHMDF macros from a separate source file, then the BMS Import wizard
ignores the COPY instruction, and any fields specified by the segments
of DFHMDF macros are not included in the resulting screen message
file.
To work around this problem, manually copy into the
BMS source file the contents of any file that the BMS source file
includes via the COPY statement. Then import the BMS file using the
Import BMS wizard.
Flow recording
- I inserted data
into the wrong field when I created an Insert action. How do I quickly
fix this problem without having to start the flow record process over?
Method 1. If you are still recording the flow
and you have not navigated away from the application screen where
you inserted data into the wrong field:
Perform
the following steps:
- In the Outline view, expand the Actions in Progress node
at the end of the hierarchical tree (see(a)
Actions in Progress node).
- In the Actions in Progress node, find the
mapping that was created for the Insert action that you want to delete.
The mapping looks something like the following:
ItemQuantity -> Field1583
- Right-click the mapping.
- Click Remove mapping.
The mapping for the Insert action is deleted
from the flow. This means that the Insert action has been deleted
(see Outline view and Properties view when the Terminal tab is selected).
You
can now create a new Insert action in the usual way.
Method 2. If you have navigated away from the application
screen where you inserted text into the wrong field:
Perform the following steps:
- Make a note of the application screen, the field into which you
inserted text, and the field into which you wanted to insert text.
- If you are still flow recording, then continue flow recording
until you are done, then terminate and store the recorded flow as
usual.
- Use the flow editor to open the flow.
- In the flow editor:
- Find the Invoke screen operation node corresponding to the application
screen from which you inserted the wrong field.
- Right-click the Invoke screen operation node, select Open
Mapping Routine, and select the input mapping routine
for the node. The mapping editor opens.
- In the mapping editor:
- In the editor area, in the Source pane:
- Find the Insert variable in the Source pane.
- Select the Insert variable. This causes the corresponding mapping
expression to be selected also in the Outline view.
Note: The list of elements in the Target pane correspond to the
fields in the application screen.
- In the Outline view:
- Right-click the selected mapping expression and then select Remove
Mapping.
- The mapping expression is deleted from the Outline view. In the
editor area, the blue arrowhead marking the Insert variable in the
Source pane disappears, as does the gold arrowhead marking the field
in the Target pane.
- In the editor area, create a mapping from the Insert variable
in the Source pane to the field in the Target pane into which you
want the information to be inserted. To create this mapping:
- Drag the Insert variable in the Source pane to the field in the
Target pane into which you want to insert text.
- The mapping is created.
- Save your work and close the mapping editor.
- Save your work and close the flow editor when you are ready.
The Insert action will now be performed
on the field to which you mapped the Insert variable.
Mapping editor
- Why in my mapping file can I only see input assignments and
not the output assignments?
There may be multiple mapping routines
in one sfmap file. Use the Outline view to select another mapping
routine.
Flow editor
- How do I add a Parse Node to my flow so that
I can have the runtime environment determine which screen I am on
and take the correct path of execution in my flow?
Perform
the following steps:
- Use the flow editor to open the recorded flow.
- In the EST Project Explorer:
- Expand the terminal applications subproject where the screen messages
and screen operations for the recorded flow are stored.
- Expand the Operations folder.
- Expand the WSDL file for the flow. For example, if the flow is
named Extract_01, then the WSDL file is named Extract_01.wsdl.
- In the WSDL folder, find the screen operation whose name ends
in Outputs. For example, if the flow is named
Extract_01, then the entry is named extract_01Outputs.
- Drag the Outputs screen operation to the
canvas of the flow editor. An Invoke screen operation node is created
on the canvas. This is the new parse node.
- Connect the new parse node to the flow at the point at which you
want the screen recognition to occur. (You can perform this step either
before or after the next two steps.)
- The parse node contains a list of the names of all the screen
messages in the flow. Configure the parse node by adding an output
terminal to the parse node for each screen message that matches an
application screen that you want to be recognized at this point in
the flow. For example:
- Right-click the parse node and select Edit
Terminals.
- In the Add Terminals window:
- In the Available Message(s) list box, select
the screen message corresponding to a screen that you want to be recognized
(see Using output terminals with an Invoke screen operation node).
- Click Add and Apply.
The screen message is added to the Reply Message list
box.
- Click OK to close the window and create
the output terminal.
- In the flow editor, verify that each new output terminal of the
new parse node is associated with a screen message that can occur
at this point in the flow. For example:
- In the flow editor, double-click one of the new output terminals
of the parse node. The screen message editor opens and displays the
screen structure and screen descriptions belonging to the screen message
associated with the output terminal.
- In the screen message editor, look at the screen structure and
the screen descriptions, and verify that this screen message matches
an application screen that can occur at this point in the flow.
- Save your work.
- Close the flow editor when you are ready.
When the parse node is performed, the flow-performer checks
the output terminals of the parse node against the currently displayed
application screen, starting at the first output terminal. If the
flow-performer finds that the screen message associated with an output
terminal matches the currently displayed application screen, then
the flow-performer stops looking for a match (that is, it does not
compare any of the remaining output terminals to the current application
screen) and immediately takes the flow branch associated
with the matching output terminal.
Generation properties
- I have filled in all the required values for my Generation
Properties file, but the Generate Runtime Code button is not enabled.
How do I enable it?
When you change the value of a generation
property, the button is disabled. The button is not enabled until
you save the generation properties.
To save the generation
properties, type Ctrl-S or select from the workbench main
menu.
- I have an aggregate flow made up of a COMMAREA operation and
a terminal flow. Why do I have two different generation properties
files?
The generated runtime code files for each flow are stored
in a separate subfolder under the Generation folder in the EST Project
Explorer.
Runtime code generation
- How do I override the default
name given to a generated copy book file?
Perform the following
steps:
- Determine which message file contains the message corresponding
to the copy book file:
- Open the copy book file (for example, INPROCES.CPY) with the Basic
LPEX editor and look at the name of the copy book (for example, INPROCESSORDERERQUESTMESSAGE).
Then close the copy book file.
- In the EST Project Explorer, in your service flow project, in
the interface definition subproject, in the Messages folder, open
each message file (.sfmxsd) with the flow message editor until you
find the file containing a message with the same name (for example,
inProcessOrderRequestMsg) and structure as the copy book.
- Open the message file with the flow message editor, if it is not
already open.
- In the flow message editor:
- Select the message (in the previous example, the message named
inProcessOrderRequestMsg).
- Go to the Properties tab of the editor. On the Properties tab:
- In the left pane:
- Expand .
- Select Message.
- In the right pane:
- In the cobolName field, type the name that
you want to use for the copy book file (only the first eight characters
that you type are used for the name).
- Save your work and close the flow message editor.
- Regenerate the runtime code files.
The regenerated copy book file has the name that you specified
in the flow message editor.
- How can I reduce the number of runtime code files that are
generated for each flow?
Starting with Rational® Developer for System z® Version 7, the following features
reduce the number of files that are generated for a service flow project:
- The Generate Runtime Code wizard no longer generates a separate
program for each Invoke node of type LINK with COMMAREA. Instead,
the linking to COMMAREA programs is handled automatically by the CICS Service Flow Runtime.
- In a generation properties file for a flow, the generation properties
editor includes the check box Generate Internal Data Structures.
Clearing this check box causes data structures to be generated as
external copy books (as was done automatically in all versions before
Version 7). Selecting the check box causes data structures to be generated
internal to the COBOL program source.
- On the first tab of the Generate Runtime Code wizard, two check
boxes have been added:
- The check box Create resource definitions JCL controls
whether JCL is generated to assist in defining resources to CICS. To avoid generating the JCL,
clear the check box. By default the check box is selected.
- The check box Create compile JCL controls
whether JCL is generated to assist in compiling the COBOL or PL/I
source. To avoid generating the JCL, clear the check box. By default
the check box is selected.
- How do I create CICS resource
definitions?
See the help topic Three methods for creating CICS resource definitions.
Compiling
- When the COBOL files generated by the Generate
Runtime Code wizard are compiled, I get compile error IGYPS0037. How
can I fix this problem?
This problem can occur if the messages
defined for a flow include a message (for example "InputInfo") and
a field inside another message ("MyMessage.InputInfo") that have the
same name ("InputInfo"). In such a case, the Generate Runtime
Code wizard can generate a COBOL statement that ambiguously
refers to one of the two items using the conflicting name ("INPUTINFO").
When
the COBOL compiler attempts to compile this COBOL statement, the compiler
detects the ambiguity (the compiler does not know whether "INPUTINFO"
refers to the message or to the field) and issues the following error
message:
IGYPS0037 "<name>" was not a uniquely defined name.
To
fix this problem rename either the message or the field and then run
the
Generate Runtime Code wizard again. Follow
these steps:
- Rename the item:
- In the EST Project Explorer, right-click the item that you want
to rename, either the message or the field.
- Select Rename. The Refactor
Object window opens.
- Verify that the check box Refactor result of rename
within files? is selected.
- Click OK.
- Run the Generate Runtime Code wizard again.
Testing
- I am using the "Invoke a WSDL Operation" feature in the Web
Services Explorer to test the runtime WSDL file generated for a service
flow project. The "Invoke a WSDL Operation" feature requires me to
type values into many different input fields in the various containers.
Is there a way to save and restore these field values?
To save
the field values in a text file:
- Click the Source link in the upper right
corner of the Web Services Explorer.
- Click the Save As link.
- Type a file name into the input field and click OK.
The field values are saved in the text file. To restore
the Form view click the Form link located at
the top right of the Web Services Explorer.
To restore the field
values from a text file:
- Click the Browse button.
- Select the text file and click OK.
- Select the Load link.
The values from the text file are restored. To restore
the Form view click the Form link located at
the top right of the Web Services Explorer.
- When I use the Web Services Explorer to test
a generated Web service, I get the error response code CIA06021E (DFHMA06021E).
What is the problem?
Perform the following checks:
- Make sure that you have entered the request name into the Web
Services Explorer using UPPER CASE. (For the meaning
of request name see Common generation properties of all three flow types). If
you enter the name in lower case, then Web Services Explorer cannot
find it on the host and returns the CIA06021E (DFHMA06021E) response
code.
- Make sure that you have run the JCL file to install and enable
the processtype definition. The processtype has the same name as the
request name specified in the build descriptor. After you generate
the runtime code and deploy it to the host, run the provided JCL file.
This creates the processtype definition, installs it, and enables
it.
Problem determination
- I received an error message saying that I should
look in the Error Log for additional information about the error.
How do I do that?
To find additional information about an error
in the Error Log view:
- On the main menu of the workbench, select .
The Show View window opens.
- In the Show View window:
- Select .
The Error Log view opens.
- In the Error Log view:
- Right-click the error that you are interested in.
- Select Event Details.
The Event Details window opens
and displays additional information about the error.
If you
contact IBM® Software Support
about the error, you should send this information to IBM Support to help diagnose the problem.
- The service flow seems to be constructed correctly,
but I get an error message when I try to generate runtime code or
to play back a flow. What is the problem?
Make sure that the
work bench has updated the service flow project to integrate your
latest changes:
- In the work bench main menu click Project and
verify that Build automatically is selected.
If it is not selected then select it.
- Click to manually rebuild the project. The Clean wizard
opens:
- Select Clean projects selected below.
- Select all the subfolders in the service flow project.
- Click OK.
The work bench updates the service flow project to integrate
any unintegrated changes.
DBCS
- Why are my DBCS characters not showing up correctly during
flow recording and in the screen editor?
Possibly the East Asian
language fonts (especially MS Gothic) are not installed on your system.
If
your workstation is running Windows XP, you can determine whether
a font is installed by following these steps:
- Select . A window opens displaying a list of installed fonts.
- If the name of the font you are looking for is included in the
list of fonts, then the font is installed on your system. If not,
then you must install the font.
If
your workstation is running Windows XP, you can install
the East Asian fonts by following these steps:
- Select .
- In the Regional and Language Options window:
- Select the Languages tab.
- Select the check box Install files for East Asian languages.
- Click OK.
- You may have to restart your system for the font changes to take
effect.