Creating data objects
BOFactory boFactory = (BOFactory)ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOFactory");
The following code snippet shows how you can determine the type of a process variable and create a new data object of that type:
Type type = getVariableType("Output");
Output = boFactory.createByType(type);
To create a nested data object, you can use the createDataObject method of the DataObject:
DataObject nested = Output.createDataObject("processBusinessObject");
You can also create a data object using the create method of the BOFactory service. You have to specify name and namespace:
MyBO = factory.create(" http://JavaSnippets/bpc/samples","BO");
Copying data objects
BOCopy copyService = (BOCopy)ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOCopy");
The BOCopy service offers to methods to create a deep copy of data objects: copy and copyInto. The copy method returns a copy of the original DataObject and the copyInto method allows to copy the original DataObject into the structure of an existing DataObject.
Copy:
DataObject dataObject = copyService.copy(ProcessBusinessObject);
CopyInto:
copyService.copyInto(ProcessBO, Output, "processBO");
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@page import="com.ibm.websphere.sca.ServiceManager"%>
<%@page import="com.ibm.websphere.bo.BOFactory"%>
<%@page import="commonj.sdo.DataObject"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<%
ServiceManager serviceManager = ServiceManager.INSTANCE;
//Create the Business Object factory to create business object at runtime
BOFactory boFactory = (BOFactory)serviceManager.locateService("com/ibm/websphere/bo/BOFactory");
%>
Initialization for BO Factory is done.
<br>
<%
//Create Customer business object
//Use BOFactory.create() method to create the data object, because the business object is created by the Business Object editor
//First parameter is the namespace of the business object. You can find it from the Namespace field of the properties view in the Business Object Editor.
//Second parameter is the name of the business object. It can be found in the Name field of the properties view in the Business Object Editor.
DataObject customer = boFactory.create("http://BankModule/com/bank/eMerged", "Customer");
//set values for the simple-typed attributes
customer.setString("customerName", "John Smith");
customer.setString("customerId", "11111111");
//The customer business object has an attribute of type Address, which is another business object.
//To set value on this attribute, create a business object using DataObject.createDataObject().
//However, because this method will overwrite any existing value, add isSet() to make sure the attribute is not already set.
if (!customer.isSet("address")){
DataObject address = customer.createDataObject("address");
address.setString("wholeAddress", "8200 Warden Avenue");
//The only attribute left is the "accounts" attribute. A customer business object contains a list of accounts.
//First, create the data object for the Account business object. And set the values for the attributes
DataObject ac1 = boFactory.create("http://BankModule/com/bank/eMerged", "Account");
ac1.setString("accountNum", "ABC12345");
ac1.setFloat("balance", 5678.9f);
DataObject ac2 = boFactory.create("http://BankModule/com/bank/eMerged", "Account");
ac2.setString("accountNum", "DEF34567");
ac2.setFloat("balance", 100.3f);
//Second, prepare the list for adding the account data object
ArrayList acList = new ArrayList();
acList.add(ac1);
acList.add(ac2);
//Third, set the "accounts" attribute to be the list.
customer.setList("accounts", acList);
}
%>
Customer business object has been created.
<br>
<br>
Printing customer information...
<br>
<!-- Retrieve customer name -->
Customer name: <%= customer.getString("customerName") %>
<br>
<%
//Retrieve customer address object
DataObject address2 = customer.getDataObject("address");
%>
Customer address: <%= address2.getString("wholeAddress") %>
<br>
Customer's account list which is an array:
<%
//Retrieve the list of customer accounts
List list = customer.getList("accounts");
DataObject a1 = (DataObject)list.get(0);
%>
<br>
Account 1 : <%= a1.getString("accountNum")%>
</body>
</html>
分享到:
相关推荐
**SOA(Service-Oriented Architecture)是一种架构模式,它提倡将业务...在实际项目中,SCA/SDO结合使用能够提供一种高效且灵活的SOA实现方式,帮助开发团队快速响应业务变化,构建出可扩展和可维护的企业级应用程序。
SDO 通过以下方式简化数据编程:统一跨数据源类型的数据编程;为公共应用形式提供支持;使应用、工具和框架更容易查询、观察、绑定、更新和检查数据。 SDO 的组成部分包括: A. SDO 的“概念性”特征 1. SDO 客户...
5. **SDO编程**:SDO用于非实时参数的传输,如配置或诊断信息。编程时,需定义SDO服务器和客户端,处理上传和下载操作。 6. **NMT管理**:网络管理服务(NMT)用于控制网络状态,如启动、停止、心跳检测等。编程时...
### SOA编程模型_SCA_SDO详解 #### 一、SOA编程模型概述 ##### 1.1 面向服务的架构(SOA) 面向服务的架构(Service Oriented Architecture,SOA)是一种软件设计模式,它强调的是通过定义一组粗粒度、松耦合的服务...
1. **统一的数据访问接口**:无论数据存储在何种形式下,SDO都能提供一致的编程接口,降低了学习成本和维护难度。 2. **数据独立性**:SDO将数据表示与存储分离,使得同一数据可以在不同的上下文中被解释和使用。 3....
4. **数据绑定**:SDO可以与各种编程语言(如Java、C#等)进行数据绑定,方便开发人员操作。 5. **多版本兼容**:SDO支持多个数据版本,使得服务能够处理不同版本的数据,增强了系统的兼容性。 **SDO与SOQ的关系** ...
SCA是一种用于构建和组装企业级服务的编程模型,它强调服务的组合和重用,旨在简化分布式系统开发。SDO则是一个数据访问接口,为应用程序提供了一种统一的方式来处理各种类型的数据源。 SCA的核心概念包括组件、...
1. **Service Component Architecture (SCA)**:SCA是一种编程模型,它允许开发者以声明式的方式组装服务,而无需关心底层技术细节。它提供了服务的创建、部署和组合的统一框架。在提供的文件中,"SCA_EJB会话bean...
"helper"标签可能指的是库中包含的一些辅助类或工具,这些工具可以帮助开发者更方便地使用SDO接口,简化编程任务,如数据绑定、类型转换等。 **子文件:“commonj.sdo-2.1.1.jar”** 这个版本号(2.1.1)表明这是...
- **跨平台能力**:SCA和SDO支持多种编程语言和运行环境,使得开发出的应用能够轻松地跨越不同的平台和技术栈。 #### 六、SCA与SDO对SOA的意义 SCA和SDO对SOA的重要性体现在以下几个方面: 1. **标准化**:SCA和...
6. 可能还包括了一些实践指南,帮助初学者通过编程实现PDO和SDO的通信。 了解PDO和SDO对于深入理解CANopen协议至关重要,这对于开发基于CANopen的系统,尤其是涉及到实时性和参数配置的项目非常有帮助。通过深入...
SDO规范的核心目标是简化应用程序在处理不同类型的数据源时的复杂度,如关系数据库、XML文档、对象持久化存储等,通过提供一致的编程接口,使开发者能够更高效地进行数据操作。 二、SDO规范的关键概念与功能 1. **...
在本文中,我们将深入探讨SDO驱动的工作原理、重要性以及与其相关的编程知识。 一、SDO驱动概述 SDO驱动是硬件设备与操作系统之间的桥梁,它允许操作系统与三星设备上的标准清晰度输出接口进行通信。这个驱动程序...
CANopen是一种基于CAN(Controller Area Network)总线的高层...通过上述的实例分析,我们可以获得CANopen PDO和SDO应用的全面认识,并且可以根据这些知识来协助进行编程,从而在实际的项目中实现设备之间的有效通讯。
7. **API和编程模型**:SDO提供了丰富的API,使得开发者可以方便地创建、查询、更新和删除数据对象,同时支持Java和C++等多种编程语言。 8. **互操作性**:由于SDO的标准化,它与其他遵循SDO规范的系统可以无缝交互...
总结来说,"eclipse下可视化编程插件"结合了EMF和SDO的SDK,为开发者提供了强大的模型驱动开发能力和数据访问能力,让编程过程更加直观和高效。通过学习和使用这些工具,开发者可以提升开发效率,降低错误率,并且更...
SCA组件可以使用多种编程语言实现,如Java、C++或Python,这得益于其语言无关性。 SDO则是一种数据访问接口,它提供了一种统一的数据模型,使得应用程序可以透明地访问不同来源的数据,无论数据存储在数据库、文件...
2. **commonj** - 这可能是一个目录或文件,指的是CommonJ,这是一个Java平台上的开源项目,提供了多线程和任务编程的API。在SDO上下文中,这可能与数据服务如何利用多线程处理和并发性有关,或者CommonJ可能被用作...
- 使用SDO API进行数据访问,提供了一致的编程模型,简化了数据操作。 - 利用Eclipse的图形化工具(如EMF Edit)来设计和可视化数据模型。 - 利用模型到代码的生成能力,自动生成Java代码,减少手动编码的工作量。 -...