3270 Connect User's Guide
CHAPTER 4
An action is similar to a programming statement in that it takes input in the form of parameters and performs specific tasks. Please see the chapters in the Composer User's Guide devoted to Actions.
Within the 3270 Component Editor, a set of instructions for processing XML documents or communicating with non-XML data sources is created as part of an Action Model. The Action Model performs all data mapping, data transformation, data transfer between mainframes and XML documents, and data transfer within components and services.
An Action Model is made up of a list of actions. All actions within an Action Model work together. As an example, one Action Model might read invoice data from a disk, retrieve data from a mainframe inventory database, map the result to a temporary XML document, make a conversion, and map the converted data to an output XML document.
The Action Model mentioned above would be composed of several actions. These actions would:
Open an invoice document and perform a 3270 command to retrieve invoice data from a mainframe database
Convert a numeric code using a Code Table and map the result to an Output XML document.
The 3270 Connector includes several actions that are specific to the 3270 and are not included with Composer.
In addition to showing where in the Action Model a specific transaction screen appears, the Map Screen action is also used for error checking. When a screen is first recorded, Composer saves a count of how many fields are in the screen. This count is compared later during execution for error checking to ensure the actions recorded will return the proper information. The Map Screen action appears in the Action Model as shown.
The Multi Row action can be used to input data from an XML document to a 3270 screen, or to output data from a 3270 screen to an XML document. This action essentially creates repeat loops within the Action Model that map multiple rows of data automatically from one document or screen to another. The Multi Row action is discussed in detail in "About the 3270 Multi Row Wizard" on page 48.
Each time you select one of the AID keys displayed in the native environment tool bar, or its corresponding keyboard key, or keys, (See "About 3270 Keyboard Support" on page 29) a Send Attention Key action is mapped in the Action Model.
Double-clicking the Send Attention Key action in the Action Model displays a dialog box that allows you to edit the key. Select from the dropdown list box the Value Key. Click on the checkbox to override the cursor position. Edit the row and column if needed or click on the expression builder icon to add a calculation.
The Connect for TN3270 exposes a number of 3270-specific ECMAScript variables and object extensions, which are visible in Expression Builder picklists. The 3270-specific items are listed under the node labelled "3270." There are two child nodes: Login and Screen Methods. See illustration below.
3270 Connection Resources have three global variables that are accessible from Expression Builder dialogs: USERID, PASSWORD and RESOURCENAME. The first two properties (available under the Login node of the picktree) specify the User ID and Password values that may be requested by the host system when you connect. The RESOURCE NAME variable specifies the Name of the Resource as specified in the Advanced dialog of the 3270 Connection Dialog. You can map any of these variables into the terminal screen, which eliminates the need for typing user, password and resource information explicitly in a map action.
NOTE: You can also create a Send Buffer action where the XPath source is defined as $PASSWORD.
When an Expression Builder window is accessed from a Map or Function action in the 3270 Component, the picklists at the top of the window expose special 3270-specific ECMAScript extensions, consisting of various methods of the Screen object and predefined escape sequences corresponding to various "special keys" on the virtual terminal's keyboard.
Hover-help is available if you let the mouse loiter over a given picktree item. (See illustration.)
In addition, you can obtain more complete online help by clicking Help in the lower left corner of the dialog.
The Screen object offers methods with the following names, signatures, and usage conventions:
This method returns the string of characters (of length nLength
) that occurs in the Screen object at the byte offset given by nOffset
. Note that the offset is one-based, not zero-based. Thus, to obtain all of a 24 x 80 screen as an ECMAScript String, you would do:
var wholeScreen = Screen.getText( 1, 24 * 80 );
Any attempt to obtain character data beyond the bounds of the screen buffer will result in an exception. For example, the following call will fail:
var wholeScreen = Screen.getText( 1, 1 + 24 * 80 ); // ERROR!
This method returns an ECMAScript String that represents the sequence of characters (of length nLength
) in the current screen starting at the row and column position specified. Note that nRow
and nColumn
are one-based, not zero-based. A zero value for either of these parameters will cause an exception.
To obtain all of row 20 of a 24x80 screen, you would do:
var myRow = Screen.getTextAt( 20, 1, 80 );
The getTextAt()
technique is used internally in drag-and-drop Map actions involving screen selections.
This method returns a single String consisting of substrings (one per row) comprising all the characters within the bounding box defined by the top left and bottom right row/column coordinates specified as parameters. So for example, in 24x80 mode, you could obtain the upper left quarter of the screen by doing:
var topLeftQuadrant = Screen.getTextFromRectangle(1,1,12,40);
The getTextFromRectangle()
method is used internally in drag-and-drop Map actions involving rectangular screen selection regions created using the Shift-selection method.
Note that the string returned by this method contains newline (\u000a) delimiters between substrings. That is, there will be one newline at the end of each row's worth of data. The overall length of the returned string will thus be the number of rows times the number of columns, plus the number of rows. For example, Screen.getTextFromRectangle(1,1,4,4).length
will equal 20.
The setText()
method allows you to send data to a field in the screen programmatically, beginning at a byte offset given by nOffset
. Note that the offset is one-based, not zero-based. If the text string is longer than the available field, text is inserted up to the length of the current field. The following example places a phone number string in the second row and the 12th column (This would be an offset of 92, in a screen with 80 columns per row):
var myPhone = "(203) 225-1800"; if (Screen.getPrompt().indexOf("Phone") != -1) Screen.setText(92, myPhone ); // send string
The setTextAt()
method allows you to send data to a field in the screen programmatically, specifying a Row and Column location to start. If the text string is longer than the available field, text is inserted up to the length of the current field. The following example places a phone number in the 8th row, 20th column:
var myPhone = "(203) 225-1800"; if (Screen.getPrompt().indexOf("Phone") != -1) Screen.setTextAt( 8, 20, myPhone ); // send string
The 3270 component differs from other components because a major portion of the Action Model is built for you automatically. This happens by interacting with a live session from the host in the Native Environment pane and Composer recording your activity as a set of actions in the Action Model. In other components, you must manually create actions in the Action Model, which then perform mapping, transformation, and transferring tasks. When you create a 3270 component, you essentially record the requests and responses to and from the mainframe, which are entered as actions in the Action Model pane. For example, when you select the Enter button in the 3270 Native Environment pane, the Action Model records the action as shown in the graphic below. In addition, you can add actions to the Action Model just the same as other components.
NOTE: You should be familiar with 3270 commands and the application you are interfacing into your XML integration project in order to successfully build a 3270 component.
Create a 3270 component per the instructions in "Before Creating a 3270 Component" on page 25. Once created, the new 3270 component appears in the 3270 Component Editor window.
NOTE: In addition to the buttons found on the XML Map Component Editor tool bar, the 3270 Component Editor includes a Record and Connect/Disconnect button as shown above.
Click the Record button. An input screen appears in the Native Environment pane and a "Map Screen" action is recorded in the Action Model pane.
Type "PART" in the input screen of the 3270 environment pane as shown below.
NOTE: The 3270 commands are case sensitive and must be entered in ALL CAPS.
Click the Enter button in the 3270 pane. The ENTER PART screen appears in the 3270 pane and the actions are recorded in the Action Model pane under Screen Actions.
Drag the SKU data from the Input DOM to the SKU field in the 3270 ENTER PART screen. The action is recorded in the Action Model pane and appears in the status bar.
NOTE: You can also use the Map Action to map the Input SKU to the ENTER PART screen SKU field; however, dragging and dropping is much quicker and easier. For more information on the Map Action feature, see the exteNd Composer User's Guide.
Click the Enter button in the 3270 pane. The 3270 ENTER PART screen is populated with the SKU's associated data.
Drag and drop an element from the ENTER PART screen to the Output DOM, for example, the SKU number. The data you drag and drop appears in red in the Output DOM.
Continue to drag and drop data elements from the ENTER PART screen to the desired field in the Output Part until complete. Each time an element is dragged from the ENTER PART screen to the Output Part an action is recorded in the Action Model pane.
You will undoubtedly encounter times when you need to edit a previously recorded action model. Unlike editing other components, editing a 3270 component requires extra attention. When a 3270 component executes, it plays back a sequence of actions that expect certain screens and data to appear in order to work properly. So when editing a component you must be careful not to make the action model sequence inconsistent with the mainframe transaction execution sequence you recorded earlier.
In general, to ensure successful edits, the following recommendations apply:
Do not cut or copy "Map Screen" action blocks and paste them into other locations in your action model.
Carefully check and edit individual Map actions that interact with the screen after copying and pasting them within an action model.
Use Composer's drag and drop features to add new Map actions that interact with the screen. Animate to the line of interest in your Action Model, pause animation, and turn on Record mode. This will prevent your Action Model from getting out of sync with the proper ScreenDoc DOM and /or fields within a specific ScreenDoc DOM.
Don't delete any Multi-Row related lines (or any actions for that matter) in your Action Model during animation. This may prevent your component from functioning properly.
The following procedure will explain how to change an existing action in a previously recorded session.
To Change an existing action in a previously recorded Action Model:
Open the component that includes the previously recorded Action Model that you'd like to edit. The component appears in the 3270 Component Editor window.
Navigate to the action in the Action Model where you'd like to make your edit and highlight the action.
Click the Toggle Breakpoint button. The highlighted action becomes red.
Click the Start Animation button. The animation tools become active.
Click the Step to Breakpoint/End button. The Action Model executes all of the actions from the beginning to the breakpoint you set in step 3 above and appears as shown.
Execute any additional actions that you'd like to add to the Action Model.
Select File, then Save, or click the Save button on the Component Editor tool bar.
Follow the instructions in "Using the Animation Tools" to test your component.
Whenever you press Enter on the keyboard or click one of the many attention keys in the 3270 Native Environment pane while recording a session, an action is recorded in the Action Model. An example of this is shown below.
These actions, like any other, can be deleted, moved, or copied. You may also double click an Attention Key action and edit it from a dialog box.
The following procedure explains how to add a new action in a previously recorded session.
To Add a Action to a previously recorded Action Model:
Open the component that includes the previously recorded Action Model that you'd like to add an action in. The component appears in the 3270 Component Editor window.
Navigate to the action in the Action Model where you'd like to add the action and highlight the action.
Click the Toggle Breakpoint button. The highlighted action becomes red.
Click the Start Animation button. The animation tools become active.
Click the Run to Breakpoint/End button. The Action Model executes all of the actions from the beginning to the breakpoint you set in step 3 above and appears as shown.
Use Composer's drag and drop features to add new Map actions that interact with the screen. The new action will be added directly under the highlighted line.
Select File, then Save, or click the Save button on the Component Editor tool bar.
Follow the instructions in "Using the Animation Tools" to test your component.
If you are adding Map Actions in a loop that are alias perform the following steps:
To Add an Alias Action to a previously recorded Action Model:
From the Action menu, select New Action, then Map. The Map Action dialog box displays.
Select the Xpath and from the dropdown list for Source, Order_Lines is selected from the dropdown list.
Either type in the information, or click the Expression Builder button and create a new expression.
Create an XPath to be represented by the alias. Click from the dropdown list for the alias
The new action is inserted below the line you select. (New line is highlighted in the screen below to show it was inserted.
The following procedure explains how to delete an action in a previously recorded session
To Delete an Action to a previously recorded Action Model:
Click on the RMB and select Delete from the menu. You may also highlight the line and press the Delete button on your keyboard.
The 3270 Connect includes drag and drop capabilities that allow you to drag data from an XML document into a 3270 or from a 3270 screen into an XML document quickly and easily; however, in cases where there are a variable number of rows and possibly multiple screens of data, using the drag and drop method is not effective. To resolve this issue, the 3270 Connector includes a Multi Row Wizard that allows you to specific the mapping of many-to-many data relationships between a DOM and the 3270 screen. The Multi Row Wizard, which appears as an option in the Action>New Action menu of a 3270 component, can be used to input data from an XML document to the repeating area of a 3270 screen, or to output the repeating data from a 3270 screen to an XML document. The Multi Row Wizard essentially creates repeat loops within the Action Model that map multiple rows of data automatically from one document or screen to another until complete, regardless of the number of rows or number of screen pages.
There are many ways the Multi Row Wizard can be used when inputting or outputting multiple rows of data to and from XML documents and 3270 screens, and not every scenario can be addressed in this document. Two basic sample components are provided here that should give you a clear understanding of how the Multi Row Wizard is generally used.
The first procedure shows you a component that uses the Multi Row Wizard to input multiple elements of data from an XML document to a 3270 screen. The second procedure shows a component that uses the Multi Row Wizard to output multiple rows of data from a 3270 screen to an Output DOM.
The procedures in this section are strictly for demonstration purposes. Unlike the Composer tutorial, theses procedures are not intended for following along step-by-step.
To prepare for using the Multi Row Wizard to input data:
Create a component per the instructions in "Before Creating a 3270 Component" on page 25. For this example, the component is called "3270SampleInput." The component is shown below in the 3270 Component Editor.
Click the Record button. A blank screen appears in the Native Environment pane.
The user can then type in a transaction in the transaction line. This example uses "GORD" as the transaction.
NOTE: Alternatively, you may select Enter on the 3270 keypad toolbar within the Native Environment pane. To view this tool bar, select View from the 3270 Component Editor menu bar, then Keypad Toolbar.
This example then displays an "ENTER ORDER" 3270 screen in the Native Environment pane.
The user then drags and drops the applicable header data from the input DOM to the corresponding field in the 3270 ENTER ORDER screen. For this example, the following data is dragged and dropped:
Identify the area of repetitive rows that you will select for the Multi Row action.
For multi-row actions the user needs to define the area that contains repeating data either manually or by highlighting the area. In this example, the user drags the cursor over the line item input field area in the 3270 ENTER ORDER screen, beginning in the upper left corner and moving to the lower right corner. A gray background highlight appears over the drag marquee.
NOTE: Make sure that you start your drag process with your cursor outside of the first field. If you start dragging within a field, Composer assumes you are trying to move the field itself.
To use the Multi Row Wizard to input data:
NOTE: If you are outputting data, see discussion further below ("To use the Multi Row Wizard to output data:" on page 56 of the guide).
From the 3270 Component Editor menu, select Action, then New Action, then Multi Row. The Multi Row Wizard appears. The wizard automatically fills in the dialog based on the area you highlighted. See "To prepare for using the Multi Row Wizard to input data:" on page 49 for an example.
If you would like to edit the fields or you did not highlight an area, you would do so as follows:
NOTE: The 3270 screen is comprised of columns and rows - the default is 24 lines x 80 columns.
Start Line - This is the first row from the top where you want the wizard to start counting rows.
Start Column - This is the first column where you want the wizard to begin. Column 1 is the first column on the left.
# Records Down - This is the number of records you want the wizard to include in the loop.
# Records Across - It is a common practice for COBOL programmers to list records down a page and then continue to wrap records back to the top. The result is several records side-by-side down a page. You would use this field to specify how many records are listed side-by-side in a given row.
# Lines/Record - If a record is longer than 80 characters, it wraps to the next line. If it exceeds 160 characters, it wraps to a third line. You need to indicate how many lines are required per record.
# Columns/Record - This field indicates how many columns are included in the record, 80 being the maximum.
Edit the fields if desired. When satisfied with the parameters, click Next. The second panel of the Multi Row Wizard appears.
To set up a repeat action in the Multi Row Wizard:
NOTE: If you are outputting data, see "To use the Multi Row Wizard to output data:" on page 56.
After completing the first panel of the Multi Row Wizard, continue as follows.
Select the Input radio button in the Use XML As area. This panel is used to create a repeat action for processing the multiple elements or screen rows. Its use is similar to the basic "Repeat for Element" action available in all components.
In the Representing field, click the Expression builder button. The Expression builder window appears.
Expand the Input element in the XPath Content frame.
Navigate to the OITEM element and double click. The expression appears in the comment pane in the bottom of the window. For this example, the OITEM element is the one on which we will loop.
Click OK. You are returned to the second screen of the Multi Row Wizard, which now appears with the new expression in the Representing field.
NOTE: When using the Expression builder, Composer automatically creates an Alias. In this example, Composer created the alias called OITEM. For more information on Aliases, please see the exteNd Composer User's Guide.
Click Next. The Iterate screen of the Multi Row Wizard appears.
To iterate to the n ext record:
NOTE: If you are outputting data, see "To use the Multi Row Wizard to output data:" on page 56.
This screen allows you to tell the Multi Row Wizard what to do when it encounters an end of page. In the example (see "About the Multi Row Samples in this Document" on page 48), there is only one page of data, so there is no check mark in the Can Iterate to Next Record Set box.
Click Finish. The Multi Row actions you created in the wizard appear in the Action Model pane, with the Add all multi row map actions here! comment highlighted.
To add Multi Row Actions to input data:
Highlight the Add all multi row map actions here! comment in the Action Model if not already highlighted.
Navigate to the first instance of OITEM in the Input Part pane.
Drag and drop the children of OITEM into the applicable fields in the first row of line item fields in the 3270 screen as follows:
From: Input DOM |
To: ENTER ORDER 3270 Screen |
---|---|
OISKU |
PART |
OIDESC |
DESCRIPTION |
OIQTY |
QTY |
OICOST |
COST |
The Input Part and ENTER ORDER 3270 screens appear as shown.
Notice that Map actions within the Multi Row actions block reference fields by their relative position in the row and not their absolute position within the screen. So the target of the first Map action is $RECORD/FIELD[1]. Using drag and drop to create your Map actions within the context of the Multi Row will create and assign these field indexes for you automatically.
Select File, then Save from the 3270 Component Editor menu bar, or click the Save button.
Follow the instructions in "Using the Animation Tools" on page 63 to test your component.
To use the Multi Row Wizard to output data:
Create a component per the instructions in "Before Creating a 3270 Component" on page 25. For this example, a component called "3270SampleOutput" is created. The component is shown below in the 3270 Component Editor.
Click the Record button. A blank screen with one line appears in the Native Environment pane.
The user would navigate to the correct screen for this example the user would type in a transaction in the transaction line. This examples uses `MENU" as the transaction.
Press Enter on the keyboard. This example displays an "INSTRUCTIONS" 3270 screen in the Native Environment pane.
NOTE: Alternatively, you may select Enter on the 3270 tool bar within the Native Environment pane. To view this tool bar, select View from the 3270 Component Editor menu bar, then Keypad Toolbar.
In this example, "BRWS" is entered in the TRANSACTION field and "10001" in the NUMBER field.
Press Enter on the keyboard. A "FILE BROWSE" 3270 screen appears.
For multi-row actions the user needs to define the area that contains repeating data either manually or by highlighting the area. In this example, the user drags the cursor over the data area beginning in the upper right hand corner and moving to the lower left hand corner. A gray background highlight appears over the drag marquee.
NOTE: Make sure that you start your drag process with your cursor outside of the first field. If you start dragging within a field, Composer assumes you are trying to move the field itself.
From the 3270 Component Editor menu, select Action, then New Action, then Multi Row. The Multi Row Wizard appears. The wizard automatically fills in the dialog based on the area you highlighted in the previous step.
Edit the fields if desired. When satisfied with the parameters, click Next. The second panel of the Multi Row Wizard appears.
Select the Output radio button for the Use XML As. This panel is used to create a repeat action for processing the multiple elements or screen rows. Its use is similar to the basic "Repeat for Element" action available in all components.
In the Representing field, click the Expression builder button. The Expression builder window appears.
Navigate to the ACCINFO element and double click. The expression appears in the comment pane in the bottom of the window. For this example, the ACCINFO element is the one on which we will loop.
Click OK. You are returned to the second screen of the Multi Row Wizard, which now appears with the new expression in the Representing field.
NOTE: When using the Expression builder, Composer automatically creates an Alias. In this example, Composer created the alias called ACCINFO. For more information on aliases, please see the exteNd Composer User's Guide.
Click the Next button. The Iterate screen of the Multi Row Wizard appears. This screen tells the wizard what to do when it encounters an end of page.
Select F1 from the Iterate by attention key pull down list.
NOTE: The 3270 screen itself contains the instructions for the iteration keys. For this example, the FILE BROWSE screen included instructions that said to use the F1 key to page forward.
To complete the Boundary parameter page of the Multi Row Wizard:
Select the Blank Record radio button. This tells the wizard that a blank record indicates the end point of the loop action. You may also use the Expression builder to set a different indicator for the loop's end point. For more information on using the Expression builder, please see the exteNd Composer User's Guide
Click Finish. The Multi Row actions you created in the wizard appear in the Action Model pane, with the Add all multi row map actions here! comment highlighted.
To add the Multi Row Actions to output data:
Highlight the Add all multi row map actions here! comment in the Action Model if not already highlighted.
Navigate to the first instance of ACCINFO in the Output DOM pane.
Drag and drop the data from the 3270 FILE BROWSE screen to the Output DOM as follows:
From: FILE BROWSE |
To: Output DOM |
---|---|
NUMBER |
ACCTID |
NAME |
NAME |
AMOUNT |
BALANCE |
Select File, then Save from the 3270 Component Editor menu bar, or click the Save button.
Follow the instructions in "Using the Animation Tools" on page 63 to test your component.
To edit the Multi Row Actions:
Click on the MultiRow Action that you wish to change in the Action Pane. The dialog box appears.
Click on the appropriate Tab, edit the fields and click the OK button. Refer to the Previous sections on using the MuliRow Wizard to Input or Output data.
Composer includes animation tools that allow you to test your component. On the 3270 Component Editor tool bar you'll find the Execute button, which allows you to execute the entire Action Model and verify that your component works as you intend.
Open a 3270 component. The 3270 Component Editor window appears.
Select the Execute button. The actions in the Action Model execute and, when complete, a message appears.
From the View menu, select Expand XML Documents. This expands all of the parents, children, data elements, etc. of the XML Documents, which allows you to see the results of the executed component. If you do not expand the XML Documents, you won't see if the data you wanted to move from the 3270 environment made it to the Output DOM.
In the Action Model, you'll find animation tools that allow you to test a particular section of the Action Model by setting one or more breakpoints. This way, you can run through the actions that work properly, stop at the actions that are giving you trouble, and then troubleshoot the problem actions one at a time.
NOTE: The following procedure is a brief example of the functionality of the animation tools. For a complete description of all the animation tools and their functionality, please refer to the exteNd Composer User's Guide.
Open a 3270 Component. The component appears in the 3270 Component Editor window.
NOTE: Animation and Recording are mutually exclusive modes in the component. In order to record during animation, you must either pause, or stop animation and then turn on record mode.
Click the Start Animation button in the Action Model tool bar, or press F5 on the keyboard. All of the tools on the tool bar become active.
Click the Step Into button. The first Map Screen action becomes highlighted.
Click the Step Into button again. The instruction that enters the command "PART" into the input field of the Native Environment pane becomes highlighted.
Click the Step Into button again. The word "PART" appears in the input line of the Native Environment pane.
Click the Step Into button again. The ENTER PART screen appears in the Native Environment pane.
Click the Step Into button again. In the Action Model, the instruction for dragging and dropping the SKU from the Input DOM to the SKU field of the ENTER PART screen field becomes highlighted.
Click the Step Into button again. The SKU data from the Input DOM appears in the SKU field of the ENTER PART screen.
Click the Step Into button again. The ENTER PART screen becomes populated with the data associated with the SKU number.
Click the Step Into button again. In the Action Model, the instruction to drag the SKU data from the ENTER PART screen to the Output DOM becomes highlighted.
Click the Step Into button again. The SKU data from the ENTER PART screen appears in the SKU field of the Output DOM.
Continue to click the Step Into button until all the data elements from the ENTER PART fields appear in the Output DOM, as shown.
The Component with Connection Action is unique because it allows a 3270 component to call another component allowing that component to share the same connection. The action allows you to break up a large component into a main 3270 component and a sub-components so it is easier to maintain the Action Model. The ability to have the main component share with the sub-component the connection greatly reduces the amount of connection overhead and transaction navigation at run time. Before you begin, determine how many sub-components you will require and then build and save the shells (containing no recorded actions) for when you are ready to begin recording.
To use the Component with Connect Action
Create and record the basic structure of the main component to the point where you are ready to call a sub-component. For this example, the main component will be entitled "3270 Caller."
From the Main menu, or by clicking the RMB, select New Action>Component/w connection. The following dialog appears.
From the Component Type pull down list, select the name of the component type. From the Component Name pull down list, select the name of the Component.
Select the passed ID if you need to change it from the pull down list. Select the returned ID if you need to change it from the pull down list. Click OK.
Animate the Main component and step into the Component with Connection action, the sub-component will now open. See how the screen changed to the component entitled "3270Called."
Click on the Pause button on the Animation tool bar to enable the Record button.
Click on Record button and record the sub-component actions.
The 3270 Called window will now switch back to the 3270 Caller window.
The Style Sheet feature of the 3270 Component Editor provides you with options as to how you want to view the Native Environment pane.
To apply a Style Sheet to the Native Environment pane:
From the Component menu on the 3270 Component Editor window, select Style Sheet. The Style Sheet Editor dialog appears.
Choose a Style Sheet from the Style Sheet drop down list. For detailed information on using the Style Sheet editor, see "Creating a Style Sheet Resource" on page 21.
In addition to the Map Screen and Multi Row action, you have all the standard Basic and Advanced Composer actions at your disposal as well. The complete listing of Basic Composer Actions can be found in Chapter 7 of the Composer User's Guide. Chapter 8 contains a listing of the more Advanced Actions available to you.
This section describes common errors you may see while executing the animation tools.
This error occurs during animation or execution of certain transactions. One condition that can cause this is when a transaction sends one or more screens to the terminal that do not require a response from the user (i.e., pressing an Aid key) and then sends a screen that does require a response. For instance, some transactions are designed to display a message screen (e.g., "Please wait...") and then display the actual transaction screen that the user wants. The user cannot respond to the message screen, its display is under the control of the transaction. The problem with transactions behaving this way occurs during animation. As you step from action to action, Composer's Map Screen actions count how many fields each screen has and compares this number with the original field count when you recorded the component. Since the transaction can send a second screen before you have stepped to its corresponding Map Screen action, the field counts get out of sync.
To correct this error, you must determine why the field count has changed and then try one of the following remedial actions.
Double-click the Map Screen action that failed in the Action Model and change the field count variable to the correct number of fields.
Double-click the Map Screen action, disable the field count checking, and wrap the whole Map Screen action block within a Try On Error action that will allow you to conditionally process a field count error instead of an exception being thrown, which halts component execution.
The Navigator Options Dialog allows you to:
You MUST remember to re-select this check box before deployment.
Override connection defaults by clicking in the checkbox to allow an override based on the seconds entered in the Screen Wait field for one navigation action.
Set an expression that is checked each time a packet was received and processed
Return to the next step (which may include Screen Field Count check) if the Screen Evaluation Expression is true.
Disable the Map Screen field count checking and add your own action to check the field count. You can do this by creating a Throw Fault action that checks the field count (e.g., ScreenDoc.XPath("count(SCREEN/FIELD)")>68) needed for your application. An example is shown below.
There are additional circumstances where field counts can get of sync, for example:
A spooler message from a print job arrives unexpectedly. To remedy this, the user would delete the errant Map Screen action from the Action Model.
Applications that send the same screen but with a variable number of fields.
If connection pooling is used, and there has been an attempt to log on with a bad UserID or Password, that connection instance will not be usable and that member of the pool will be skipped over in subsequent connection requests. An error message will be sent to the server log saying "Logon connection in pool <Pool name> was discarded for User ID <User ID>." You should check for messages of this sort during preproduction testing and/or any time performance issues arise.
There are a few different steps you can take to resolve a bad UserID or Password:
Alert your System Administrator that the UserID and Password doesn't work. If the administrator checks the ID and Password and it is good, then reset the server from the Connection Manager Console.
If the UserID and Password is bad, remove it from the connection pool.
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...