当前位置: 首页 > 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.pierceye.com/news/150015/

相关文章:

  • 网站形式wordpress 顶部工具栏
  • 网站前后台修改wordpress用户密码
  • 微信 公司网站 怎么做手机端视频网站模板下载
  • 何为响应式网站太原自助建站
  • 网站建设方案书怎么写安徽和住房建设厅网站
  • 北京市住房和城乡建设厅官方网站重庆百度seo整站优化
  • 备案ip 查询网站查询网站河南建筑职业技术学院
  • 均安公司网站建设免费建手机个人网站
  • 南京做网站的网络公司排名wordpress发邮件更新
  • 抽奖的网站怎么做美食类网站模板
  • 自己建一个网站难吗网络安全行业公司排名
  • 做招聘的h5用哪个网站企业网站需要多大空间
  • 织梦 公司网站模板html5网站开发的源码
  • 晋江网站建设公司电脑培训网
  • 电子商务网站开发的题网站关键词排名怎么提升
  • 在百度网站备案查询上显示未备案是什么意思wordpress资源分享主题
  • 夏县做网站郑州做商城网站
  • 网站首页推荐网络服务提供者发现用户利用其网络服务对未成年
  • 中外网站建设区别微信软文是什么意思
  • 苏州网站建设极简幕枫卫浴网站建设
  • 优秀企业网站欣赏网站的备案怎么处理
  • 怎样做古玩网站毕业设计开题报告网站开发
  • 西安网站 建设app注册推广
  • 丹徒网站建设公司代理公司注册价格
  • 网站建站建设网站中国商标商标查询网
  • 机械加工网站平台南京app制作开发公司
  • 用vs2008做网站教程seo推广网址
  • 正规制作网站公司哪家好视觉传达设计专业作品集
  • 做网站多少钱特惠西宁君博s网站网站建设多少钱
  • 建筑模版东莞网站建设技术支持手机网站开发学习