当前位置: 首页 > news >正文

网站规划与建设大作业手机制作音乐的软件app

网站规划与建设大作业,手机制作音乐的软件app,上海高端网站建设公司,微信公众号里的网站怎么做的一个完整的文档服务包含很多对象#xff0c;以Customer服务为例#xff0c;它包含以下对象#xff1a; 查询AxdCustomer#xff1a;这个query的顶层表为CustTable#xff0c;其下Datasource包含表DirParty#xff0c;DirParty下的Datasource则再包含表DirPersonName、表D…一个完整的文档服务包含很多对象以Customer服务为例它包含以下对象 查询AxdCustomer这个query的顶层表为CustTable其下Datasource包含表DirPartyDirParty下的Datasource则再包含表DirPersonName、表DirOrganizationName、视图DirPartyContactInfoView、视图DirPartyPostalAddressView。这个Query定义了服务所用的所有相关数据的数据模型。文档服务类CustCustomerService这是直接提供服务的类它包含Create、Delete、find、findKeys、getKeys、getChangedKeys等对外服务的方法这些方法使用特定的特性标注比如Create方法使用了[AifDocumentCreateAttribute, SysEntryPointAttribute(true)]标注AifDocumentCreateAttribute指出这个方法是文档服务的创建方法这个特性不是必须的主要用途是在使用metadata服务时我们可以根据这个特性列举出所有删除记录的服务操作SysEntryPointAttribute特性指示是否进行授权检查所有的服务操作必须指定这个特性其参数true表示要对调用用户检查是否有权操作该方法涉及到的数据表false则不执行这个检查。文档服务类服务的具体操作都交由其继承的基类AifDocumentService具体操作比如read()方法内部调用的是AifDocumentService.readList()方法。数据对象类CustCustomer、CustCustomer_CustTable、CustCustomer_DirParty、CustCustomer_DirParty_DirPerson等这些类描述了查询AxdCustomer定义的数据模型CustCustomer直接对应Query AxdCustomer它是数据对象类的最顶层它依靠其他数据类CustCustomer_CustTable、CustCustomer_DirParty等。CustCustomer从AifDocument继承后者又从AfStronglyTypedDataContainer继承而AfStronglyTypedDataContainer又从AifXmlSerializable继承由它描述了XML消息定义的一个文档所以我们在read()服务操作方法中看到的返回值就是这个类的一个实例。其他的数据对象类都直接从AfStronglyTypedDataContainer继承所以数据对象类包括CustCustomer都实现一系列的existsXXX()方法这些方法判断某个字段是否存在调用基类的exists()方法一系列parmXXX()方法获取某个字段的值或者下层的数据对象实例createXXX()方法创建并返回其下层的数据对象类实例列表比如CustCustomer.createCustTable()返回包含CustCustomer_CustTable类实例的列表。文档类AxdCustomer文档类的作用是封装涉及到的多个表业务逻辑这样外部调用应用不需要确切的知道如何操作底层数据库表。Axd类实现AifServiceable接口这里的AxdCustomer不是直接实现这个接口而是从AxBase扩展后者实现AifServiceable接口。总体上来讲Axd类实现到XML的序列化及反序列化生成XSD数据Schema控制内部表的生命周期等由它间接的操作下面要讲到的AxXXX表类。Axd类包含的方法很多更详细的介绍可以参见http://msdn.microsoft.com/EN-US/library/aa862063.aspx这里列举几个实现接口AifServiceable比较重要的方法getName()返回文档的名称这是XML文档的根标签的名称getSchema()返回数据Schema XSDgetActionList()返回文档支持的操作列表比如AxdCustomer支持findList、read、readList等操作。表类AxCustTable、AxDirPartyTable等这组类以AxTable方式命名和文档类协同工作同样封装数据表业务逻辑从AxInternalBase继承代表了AOT中的某个表。AxTable类不是必须的在使用AIF Document Wizard创建新的文档服务时勾选了“Generate AxBC Classes”才会创建这些类。如果使用AxTable类可以在文档级别使用“Value mapping” form来映射数据表字段。AxTable内部使用类AxdBaseRead、AxdBaseCreate读写数据库表不使用AxTable的情况则可以在Axd文档类中使用AxCommon读写数据库表。需要注意的如果在服务的Query中添加了一个新的表相应的AxTable类不会自动生成这时候可以使用“Update document service”工具的“Regenerate data object classes”和“Update AxBC classes”选项重新生成或者更新AxTable类。AxTable类和AOT中的表是一一对应的由它直接操作表数据具体功能包括生成表字段的默认值、按照正确的顺序设置表字段值、维护验证关联表数据的完整性、字段值映射比如从供应商料名映射到内部料名、错误处理等需要注意的是AxTable不会验证是谁在操作数据表用户验证要放到前面提到的服务类。看完相关的类和对象在开始后续的问题前我们先来看看Schema XSD是如何生成的。数据对象类继承自AifDocument顶级对象也可能是AfStronglyTypedDataContainerAfStronglyTypedDataContainer有一个方法叫做getSchema()返回Schema XSD而AifDocument是继承自AfStronglyTypedDataContainer它重载了getSchema()方法它会创建对应Axd类的实例调用前面提及的Axd类的getSchema()返回Schema XSD。实际上无论是AifDocument.getSchema()还是AfStronglyTypedDataContainer.getSchema()它们最终都使用AxdBaseGenerateXSD.generate()生成Schema XSD。这里不深入讨论是如何生成XSD的需要知道的是以上方法会枚举文档定义的Query从Query中查找Datasource字段生成相应的XML标记文档Query必须只有一个根Datasource隐藏或者禁止的字段被排除在外XML的根元素名称来自于Axddocument去掉Axd前缀。我们可以用下面的Job从代码生成相应文档服务的XSD static void GenerateXSDSchema_Customer(Args _args) {CustCustomer customer;XML xml;XMLDocument xmlDocument;FileName fileName;;// Instantiate the class.customer new CustCustomer();// Get the document class schema.xml customer.getSchema();xmlDocument XMLDocument::newXML(xml);// Save the schema to a file.fileName c:\\XSDSchema_Customer.xsd;new FileIoPermission(fileName, rw).assert();xmlDocument.save(fileName);CodeAccessPermission::revertAssert(); } 在生成的Schema中我们可以看到AxdCustomer类被映射为complexType类型其下包含的元素是从AxdCustomer的parmXXX方法去掉parm而来Query中的表Custtable也映射为complexType类型名称为AxdEntity_CustTable包含的元素来自于表字段只有那些包含在AxCustTable.parmXXX方法的字段才会出现在XSD中。更详尽的字段类型到XSD的单元的映射关系参见http://msdn.microsoft.com/EN-US/library/aa636469.aspx。要说明的是上面得到的文档服务的完整XSD而我们在端口配置窗口中“View schema”看到的XSD是完整XSD的子集在“Document data policies”窗口我们可以手工使能或者禁止某个字段这只是对当期所配置的AIF端口有效。 XSD描述了XML消息的格式下面是CustCustomerService.read操作得到的XML序列化结果样例省略部分内容 ?xml version1.0 encodingUTF-8 ? - Envelope xmlnshttp://schemas.microsoft.com/dynamics/2011/01/documents/Message - HeaderMessageId{93FE7B5F-99E6-45D6-BAA5-654699EFF0EA}/MessageId Actionhttp://schemas.microsoft.com/dynamics/2008/01/services/CustomerService/read/Action RequestMessageId{E983D78F-0011-47B7-8716-F8B64D120EF6}/RequestMessageId /Header - Body- MessageParts xmlnshttp://schemas.microsoft.com/dynamics/2011/01/documents/Message- Customer xmlnshttp://schemas.microsoft.com/dynamics/2008/01/documents/CustomerDocPurposeOriginal/DocPurpose SenderIdDMO/SenderId ValidAsOfDateTime2012-04-19T19:42:40Z/ValidAsOfDateTime ValidTimeStateTypeAsOf/ValidTimeStateType - CustTable classentity_DocumentHash261dcc95694f19ee9010b1866237b4a2/_DocumentHash AccountNum4503/AccountNum AccountStatementAlways/AccountStatement BlockedNo/Blocked CashDisc14D1%/CashDisc ......WebSalesOrderDisplayWebEntered/WebSalesOrderDisplay - DirParty xsi:typeAxdEntity_DirParty_DirOrganization classentity xmlns:xsihttp://www.w3.org/2001/XMLSchema-instanceLanguageIdEn-us/LanguageId Name3 Company/Name NameAlias3/NameAlias PartyNumber1310/PartyNumber RecId5637145091/RecId RecVersion1/RecVersion - DirPartyPostalAddressView classentityAddress522 West 5th Street New York, NY 10032 US/Address CityNew York/City ....ABCNone/ABC - OrganizationName classentityName3 Company/Name RecId5637144581/RecId RecVersion1/RecVersion ValidFrom2009-06-13T00:17:00Z/ValidFrom ValidTo2154-12-31T23:59:59Z/ValidTo /OrganizationName/DirParty/CustTable/Customer/MessageParts/Body/Envelope 消息包括封皮Envelope和Header段Header段的Action指定操作的名称。有几点需要说明注意到Axd类parmXXX被序列化到XMLQuery中的表加上了classentity属性如果使用了AxTable只有AxTable.parmXXX方法指定的内容被序列化并且由它来读取验证数据否则数据直接从数据库表读出Query中指定的字段。 我们已经知道文档服务的具体操作是在文档服务类中实现标准的文档服务操作包括create、delete、find、findKeys、read、update、getKeys、getChangedKeys。在AOT的Services节点下我们可以新建一个Service来引用这些操作进而在出入站端口中使用。当然不是每一个文档都需要实现上述所有的标准服务此外我们还可以添加自定义的服务操作这些自定义服务操作方法必须定义为public如果参数或者返回值是个对象类那么这个对象类必须实现AifXmlSerializable接口如果不是对象类则只有以下几种元类型被支持str、 date、 utcdatetime、 guid、 int、 int64、 enum、real、void。如何创建一个自定义服务可以参见http://msdn.microsoft.com/EN-US/library/aa607052.aspx。 在findKeys、update、read等方法中用到类AifEntityKeyList它表示的是一个键值对比如我们要读取一个Customer的信息传入的键值对可能是AccountNum5407。如果我们在自定义的方法中需要返回大量数据可以考虑只返回记录的键值对然后再用read方法根据键值对取出实际的记录数据这有助于提高性能。 后续还有更多关于文档服务的内容......转载于:https://www.cnblogs.com/duanshuiliu/archive/2013/01/30/2882581.html
http://www.zqtcl.cn/news/150015/

相关文章:

  • 潍坊网站建设建站哪个网站的课件做的好处
  • 网站建设平台杭州网上交易平台
  • 您提交的网站域名无备案我想学网站建设
  • 怎样做国际网站dw网页设计代码免费
  • wordpress做企业站基础微网站开发公司
  • 用上海注册的公司建的网站怎么做asp网站
  • 一个专做特卖的网站千鸟云网站建设
  • 哈尔滨网站优化seo知名公司
  • 企业网站的开发流程个人免费建网站
  • 旅游网站平台建设方案策划书wordpress 自建cdn
  • 网站开发回访话术内容电商网站有哪些
  • 网络广告投放网站网站如何做关
  • 葫芦岛住房和城乡建设厅网站野望王绩
  • 小说网站怎么做网站建设需求分析班级
  • 开设购物网站的方案网站免费seo
  • 免费手机h5模板网站模板下载wordpress所有插件
  • 北京做网站开发公司wordpress主题创建后门
  • 企业门户网站建设内容企业建设网站的功能是什么意思
  • 做a的网站有哪些在国外做网站推广
  • 做外贸网站设计上需要注意什么python做音乐网站
  • 英语门户网站织梦源码wordpress 推荐插件
  • 学做衣服网站有哪些网站建设算入会计分录
  • 京东网站开发技术织梦网站如何做404
  • 论坛类网站开发屏蔽wordpress缩略图
  • 南宁市两学一做网站logo设计网站官网
  • 中国建设工程造价管理协会网站查询网站开发者的设计构想
  • 华强北网站建设设计素材网站p开头的
  • 怎样让网站快速收录利用数据库修改wordpress密码
  • 网站建设群发广告词做网站首页多少钱
  • 黑彩网站建设中企动力 网站价格