楼主: petutor

从数据库调用 WebSphere 业务流程

[复制链接]
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
11#
 楼主| 发表于 2007-3-23 08:03 | 只看该作者
填写数据库凭据和连接属性,如图 11 所示。确保将 192.168.0.100 更改为承载 DB2 的计算机的“IP 地址”。如果 DB2 与 WebSphere Process Server 在同一台计算机上,您可以使用 localhost。如果您的 DB2 实例不使用缺省 50000 端口,则不要忘了还要更改该端口。


图 11. 数据库凭据

figure11.jpg (116.15 KB, 下载次数: 6)

figure11.jpg

使用道具 举报

回复
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
12#
 楼主| 发表于 2007-3-23 08:03 | 只看该作者
单击 Run Query,您应该看到 db2schema 中的表,如图 12 所示。选择 ORDER 表,然后单击 => Add。最后,请单击 Next。


图 12. 内省 ORDER 表

figure12.jpg (89.62 KB, 下载次数: 5)

figure12.jpg

使用道具 举报

回复
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
13#
 楼主| 发表于 2007-3-23 08:04 | 只看该作者
确保将 Service Type 设置为 Inbound,并对 BOLocation 插入 com/ibm/dataobjects。您可以将此视为适配器构件的包名称或名称空间。


图 13. 选择 Inbound 服务类型

figure13.jpg (65.96 KB, 下载次数: 7)

figure13.jpg

使用道具 举报

回复
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
14#
 楼主| 发表于 2007-3-23 08:04 | 只看该作者
请注意,需要一个业务集成模块项目来存放适配器构件。请单击 New => Next 来创建一个这样的项目。对模块名称插入 EventDrivenProcess 并单击 Finish。


图 14. 创建集成模块项目

figure14.jpg (88.64 KB, 下载次数: 6)

figure14.jpg

使用道具 举报

回复
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
15#
 楼主| 发表于 2007-3-23 08:05 | 只看该作者
选择 Use discovered connection properties,如图 15 所示。


图 15. 数据库连接属性

figure15.jpg (110.07 KB, 下载次数: 5)

figure15.jpg

使用道具 举报

回复
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
16#
 楼主| 发表于 2007-3-23 08:06 | 只看该作者
该对话框将展开更多字段。请插入下面的信息:


清单 5. 数据库连接属性
        
        Username: db2admin
        Password: <your-db2-password>
        EventOrderBy: EVENT_ID
        EventTableName: ORDER_EVENT
        DatabaseVendor: DB2
      


最后单击 Finish,您应该看到新创建的业务集成模块,它带有入站适配器 Export SCA 组件。
创建业务流程

您的工作区现在看起来应该类似于图 16。当某个数据库事件发生时,将会调用 JDBCInboundInterface 组件。在本部分中,我们将构建在 JDBCInboundInterface 被调用时接收通知的组件。也就是三个调用来进行创建、更新和删除操作的业务流程。这里假设您熟悉服务组件体系结构 (SCA) 和 WebSphere 业务流程。有关使用 WebSphere Integration Developer 来开发业务流程的信息,请参见参考资料部分提供的信息中心。


图 16. 业务集成模块

figure16.jpg (72.84 KB, 下载次数: 6)

figure16.jpg

使用道具 举报

回复
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
17#
 楼主| 发表于 2007-3-23 08:06 | 只看该作者
我们的第一个步骤是创建一个使用订单创建事件的业务流程。右键单击 Interfaces 并选择 New => Interface。对名称插入 OrderCreate,对文件夹插入 com/ibm/interfaces。
创建一个与图 17 确切相似的界面。请注意,该操作名为 createDb2adminOrder,唯一的 Input 参数名为 Row,Row 的 BO 类型为 Db2adminOrderBG。此界面实际上是适配器界面的子集(仅包括创建操作)。


图 17. 构建 OrderCreate 界面

figure17.jpg (57.44 KB, 下载次数: 5)

figure17.jpg

使用道具 举报

回复
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
18#
 楼主| 发表于 2007-3-23 08:07 | 只看该作者
在 com/ibm/interfaces 文件夹中创建另外两个分别名为 OrderUpdate 和 OrderDelete 的界面。创建与 OrderCreate 相同的 Input,只不过分别将操作命名为 updateDb2adminOrder 和 deleteDb2adminOrder。
右键单击组件编辑器的空白区域,然后单击 Add Node => Process。将其命名为 OrderCreateProcess。选择浮动的界面图标,并将其界面设置为 CreateOrder。双击 OrderCreateProcess 以实现该组件。对文件夹插入 com/ibm/interfaces。
在 Receive 组件下面,创建一个名为 LogProcessEntry 的 Java Snippet 组件。在 Properties 选项卡 => Details 下面为 LogProcessEntry 插入以下 Java 代码。实际上,您可能使用更高级的记录方法;不过这里为方便起见,我们将使用控制台。


清单 6. OrderCreate LogProcessEntry 代码片段
        
        System.out.println(
            "============ New Order Process Invoked ============";
        System.out.println(
            "ORDER_ID is "+Row.getDataObject("Db2adminOrder".getInt("orderid");
        System.out.println(
            "DESC is "+Row.getDataObject("Db2adminOrder".getString("desc");
        System.out.println(
            "QTY is "+Row.getDataObject("Db2adminOrder".getInt("qty");
        System.out.println(
            "===================================================";
      


下一步,创建一个名为 ApplyDiscountChoice 的 Choice 组件。为 Case 组件插入下面的 Java 代码:


清单 7. ApplyDiscount Case 语句
        
        return Row.getDataObject("Db2adminOrder".getInt("qty" > 10;
      


在 Case 组件下面,创建另一个名为 Discount 的 Java Snippet。为 Discount 插入下面的 Java 代码:


清单 8. Discount 代码片段
        
        System.out.println("++++++++ Discount Applied! ++++++++");
      


右键单击 ApplyDiscountChoice 组件并选择 Add Otherwise。在 Otherwise 组件下面,创建一个空组件并将其命名为 no-op。
结果 OrderCreateProcess 看起来应该与图 18 非常相似。您可能已经观察到了,此业务流程执行相关检查,以确定订单数量是否大于 10,并在情况属实时应用折扣。否则,它就正常处理该订单。在实践中,Discount 和 no-op 组件可能被替换为对订单处理 Web 服务、JMS 服务或其他 SCA 组件的调用。


图 18. 订单创建业务流程

figure18.jpg (86.76 KB, 下载次数: 6)

figure18.jpg

使用道具 举报

回复
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
19#
 楼主| 发表于 2007-3-23 08:07 | 只看该作者
打开组装关系图并创建一个名为 OrderUpdateProcess 的业务流程。使用 OrderUpdate 界面并对文件夹使用 com/ibm/processes。与前面一样,添加一个名为 LogProcessEntry 的 Java Snippet,并使用下面的 Java 代码来填充它:


清单 9. OrderUpdate LogProcessEntry 代码片段
        
        System.out.println(
            "============ Update Order Process Invoked ============";
        System.out.println(
            "ORDER_ID is "+Row.getDataObject("Db2adminOrder".getInt("orderid");
        System.out.println(
            "DESC is "+Row.getDataObject("Db2adminOrder".getString("desc");
        System.out.println(
            "QTY is "+Row.getDataObject("Db2adminOrder".getInt("qty");
        System.out.println(
            "======================================================";
      


创建一个名为 CheckQuantityChoice 的 Choice 组件。使用下面的 Java 代码来填充 Case 组件:


清单 10. CheckQuantity Case 语句
        
        return 0 == Row.getDataObject("Db2adminOrder".getInt("qty";
      


创建一个名为 RemoveOrder 的 Java Snippet。为 RemoveOrder 插入下面的 Java 代码:


清单 11. RemoveOrder 代码片段
        
        System.out.println("++++++ QTY is 0. Removing Order. ++++++");
      


与前面一样,创建一个其下面带有 no-op 组件的 Otherwise 组件。
结果 UpdateOrderProcess 看起来应该与图 19 非常相似。该业务流程执行相关检查,以确定订单数量是否为 0。如果是,则从系统中删除该订单(同样,为简洁起见而只提供了实现存根)。


图 19. 更新订单业务流程

figure19.jpg (89.8 KB, 下载次数: 5)

figure19.jpg

使用道具 举报

回复
论坛徽章:
1
会员2007贡献徽章
日期:2007-09-26 18:42:10
20#
 楼主| 发表于 2007-3-23 08:08 | 只看该作者
创建一个名为 DeleteUpdateProcess 的业务流程。使用 OrderDelete 界面并对文件夹使用 com/ibm/processes。添加一个名为 LogProcessEntry 的 Java Snippet,并使用下面的 Java 代码来填充它:


清单 12. OrderDelete LogProcessEntry 代码片段
        
        System.out.println(
            "============ Delete Order Process Invoked ============";
        System.out.println(
            "ORDER_ID is "+Row.getDataObject("Db2adminOrder".getInt("orderid");
        System.out.println(
            "DESC is "+Row.getDataObject("Db2adminOrder".getString("desc");
        System.out.println(
            "QTY is "+Row.getDataObject("Db2adminOrder".getInt("qty");
        System.out.println(
            "======================================================";
      


创建一个名为 CheckForPremiumCustomer 的 Choice 组件。在 Case 组件中插入下面的 Java 代码:


清单 13. CheckForPremiumCustomer Case 语句
        
        String premiumCode = "222";
        String orderId =
            Integer.toString(Row.getDataObject("Db2adminOrder".getInt("orderid");
        if(3 > orderId.length()) return false;
        else return orderId.substring(0,3).equals(premiumCode);
      


在 Case 组件下面,使用下面的 Java 代码创建一个名为 SendFeedbackSurvey 的 Java Snippet:


清单 14. SendFeedbackSurvey 代码片段
        
        System.out.println(
            "+++++ Premium customer order deleted. Feedback survey send. +++++");
      


与前面一样创建 Otherwise 和 no-op 组件。
OrderDeleteProcess 执行相关检查,以确定 orderId 的前三个数字是否为“222”。如果是,则认为该订单与某个优惠客户相关联,并发送反馈调查。该流程看起来应该与图 20 完全相同。


图 20. 订单删除业务流程

figure20.jpg (77.05 KB, 下载次数: 8)

figure20.jpg

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表