关于 Simplified Database Routing 消息流

如果员工详细信息尚未存在于输入消息的内容中,那么 Simplified Database Routing 消息流将从数据库中检索这些详细信息。 将基于输入消息中提供的员工编号检索这些员工的详细信息。 然后消息流将基于从员工管理器中检索的更多信息路由应答消息。 基于不同的输入消息的内容,将满足不同的路由条件。 根据已满足的路由条件,消息可能是到一个或多个以下输出队列的输出:

下图显示了 Simplified Database Routing 消息流。

Simplified Database Routing 消息流的截屏

下表列出了 Simplified Database Routing 消息流中使用的节点的类型:

节点类型 节点名
MQInput MQInput
Route Route
DatabaseRetrieve

DatabaseRetrieve

DatabaseRoute DatabaseRoute
MQOutput FailureQ、KeyNotFoundQ、SeniorStaffQ、OrderClockQ、DefaultQ
Trace Trace

有关更多信息,请参阅 IBM Integration Bus 文档中的内置节点

Simplified Database Routing 消息流将执行以下操作:

  1. MQInput 节点从 SIMPLERROUTEDB_IN 队列中获取 XML 输入消息。 该消息将传递到 Route 节点。
  2. Route 节点将检查该输入消息的内容以查看员工的“工作部门”字段是否可用。 如果该字段可用,那么该消息将通过 Match 终端路由到 DatabaseRoute 节点。 如果该字段不可用,那么必须检索员工详细信息并通过 Default 终端将消息路由到 DatabaseRetrieve 节点。
  3. DatabaseRetrieve 节点查询数据库中的 EMPLOYEE 表以检索员工详细信息。 消息中的员工编号是用于数据库查找的关键字。 在 DatabaseRetrieve 节点中设置的属性指定了要从 EMPLOYEE 表的数据库查询中检索的值,以及将这些值插入输出消息中的位置。
  4. 如果员工编号与数据库中的相应项匹配,那么将使用该数据库中的值填充消息。然后将该消息传递到 DatabaseRoute 节点。
  5. 如果员工编号与数据库中的值不匹配,那么原始输入消息将通过 keyNotFound 终端传递到 KeyNotFoundQ 节点。
  6. DatabaseRoute 节点执行 JOIN 操作以将员工与其经理的详细信息进行比较。 JOIN 操作具有以下步骤:
    1. 在数据库查询中使用输入消息中的工作部门值来在 DEPARTMENT 表中查找部门经理。
    2. 检索经理编号列值 (DEPARTMENT.MGRNUM) 并用于链接到 EMPLOYEE 表中以查找特定的员工记录。 因此,DEPARTMENT.MGRNUM 将链接到 EMPLOYEE.EMPNUM。 查找到的员工记录引用该员工的经理的雇佣记录。
    3. 为该经理返回该节点的数据库查询中指定的值。
  7. 然后处理 DatabaseRoute 节点中的过滤表达式。该表达式为 true 或 false。过滤表达式可通过以下方式进行处理:
    1. 如果员工的工作部门值与 DEPARTMENT 表中的记录不匹配,那么该消息将通过 keyNotFound 终端传递到 KeyNotFoundQ 节点。
    2. 如果员工的年龄大于其经理的年龄且其经理的姓氏为“KWAN”,那么 DatabaseRoute 节点将通过 OlderThanMe 终端将该输入消息传递到 SeniorStaffQ 节点。 然后,对下一个过滤表达式进行求值。
    3. 如果输入消息中的员工的工龄大于 10,那么 DatabaseRoute 节点将通过 TenYearsService 终端将该输入消息传递到 OrderClockQ 节点。
    4. 如果以上两个过滤表达式均不为 true,那么 DatabaseRoute 节点将通过 Default 终端将该输入消息传递到 DefaultQ 节点。
  8. 如果在任何节点中发生处理失败,那么该输入消息将通过节点中的 Failure 终端传递到 Trace 节点以进行错误处理。

Simplified Database Routing 消息流样本中使用的 Database 节点会读取数据库中的信息,但是不对该数据库中的数据进行任何更新。

返回“关于 Simplified Database Routing 样本”