Tuesday

Day 1

Microsoft Dynamics AX 发展历程

2005年,Microsoft Axapta 3.0(SP3) 发布(微软收购后开始的
2016年,Microsoft Dynamics 365 For Finance and Operations(7.0)发布

D365之前都是C/S架构,D365是B/S架构
类似于WEB的托管应用,可以与微软的其他产品做集成
市场占有率在不断上升

应用生命周期管理服务(LCS)了解即可

项目经理: 分布式工作区,方法论自动化(sure step),敏捷项目管理,方法论流程自动化

业务分析顾问: 业务流程建模(BPM),任务录制器,许可证规模评估器,应用模板,硬件评估

技术开发顾问: 业务流程建模(BPM),基于云的开发环境(Azure deployment portal),配置管理器,快速部署,客户化分析,升级分析

IT系统管理员: 系统诊断,问题检索,基于云的支持,升级

技术特性及架构

B/S
和现在的很多东西都可以集成
大概的架构:应用程序模块,Application Fundation,Application Platform;层,model
根据不同的业务场景,分成不同的model
开发都集中在自己的电脑上,不用太注意生命周期服务设置
生命周期服务(项目管理的时候用的比较多)

开发虚拟机

本地虚拟机,或者客户提供的远程机
hyper-v创建虚拟机
Administrator pass@word1(provisioning the administrator user)
虚拟机会占用很多本地资源,会降低开发效率
IIS查询Fo网页(AOSS service)

500常见错误:虚拟机时间错误,网络无法连接到Internet
解决办法:修改电脑名,重启;修改SSRS的关联数据库(一般不需要改)
TFAC

部署流程比较重要的就是生命周期服务和dbus
可以通过下载本地开发机(有共享和微软会实时更新)

代码管理服务:Fundation service control(TFVC) 和 git

Excel集成

模块
与微软其他产品有集成
导出到EXCEL,在EXCEL中打开(实体extending(template),作为数据导入导出的工具)

Visual Studio & Team Service(代码管理)

code都在AOT里面

Visual Studio Tool

Application Explorer

· Classic view
· Module view

Project的属性(property)

Startup Object type: 项目运行时启动的对象类型,可以选择(Form,Class,Output menu item)
Startup Object: 项目运行时启动的对象
Company:项目运行时的默认公司
Model: 项目所属的Model,项目下的所有对象都必须属于同一个model
Layer: 只读属性,显示当前Project/Model所属的Layer
Synchronize database on build: 参数,用于指定对当前project进行build操作时,是否同步数据库结构

Element设计器

给其他表作关联
添加字段
添加方法和索引
可以通过拖拽的方式添加控件

code编辑器
X++ 语言

Visual Studio Team Service

mapping地址:AOSSService\PackageLocalDirectory\Metadata

如果项目显示已经被其他的人给Mapping上了,修改机器名

Package/Model/Layer

Package: 包含一个或多个model,部署和编译的基本单元,Package之间可以建立依赖关系

Model: 一组对象的集合,包含源代码文件及元数据,用于构建一个完整的解决方案/模块,如仓库管理、项目会计,一个Model总是属于一个Package(代码库或代码包)

Layer: 一个model必须属于一个Layer(Layer一般是cus),是老版本AX中的核心概念,是Overlayering概念

Layer层架构

第三方解决方案或客户化开发保存在和原始应用程序不同的Layer中
不同的Layer提供给不同的类型的开发人员(如: 微软、解决方案提供商、实施合作伙伴、客户IT)
基于单个对象元素进行Layer存储
通过工具和少量的工作可以对不同的Layer上的代码冲突进行识别和处理

分层可以避免代码冲突,老版本用的比较多

新建model时可以指定Package

创建新Package:一般用于进行Extension类型的开发
选择现有的Package:一般是对所选的Package中的其他model进行的Overlayering开发

Extension/Overlayering(model)

Overlayering: 在一个已存在的package中创建一个用于覆写已有代码或对象的model
可进行高级客户化开发的强有力的工具
原始功能提供方(例如微软)对侵入式的客户化开发无法提供“未来可用”的保障
需要更多的代码升级时间,编译时间;限制了新版本的持续升级。升级和补丁更新的成本很高

可以修改标准model中的一些东西(微软是很反对的标准的东西被更改和被覆盖)

Extension: 创建一个新的package,引用已存在的package
添加新的扩展对象或者插件式代码
通过消除代码和对象冲突减少升级到新版本的成本
简化并提高编译、自动化测试、部署和客户交付的性能

AOT里面有很多节点
标准的表是不能直接做更改的

Extension - 开发对象

Extension Model中是可以创建新对象的

Extension - 代码

Event Handler:一个事件可以注册多个Event Handler(不推荐使用,它是以方法为主导,不是以class为主导,不同的人写在不同的地方会导致冲突,代码的可控性不高)
事件以广播的形式通知Event Handler。同一个事件的多个Event Handler执行没有固定顺序
Delegate(委托):在核心逻辑上做出一些操作(比如在发票过账时增加一些功能)

代码增强:不同于Extends的概念,在Model B中扩展Model A中的Class
一个model中可以有n个针对同一Class的Extension
可以有Private、Public方法/变量声明
由于使用了final关键字,不可以有Protected方法
Wrapper Method - 允许Extension类扩展现有的方法
next 关键字 - 必须在Wrapper Method中使用
随机 执行Extension类

做一些自己的开发,修改new或者一些逻辑(new的时myclass,而不是myclass_extension)

继承的话有super,代码增强的话有next(必须调用)

插件:plug-in

Build

两种途径: Build a Project和Build Models(Package)
build model,更新好本地代码后,要同步数据库

Build 过程中的动作:
校验 Metadata
校验X++代码
Best practice 检查(BP:代码规范)
生成报表RDL
编译,生成IL,创建.NETassemblies
创建Label assembly和其他资源文件部署
同步数据库

Build a Project

Build:只根据有改动的对象进行编译
Rebuild:对Project中所有对象进行编译,不论是否有更新,如果有删除对象,一定要做Rebuild或者Build Models
Synchronize database:建议打开Build时同步数据库的选项,确保数据库及时反映开发上的改动

Build Result:

Output:BP Error(严重禁止,几乎不允许)
Error List:编译报错,代码有问题之类的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值