Rational Developer for System z

FAQs: Frequently asked questions about developing service flows

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

  1. 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:
    1. 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.
    2. In the flow message editor, do the following:
      1. On the Overview tab, expand Groups and select the group that you are interested in.
      2. On the Properties tab, do the following:
        1. In the left pane, expand Physical Properties > BMS Terminal and select Global Group.
        2. 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.
    3. 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.

  2. 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:
    1. 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.
    2. 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.
    3. 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:
      1. 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.
      2. In the Select a Message window:
        1. In the left pane, expand IBMCICS and select IBMCICS.sfmxsd.
        2. In the center pane, select SNA_FIELDS.
        3. Click OK to close the window.
        The SNA_FIELDS message is added to the Target pane of the mapping editor.
      3. 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.
      4. 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).
    4. 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.

  3. 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

  1. I extracted the wrong field when I created an Extract 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 extracted the wrong field:

    Perform the following steps:
    1. In the Outline view, find the last Invoke screen operation node in the hierarchical tree. This is the Invoke screen operation node that is currently being constructed.
    2. Expand the mapping routine for the output terminal.
    3. Find the mapping that was created for the Extract operation. It looks something like the following:
      Field642 -> ItemCode
    4. Right-click the mapping.
    5. Click Remove mapping.

    The mapping for the Extract action is deleted from the flow. This means that the Extract action has been deleted (see Outline view and Properties view when the Terminal tab is selected).

    You can now create a new Extract action in the usual way.

    Method 2. If you have navigated away from the application screen where you extracted the wrong field:

    Perform the following steps:
    1. Make a note of the application screen, the field that you extracted, and the field that you wanted to extract.
    2. If you are still flow recording, then continue flow recording until you are done, then terminate and store the recorded flow as usual.
    3. Use the flow editor to open the flow.
    4. In the flow editor:
      1. Find the Invoke screen operation node corresponding to the application screen from which you extracted the wrong field.
      2. Now find the Invoke screen operation node immediately preceding that Invoke screen operation node.
      3. Right-click the Invoke screen operation node, select Open Mapping Routine, and select the output mapping routine for the node. The mapping editor opens.
      4. In the mapping editor:
        1. In the editor area, in the Source pane:
          1. The list of elements correspond to the fields in the application screen. Find the element in the Source pane that is mapped to the Extract variable in the Target pane. Because the element in the Source pane is the source of a mapping, it is marked with a blue arrowhead at its left.
          2. Select the element. This causes the corresponding mapping expression to be selected also in the Outline view.
        2. In the Outline view:
          1. Right-click the selected mapping expression and then select Remove Mapping.
          2. The mapping expression is deleted from the Outline view. In the editor area, the blue arrowhead marking the mapped element in the Source pane disappears, as does the gold arrowhead marking the Extract variable in the Target pane.
        3. In the editor area, create a mapping from the field in the Source pane from which you want the information to be extracted to the mapping variable in the Target pane. To create this mapping:
          1. Drag the field in the Source pane that you want to use for the Extract action to the mapping variable in the Target pane.
          2. The mapping is created.
        4. Save your work and close the mapping editor.
      5. Save your work and close the flow editor when you are ready.

    The Extract action will now be performed on the field that you mapped to the Extract variable.

  2. 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:
    1. In the Outline view, expand the Actions in Progress node at the end of the hierarchical tree (see(a) Actions in Progress node).
    2. 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
    3. Right-click the mapping.
    4. 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:
    1. Make a note of the application screen, the field into which you inserted text, and the field into which you wanted to insert text.
    2. If you are still flow recording, then continue flow recording until you are done, then terminate and store the recorded flow as usual.
    3. Use the flow editor to open the flow.
    4. In the flow editor:
      1. Find the Invoke screen operation node corresponding to the application screen from which you inserted the wrong field.
      2. Right-click the Invoke screen operation node, select Open Mapping Routine, and select the input mapping routine for the node. The mapping editor opens.
      3. In the mapping editor:
        1. In the editor area, in the Source pane:
          1. Find the Insert variable in the Source pane.
          2. 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.
        2. In the Outline view:
          1. Right-click the selected mapping expression and then select Remove Mapping.
          2. 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.
        3. 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:
          1. Drag the Insert variable in the Source pane to the field in the Target pane into which you want to insert text.
          2. The mapping is created.
        4. Save your work and close the mapping editor.
      4. 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

  1. 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

  1. 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:
    1. Use the flow editor to open the recorded flow.
    2. In the EST Project Explorer:
      1. Expand the terminal applications subproject where the screen messages and screen operations for the recorded flow are stored.
      2. Expand the Operations folder.
      3. 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.
      4. 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.
    3. 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.
    4. 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.)
    5. 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:
      1. Right-click the parse node and select Edit Terminals.
      2. In the Add Terminals window:
        1. 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).
        2. Click Add and Apply. The screen message is added to the Reply Message list box.
        3. Click OK to close the window and create the output terminal.
    6. 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:
      1. 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.
      2. 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.
    7. Save your work.
    8. 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

  1. 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 File > Save from the workbench main menu.

  2. I have an aggregate flow made up of a COMMAREA operation and a terminal flow. Why do I have two different generation properties files?
    You must generate separate runtime code for each flow. Therefore, the service flow project tools have created a separate generation properties file for each flow. For each generation properties file, perform the following steps:
    1. Edit the generation properties file (see Part A. Build a generation properties file).
    2. Generate the runtime code (see Part B. Run the Generate Runtime Code wizard).

    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

  1. How do I override the default name given to a generated copy book file?
    Perform the following steps:
    1. Determine which message file contains the message corresponding to the copy book file:
      1. 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.
      2. 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.
    2. Open the message file with the flow message editor, if it is not already open.
    3. In the flow message editor:
      1. Select the message (in the previous example, the message named inProcessOrderRequestMsg).
      2. Go to the Properties tab of the editor. On the Properties tab:
        1. In the left pane:
          1. Expand Physical Properties > CICSAdapter.
          2. Select Message.
        2. In the right pane:
          1. 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).
      3. Save your work and close the flow message editor.
    4. Regenerate the runtime code files.

    The regenerated copy book file has the name that you specified in the flow message editor.

  2. 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.

  3. How do I create CICS resource definitions?

    See the help topic Three methods for creating CICS resource definitions.

Compiling

  1. 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:
    1. Rename the item:
      1. In the EST Project Explorer, right-click the item that you want to rename, either the message or the field.
      2. Select Rename. The Refactor Object window opens.
      3. Verify that the check box Refactor result of rename within files? is selected.
      4. Click OK.
    2. Run the Generate Runtime Code wizard again.

Testing

  1. 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:
    1. Click the Source link in the upper right corner of the Web Services Explorer.
    2. Click the Save As link.
    3. 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:
    1. Click the Browse button.
    2. Select the text file and click OK.
    3. 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.

  2. 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:
    1. 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.
    2. 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

  1. 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:
    1. On the main menu of the workbench, select Window > Show View > Other.

      The Show View window opens.

    2. In the Show View window:
      1. Select PDE Runtime > Error Log.

      The Error Log view opens.

    3. In the Error Log view:
      1. Right-click the error that you are interested in.
      2. 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.

  2. 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:
    1. In the work bench main menu click Project and verify that Build automatically is selected. If it is not selected then select it.
    2. Click Project > Clean to manually rebuild the project. The Clean wizard opens:
      1. Select Clean projects selected below.
      2. Select all the subfolders in the service flow project.
      3. Click OK.
    The work bench updates the service flow project to integrate any unintegrated changes.

DBCS

  1. 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:
    1. Select Start > Settings > Control Panel > Fonts. A window opens displaying a list of installed fonts.
    2. 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:
    1. Select Start > Settings > Control Panel > Regional and Language Options.
    2. In the Regional and Language Options window:
      1. Select the Languages tab.
      2. Select the check box Install files for East Asian languages.
      3. Click OK.
    3. You may have to restart your system for the font changes to take effect.


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)