轮询表活动通过按指定时间间隔检查特殊标志列的状态来检查在数据库表的任何行上是否已进行数据库操作(插入或更新)。
在运行时期间,对于插入和更新操作,
轮询表活动返回数据库表中已更改的数据,并将该数据直接映射到编排中的变量,而
获取已插入行和
获取已更新行活动则将已更改的数据返回到缓冲区表中,然后将该缓冲区表映射到编排中的变量。
注: 仅当必须避免向数据库中添加触发器时,才使用轮询表活动而不是获取已插入行、获取已删除行和获取已更新行活动。
在 Studio 中配置
轮询表活动之前,必须首先在源数据库表中另外创建两个数据库列,或者使用数据库表中两个相应的现有数据库列。下列数据库列在源数据库表中是必需的:
- INTEGER 类型的序列列 - 此列包含主键(唯一编号序列:1、2、3 ...)
- CHAR(1) 类型的标志列 - 此列包含 Integration Appliance 在运行时期间用于确定 Integration Appliance 是否应对行进行处理的标志。
在 Integration Appliance 上运行包含轮询表活动的编排时,还必须填充数据库表中的这些列。如果不希望 Integration Appliance 在运行时期间处理行,请将标志列设置为 P。如果希望 Integration Appliance 在运行时期间处理行,请将标志列设置为 null。
在以下示例数据库表中,
标志列中的所有值初始都设置为 P,如下图中所示:
注意: 您必须管理标志列的状态。处理行后,Integration Appliance 将标志列更改为
P(表示已处理),如以下示例场景中所述:
- 在数据库中插入行。标志列针对该行设置为 null。
- 轮询表活动首次运行,并且针对该行将标志值设置为 P。
- 更新同一行,并且轮询表活动会再次运行。在活动的返回数据中未返回该行,因为 Integration Appliance 已检查标志列,并且标志指示已对该行进行处理。
为使 Integration Appliance 再次对行进行处理,在运行包含轮询表活动(访问同一源数据库表)的编排作业之前,必须将标志列复位为 null。
下列过程中描述了向编排中添加和配置
轮询表活动的步骤:
在编排中添加“轮询表”活动
- 创建或打开编排。此时会打开编排的图形表示法。
- 选择活动选项卡并展开数据库文件夹。
- 将轮询表活动拖至编排上。
- 选择轮询表活动。
创建、选择或编辑数据库端点
- 单击核对表中的选取端点任务,然后选择下列操作之一:
- 选择现有端点:
- 选择浏览。此时会打开 Project Explorer。
- 选择现有端点并单击确定。跳至指定要轮询数据库操作的源表的列过程。
- 选择现有端点并编辑该端点:
- 选择浏览。此时会打开 Project Explorer。
- 选择现有端点并单击确定。
- 单击编辑。此时会显示“编辑端点”窗格。
- 创建新端点:
- 选择新建。此时会打开“创建端点”窗格。
- 创建或编辑数据库端点。
指定要轮询数据库操作的源表的列
- 单击核对表中的选取端点。
此时会打开“选取端点”窗格。
- 单击浏览。此时会打开“选择单个源表”对话框。
- 选择在运行时期间希望轮询表活动轮询数据库操作的表。
- 从按用户模式过滤列表中选择用户模式。
- 选择隐藏缓冲区和控制表以过滤出 Integration Appliance 使用的任何缓冲区或控制表。
注: 此过滤器仅隐藏使用来自 Studio 的脚本中生成的标准名称的缓冲区和控制表。
- 从列表中选择单个表:
- 如果您只想轮询源表的主键列上的数据库操作,请选中仅选择表中的主键复选框。
- 单击确定。此时在“选取表”窗格中会显示表列。(如果已选中仅选择表中的主键复选框,那么仅会显示主键列。)
- 如果此表的字符编码不同于数据库的编码,请使用下列选项之一输入其他编码:
- 从编码列表中选择其中一种缺省编码类型。
- 通过在编码字段中单击,然后输入编码类型,直接输入编码类型。
- 选择在运行时期间希望轮询表活动轮询数据库操作(插入、删除或更新)的表的列。缺省情况下,会选择所有列。对于不需要的列请清除使用复选框。单击全部使用以重新选择所有列。
- 单击列标题以按列值对行进行排序。例如,要按行的列名称对行进行排序,请单击列的列名称标题。在列标题名称右侧会显示一个箭头。
向上箭头指示列按字母顺序(从 a 到 z)排序。
向下箭头指示列按反向字母顺序(从 z 到 a)排序。
单击箭头可逆转字母顺序。
- 如有必要,请为各查询输入参数更改数据类型、编码或可空值的设置。
单击字段以进行新选择:
选择“序列”和“标志”列
- 从核对表中选择选择列。
- 从列表中选择序列列。
这是 INTEGER 类型的序列列,包含主键(唯一编号序列:1、2、3 ...)您可以将其添加到源数据库表或用于确定是否能够使用源数据库表中的现有列。
- 从列表中选择标志列。CHAR 类型的标志列,其中包含 Integration Appliance 对行进行处理后设置为 P 的标志。Integration Appliance 使用序列和标志列来检查消息是否重复。此外,这两列和交付规则窗格中处理行后将其删除复选框的设置均供 Integration Appliance 用于确定针对删除请求的操作:
- 如果已选中处理行后将其删除复选框,那么 Integration Appliance 将标志设置为 M,然后删除行。
- 如果已清除处理行后将其删除复选框,那么 Integration Appliance 将标志设置为 M,然后设置为 P,但是未删除行。为使 Integration Appliance 再次对行进行处理,在运行包含轮询表活动(访问同一源数据库表)的编排作业之前,必须将标志列复位为 null。
- 配置交付规则。
注: 如果在交付规则任务中选择仅一次选项,那么必须创建供 Integration Appliance 在运行时期间使用的控制表。从 Studio 将编排发布到 Integration Appliance 后,创建控制表。部署项目之前,使用 Web 管理控制台 (WMC) 创建控制表。
注: 如果选择
仅一次选项,那么必须启用持久性。要了解更多的信息,请参阅
启用持久性。
- 配置重试选项。
映射活动的输出
- 在核对表中选择映射输出任务。
此时在“源活动”窗格中的 row 元素下会显示活动的输出参数。源活动窗格中显示的输出参数与在选取表任务中所选的列对应。
如果在交付规则中选择了批处理选项,那么在 row 元素旁边会显示多次出现符号。
注: 在运行时期间,
轮询表活动的
rows 输出参数未使用序列和标志列值进行填充。仅会返回在
选取表任务中所选的列。
- 将所需输出参数映射到变量。请参阅创建映射,以获取有关映射的常规指示信息。您无需映射这些活动的输出参数。