业务对象调试和运行

业务对象调试和运行WID是一个集成的开发环境,为我们提供了良好的对WPS6.0的支持,BO可以在WPS6.0下运行,但是同时也提供了一个轻量级的J2SE的调试环境,我们可以使用J2SE来测试我们的BO

在WID中,我们可以任意创建一个可以运行的Java类来运行BO,下面是一些BOF服务的使用方法,我们将具体介绍每一个服务的调用方法和功能,读者可以比较一下SDO相应接口的调用方式

private BOChangeSummary getBOChangeSummary(DataObject purchaseBG) {BOChangeSummary change = (BOChangeSummary) ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOChangeSummary");return change;}获取BOChangeSummary服务,用于管理BG中ChangeSummary的内容,利用ChangeSummary,我们可以保存一组BO的初始值

private DataObject createBO(String string,String string2) {BOFactory bof = (BOFactory) ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOFactory");return bof.create(string,string2);}private DataObject createByType(String string,String string2) {BOType botype = (BOType) ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOType");Type type = botype.getType(string,string2);BOFactory bof = (BOFactory) ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOFactory");return bof.createByType(type);}BOF服务提供了许多创建BO的方式,我们可以通过BO定义中的TargetNameSpace和TypeName创建BO,可以通过SDO的Type定义来创建BO,并且BOF还支持从WSDL的Message中创建BO

private DataObject retrieve(DataObject purchase) {ByteArrayOutputStream bos = new ByteArrayOutputStream();BOXMLSerializer serializer = (BOXMLSerializer) ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOXMLSerializer");BOXMLDocument doc = serializer.createXMLDocument(purchase,"abc. com/PurchaseRetrieve","Retrieved");try {serializer.writeXMLDocument(doc,bos);} catch (IOException e) {e.printStackTrace();}ByteArrayInputStream in = new ByteArrayInputStream(bos.toByteArray());try {doc = serializer.readXMLDocument(in);} catch (IOException e1) {e1.printStackTrace();}return doc.getDataObject();}BO支持序列化和反序列化,可以轻易地将BO的Java实例转换为一个XML文件或者一个流保存起来,并且在需要的时候,将这个BO从XML或者流中转换回一个Java实例

private BOEventSummary getBOEventSummary(DataObject purchaseBG) {BODataObject boe = (BODataObject) ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BODataObject");return boe.getEventSummary(purchaseBG);}BOF服务提供了对BG中EventSummary进行操作的服务,BOEventSummary,我们可以对某一BO设置其Event和ObjectEventID

private void endLogging(DataObject purchaseBG) {ChangeSummary chs = (ChangeSummary) purchaseBG.get("changeSummary");chs.endLogging();}private void beginLogging(DataObject purchaseBG) {BOChangeSummary changes = (BOChangeSummary) ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOChangeSummary");changes.beginLogging(purchaseBG);}BeginLogging和EndLogging是一对操作,BOF会将在beginLogging之前BO的值保存在ChangeSummary中

private boolean isEqual(DataObject copyofpurchase,DataObject purchase) {BOEquality boe = (BOEquality) ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOEquality");return boe.isEqual(copyofpurchase,purchase);}使用BOF提供的BOEquality服务可以很容易地比较两个复杂的BO是否相同,这里需要区分isEqual方法和isEqualShallow方法的区别,前者会整个比较BO中所有的内容,包括子BO中的内容,isEqualShallow则直比较BO中简单类型是否相等

private DataObject copy(DataObject purchase) {BOCopy bocopy = (BOCopy) ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOCopy");return bocopy.copy(purchase);}BOCopy服务可以帮助用户将一个BO的实例拷贝成为另一个BO的实例,两个实例完全一致,这里同样有两个方法copy和copyShallow,copyShallow将只会拷贝BO中的简单类型,这里还有一对方法copyInto和copyPropertyInto,前者将BO拷贝到另外的一个BO中作为子BO,后者可以拷贝BO中的某个属性

以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。

相关