4.2 框架特性

1.目标

  • 描述事件的概念,并介绍怎样在AX中使用它。
  • 描述与AX结合的多种方法。
  • 描述AX中可用的多用服务类型。
  • 为.NET操作X++使用一个代理类
  • 从X++访问托管的程序集。
  • 解释如何部署.NET Framework程序集。

2.介绍

在AX2012中,有许多框架可用。本章提供对AX2012中一些框架、子系统和特性的描述。框架是设计模式、接口和代码的容器,为开发者提供支持。

2.1事件

事件是客制化的设计模式,用来设计启用无干扰、可维持的客制化。该技术允许你客制化系统,而不用广泛地改变基本应用的源代码。

事件允许客制化事件处理器中实现的行为。时间处理器代码在响应中被调用,用来相应一个事件。

要了解事件的更多信息,看本章的“Event Handlers for Customization”。

2.2地址系统

地址由地址子系统处理。全局地址簿,或地址子系统,能帮助你理解大量人和组织渐渐的关系。例如,一个客户也可以是市场竞争中的一个供应商,在组织中的工人,也能成为供应商。

注意:要了解更多地址系统,参考Application Foundation Features章节的“Global Address Book”。

2.3批处理日记框架

批处理日记框架,能用于运行一组被RunBase框架创建的任务。

提示:每个任务都有单独的tts 事务控制。

RunBase框架提供一个标准的途径,在AX中创建进程和批处理任务。框架必须被应用中每个工作类型的功能所使用。

该框架被RunBase application类实现,提供了许多特性:

  • Query
  • Dialog,展示用户最后输入的值
  • Validate
  • 为用户执行批处理,来计划工作。该功能使用RunBaseBatch类,和pack(),unpack()方法,使用版本控制。
  • 进度条
  • Run
  • 优化过的客户端/服务端

注意:要了解更多RunBaseframwork,参考http://go.microsoft.com/fwlink/?LinkId=238164

2.4业务操作框架

业务操作框架(BOF),遵守WCF的协议和标准。使用BOF,你可以做:

启用菜单驱动的执行,或服务的批处理执行。

以同步或异步的模式调用服务

基于数据契约自动创建一个客制化的用户界面

囊括代码,在适当的层上操作。在客户端层输入,业务逻辑在服务端层。

要了解更多关于BOF的信息,参考本章的"Business Operation Framework"

2.5前后一致检查框架

前后一致检查框架,用于验证数据在生产数据库中的前后一致,帮助修复它找到的不一致。

前后一致框架的类,以ConsistencyCheck结尾,例如InventConsistencyCheck。每个框架类都扩展自SysConsistencyCheck类。

2.7维度

你可以使用Dimension子系统,为财务维度工作。使用InventDim子系统,为库存维度工作。

要了解更多关于财务维度子系统,参照Application Foundation Features章节的Dimensions。

2.8文档管理系统

在AX中,文档管理系统自动随处可用。文本笔记,任何类型、格式的文档,能被附加到AX中的任何记录上。

笔记字段应该不能放在你自己的表上,而是使用文档管理系统的文本笔记。

注意:如果文档附加到一个记录上,存储在一个共享文件,而不是AX数据库中,你必须确保设置了合适的访问等级。

2.9Infolog

给用户的信息和消息,在Infolog中。它也包含上下文信息,提供Help和action。要了解更多,查看

http://go.microsoft.com/fwlink/?LinkId=238165

2.10数字序列

AX有一个数字序列框架来生成字母数字的数字序列,用于标识销售订单这样的交易文档。

2.11操作进度

使用Operation Progress framework,来显示该进程要花费多少时间。

基本实践:使用一个进度显示器,为花费超过两分钟的操作提供标识。

使用沙漏鼠标指针,如果进程要花费2到7分钟。

使用进度条,如果进程花费8分钟或更多。

注意:要了解更多信息,How to: Create Progress Indicators (http://go.microsoft.com/fwlink/?LinkId=238166

2.12报表

SSRS是AX主要的报表平台。默认地,AX提供开箱即用的报表,运行在报表服务平台。新报表开发环境,又花了扩展自SQL Server
tools和组件。报表开发环境完全集成进了VS。

2.13应用集成

AX与与其他企业内部和外部系统集成的能力,是一个公共的需求。应用集成框架AIF,提供通过XML格式交换数据的能力。格式化的XML,作为文档的引用,并且每个文档包含数据和业务逻辑。文档给予一个文档类,使用AX定义。

AX提供许多标准的文档服务,支持公共的业务草错。通过使用AIF提供的能力,你也能客制化现有文档服务,或穿件自己的文档服务。

注意:要了解更多AIF,BOF,查看Application Integration Framework and Services课程。

3.时间处理器的客制化

该主题描述事件的概念,并介绍在AX中如何使用它们。

AX很少不用修改地使用,因为客户有他们自己的一套需求,来实现产品。正因为这样,伙伴要客制化产品。伙伴也投资重要的时间,来浏览并理解微软提供的源代码。当需要客制化时,伙伴修改客户层的代码,运行时引擎担保客制化发生。然而,存在一个问题是,当新版本发布,或微软底层代码改变,客制化会被破坏,对伙伴来说,为下个版本升级客制化代码,会很昂贵。附加地,当一个客户使用多个独立软件供应商ISV或伙伴,他们可能会修改同一个对象。当覆盖对象时,会导致相同的问题。

通过使用事件,可以减少创建和升级客制化的花费。开发者创建客制化代码,其他用户在该处创建事件。然后,这些开发者在其他可以被事件订阅的层,客制化原始功能。当客制化功能紧密地与事件结合,底层应用代码能为溶血,并且他会在客制化上产生一些效果,因为相同的事件在不同的版本中,以相同的顺序调用。

3.1天然的事件

例如,类代表了现实生活中的一些事情,它的名字是会计,人,客户。方法用于改变对象,它的名字指什么操作在对象上执行,如deposit,hire,invoice.

一个事件,代表了对象里要发生的事情。事件的名字典型是过去式,如deposited,hired,invoiced。事件会总是发生。

你可以使用时间,来为下面的编程范式提供支持:

Observation:观察者模式,事件可以用于查看预期的行为,当行为发生时,生成警报。该事件类型的例子是,regulation compliance
systems.例如,如果多个指定金额的货币从一个账户传输到另一个账户,系统出发一个工作流,来询问是否接受介意。

Information
dissemination:信息传播,事件分发相应的信息给合适的调用者,在大多数情况下。信息传播通过发布一个事件给任何想要对此作出反应的人。

Decoupling:解耦,事件可以被一个应用的完整的不同部分。他不需要为生产者知道消费,也不需要消费者知道生产者的细节。以恶生产者的时间,可以被多个消费者扮演,另外,消费者可以扮演多个生产者的事件。

提示:X++和C#的时间设计模式的实现不同。要了解更多信息,"X++ and C# Comparison: Event

(http://go.microsoft.com/fwlink/?LinkId=238167)"。

3.2术语

AX2012中的X++事件,是仿照.NET事件概念。下表列出了AX2012相关的事件术语:




















术语Term 定义Definition
Producer 生产者,是包含导致一个变化的代码的逻辑。他是发出事件的一个实体。
Consumer 消费者,是当一个特定事件发生时,代表提醒的应用代码。他是接收事件的一个实体。
Event 事件,代表了在生产者发生的变化。
Event payload 事件装载货物,是事件里携带的信息。例如,当一个人被解雇了,装载货物可能包含雇员的名字和生日。
Delegate 一个代理,是,当事件发生时,信息从生产者传递到消费者的一个定义。

3.3代码事件

在X++,你能添加代理作为一个类的成员。定义代理的语法,与定义一个方法的语法相同,除了下面的:

  • 要使用delegate关键字

  • 没有public或任何其他

  • 返回类型必须是void

  • body必须是空的,意味着,它不能包含declarations or satements。

例如,一个人被解雇时的事件代理,可以被表达成如下:

delegate void hired(str name, UtcDateTime startingDate)
{
}

提示:你可以在class上右键,选择New>Delegate,来创建一个新代理,或你可以从代码编辑器上选择New,并填入代码。

下面显示了一个类,叫做HireWorkerEventSample,他包含了一个代理,叫做hired,它接受一个string和一个date。

提示,闪电图标表明了他是一个代理,不是一个X++方法。

当应用代码不得不发信号,一个新人杯解雇,他用代理作为一个方法调用,提供事件装在负荷作为参数,如下面例子显示:


{
while select * from Employees where
Employees.hiredDate == today
{
this.hired(employees.Name,
employees.FirstWorkingDay);
}
}

注意:代码示例,只是一个例子。代码在AX中不能编译,因为没有Employee表。

参数,可以是任何X++接受的类型。它用于传递一个对象的实例,能让处理者修改该对象的状态,所以发布者能从订阅者请求值。事件处理者在调用者事务上下文里运行。订阅者可以被添加给事件,以两种方法中的一种——通过AOT或X++代码。

3.4自动事件

自动事件被环境触发,作为什么事情的执行结果。现在,开发者可以在方法被调用时,指示一个一个事件被触发。描述见下面。

Pre和Postsh是方法被调用时的预定义事件。pre-event处理器在方法执行前调用,post-evet
hndlers在方法结束后被调用。

时间: 2024-11-05 21:54:37

4.2 框架特性的相关文章

vuejs开发笔记—IDE选择和WebStorm性能优化、框架特性和数据调用、路由的配置以及原理

一.IDE的选择: VsCode和WebStorm都是不错的选择,两者运行调试都非常的方便都可以使用快捷键运行和停止,就打开项目的速度和对电脑配置的要求来说,vscode要比webstorm要出色很多,如果电脑配置足够好的情况下请忽略前面说的性能问题,具体的使用要看个人的需求和爱好了. 1.先说VsCode的配置: 首先是要装VsCode的扩展插件,点击左上角最后一个图标,在搜索里面输入JavaScript (ES6) snippets/NPM/Vue 2 Snippets: 第二步调试配置:V

iPhone 6和iPhone 6 plus的AV Foundation框架特性

转载自 http://www.cocoachina.com/ios/20150202/11088.html 本文由CocoaChina翻译组成员YueWang(博客地址)翻译自苹果Technical Note之 New AV Foundation Camera Features for the iPhone 6 and iPhone 6 PlusAV Foundation框架介绍了一系列用于支持iPhone6 和iPhone6 plus 相机新功能的API.新特性包括Focus Pixels.光

Struts 2 框架特性

POJO形式和POJO动作 - 已经摆脱了Struts2的动作表单的Struts框架的一个组成部分.Struts2可以使用任何的POJO接收的形式输入.同样的,你现在可以看到任何POJO的Action类. Tag支持 - Struts2的形式提高了标签的新标签让开发人员写更少的代码. AJAX支持- Struts2中已经认识到了Web2.0技术,并整合到产品中AJAX支持创建AJAX的标签,该功能非常相似的标准Struts2的标签. 容易整合 - 与其他框架如Spring,Tiles和SiteM

python爬虫框架 — Scrappy

Python爬虫框架有很多种,可是我们经常谈论使用的却屈指可数,今天就给大家谈谈Python爬虫框架--Scrapy是一个快速.高层次.轻量级的屏幕抓取和web抓取python爬虫框架,主要用于抓取特定web站点的信息并从页面中提取结构化的数据. 由于Scrapy的框架特性,也支持开发者根据自己的需求对框架进行修改,方便开发者开发出更适合的python爬虫.除此之外,Scrapy还提供了多 种类型的爬虫基类,包括BaseSpider.sitemap爬虫等等,最新版本同时也提供了web2.0爬虫的

各类主流框架及设计模式简介

1,使用框架技术的优势:1)不用考虑公共问题,框架已经为我们做好了2)可以专心在业务逻辑上,保证核心业务逻辑的开发质量3)结构统一,便于学习,维护4)最重要的一点:框架中集成了前人的经验,可以帮助新手写出稳健.性能优良而且结构优美的高质量程序:2,什么是框架:框架(Framework)是一个提供了可重用的公共结构的半成品.一方面提供了可以拿来就用的工具,也提供了可重用的设计:框架使混乱的东西变得结构化:框架是一组协同工作的组件:3,java中的主流框架:1)Struts框架:是MVC设计模式的体

Java日志系统框架的设计与实现

推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程序状态记录.数据恢复等功能有重要作用 日志系统一般作为服务进程或者系统调用存在,我们一般程序中使用系统调用 常用日志系统包括log4j的简单介绍 日志系统的系统架构 日志系统的信息分级 日志输出的设计 下面是全文的引用: 在Java领域,存在大量的日志组件,open-open收录了21个日志组件.日

rapid-framework脚手架快速搭建springMVC框架项目

rapid-framework介绍:   一个类似ruby on rails的java web快速开发脚手架,本着不重复发明轮子的原则,框架只是将零散的struts(struts2)+spring+hibernate各个组件组装好在一起,并对struts及struts2进行改造,提供零配置编程,并内置一个强大的代码生成器及模板文件,可以生成java的hibernat model,dao,manager,struts+struts2 action类,可以生成jsp的增删改查及列表页面.  整个项目

12种JavaScript MVC框架之比较

Gordon L. Hempton是西雅图的一位黑客和设计师,他花费了几个月的时间研究和比较了12种流行的JavaScript MVC框架,并在博客中总结了每种框架的优缺点,最终的结果是,Ember.js胜出. 此次比较针对的特性标准有四种,分别是: UI绑定(UI Bindings) 复合视图(Composed Views) Web表现层(Web Presentation Layer) 与其他框架良好协作(Plays Nicely with Others) 对于各种JavaScript MVC

开发应用时,如果选择框架

这些代码很恶心,尽管有些程序员特别好这一口,但怎么说,这种代码自然是越少越好.真正能产生商业价值的是那些处理业务逻辑的代码.当然,很明显你也不可 能只写业务代码对吧.还有一类代码是用来运行这些业务代码的,当然了,基础架构和业务的代码的边界并不是那么清晰.你很难跟别人说这些是业务代码,那些是 基础设施的代码. 你能做的就是选择一个适合业务场景的框架.那些比较容易配置,不需要大量模板代码,容易学习的框架.这样的话你可以更聚焦于业务代码.当然了,知易 行难.现在项目还有这么多的不确定性,你怎么才知道长