# 发行说明、已知问题、局限性和影响服务流项目的变通方法

## 从服务流项目生成的 Web service 无法调用自身（递归调用）

从服务流项目生成的 Web service 无法直接或间接调用它自身。通常，服务流项目工具不允许您创建流的递归调用（即，直接或通过中间调用来调用自身的流）。

但是，服务流项目工具当前检测不到以下类型的递归：

1. 您从服务流项目生成 Web service（例如 WS01）。
2. 生成的 Web service（WS01）调用某些其他 Web service（例如 WS02）。（顺便提一下，在 Enterprise Service Tools 中，WS02 称为“出站 Web service”，因为 WS02 在调用它的 Web service 的外部。）
3. 已调用的 Web service（WS02）反过来又调用最初的 Web service（WS01）。

在这种情况下：在您创建递归时，流编辑器检测不到递归，并且不显示错误消息。您可以成功地为 CICS® Service Flow Runtime 生成运行时代码并部署 Web service（WS01）。当您运行 Web service（WS01）时，对第二个 Web service（WS02）的调用会成功。但是，递归调用（从 WS02 回到 WS01）将失败。

## 不容易替换屏幕消息

问题：如果您意外地删除了屏幕消息文件，并且尝试重新导入或重新捕获屏幕以替换这些文件，那么对这些文件中的消息的引用可能仍是不完整的。这是因为对于每条屏幕消息，将生成一个唯一标识，并且此唯一标识用于标识其他文件中的屏幕消息。

变通方法： 经常备份您的项目。如果意外地删除了屏幕消息文件并且您不希望对您的流重新建模，那么请通过导入这些文件的备份版本而不是重新导入或重新捕获屏幕来重新显示消息。

## 通过用法子句 POINTER 导入的源代码的局限性

问题：导入包含用法类型为 POINTER 的字段的 COBOL 或 PL/I 源代码数据结构将产生一条消息，该消息具有一个类型为 hexBinary 的对应字段。这将导致“生成运行时代码”向导失败。

变通方法：在消息编辑器中编辑该消息。在编辑器的“高级”选项卡中，将该字段的类型从 hexBinary 更改为 int。此更改将使生成能够成功完成。

## 对连接回自身的流的限制

问题：流编辑器不会阻止您添加这样一种连接，该连接将流的执行路径连接回其自身（在流的执行路径中较早经过的点）。在您生成运行时代码时，这种情况可能不会导致错误。但是，在运行时处理期间，很有可能导致错误。

变通方法：如果您希望只要某个条件为真，流的一部分就可以重复多次，那么请使用 While 节点（请参阅 Enterprise Service Tools 文档中的主题“创建循环”）。

## 消息和字段名称的冲突导致编译错误

问题：当建立流的模型并且一条消息的字段与另一条消息具有同一名称时，生成的 COBOL 代码可能由于命名冲突而不编译，并报告 IGYPS0037 错误。例如，如果流引用 (1) 带有一个字段“Y”的消息“X”，以及 (2) 名为“Y”的消息，这时生成的代码引用项“Y”，COBOL 编译器将不知道是引用消息“Y”还是引用字段“Y OF X”。

变通方法：重构消息或字段来解决该名称冲突。在 EST Project Explorer 中，选择具有重复名称的任一项。打开上下文菜单并选择“重命名”。

## 当路径或文件名包含非英语字符时，导入 COBOL 副本文件失败

问题：如果尝试导入 COBOL 副本文件，并且文件路径或文件名包含非英语字符，那么导入失败。

变通方法：重命名 COBOL 副本文件，使该名称只包含英语字符。在路径仅包含英语字符的目录中查找文件。

## 当路径或文件名包含非英语字符时，导入 PL/I 包含文件失败

问题：如果尝试导入 PL/I 包含文件，并且文件路径或文件名包含非英语字符，那么导入失败。

变通方法：重命名 PL/I 包含文件，使该名称只包含英语字符。在路径仅包含英语字符的目录中查找文件。

父主题： Enterprise Service Tools － 发行说明