




免费预览已结束,剩余123页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
microsoft ax 技术培训 主讲人:张朝斌,microsoft business solutions 北 京 艾 克 斯 特 软 件 技 术 有 限 公 司,主要内容,1、ax系统功能概述 2、ax开发平台介绍 3、x+ 集成开发环境 4、x+开发语言介绍 5、数据字典(data dictionary) 6、数据操作(fetch of data) 6、from(窗体) 7、report(报表) 8、menus(菜单),培训提纲,第一天 1.介绍microsoft ax 系统构架 1.1 系统构架(client,aos,database,application) 1.2系统主要技术 1.2.1 层的概念 1.2.2 label语言包功能 2.介绍aot开发平台 3.介绍ide开发平台 第二天 1. x+语言介绍 2. x+变量 3. x+运算符 4. x+控制语句,培训提纲,5. 常用处理程序 5.1 异常处理(try catch,exception) 5.2 对话框 (dialog,info,error) 6.面向对象编程(oop) 第三天 1. 面向对象编程 2. data dictionary 3. 数据操作 第四天 1. form 2. report 第五天 1.report 2.menus 3.总结与回顾;考核,第一部分:系统功能概述,概述,本章主要介绍ax与具体业务模块没有直接关系的功能, 这些功能在实施项目的过程中一般会由技术顾问负责教授给 客户。 这部分内容以演示为主,通过演示可以对ax的使用有个 大概的认识,知道哪些技术特性在ax中已经实现,不需要另 行开发。,内容,安全性 查询和排序记录 全局搜索 预警的使用 文档管理 数据的导入导出,安全性,ax中的安全分为功能级别和数据行级别。 功能级别主要控制某些用户组可以访问哪些功能或者哪些表的字段,比如限定某个用户组只能访问应收账款功能且只能访问其中的客户表中的某些字段,为了方便描述可以称其为列级权限。 数据行级别权限主要限定用户可以访问哪些行的数据,比如只能访问客户代码为4000的客户数据,可将其成为行级权限。,列级权限,安全层级 设定一个权限(demo),行级权限,可以设定用户对某些行级的权限 针对主表设定行级权限后,与其关联的从表并不会继承,要针对每个从表分别限定。 比如设定了某个用户组只能看到客户代码为4000的客户信息,但该用户组依然可以看到其他客户的销售订单。 demo,查询和排序记录,ax提供了方便的查询和排序记录的方式,可以方便地查询出某条或者某些满足条件的记录 demo,全局搜索,全局搜索可以很方便地在多个表中进行数据的搜索 路径:基础数据设置数据爬网 场景:销售人员想看到与某个客户相关的几个表中的记 录,但他不想逐个表搜索。 demo,预警的使用,当用户关心的某些事件发生时,ax可以通过设定预警收到通知 安装和配置预警的配置和使用.doc demo,文档管理,通过文档管理可以为ax中的每条记录添加一个文档说明。 场景:用户想为每个产品添加word文档以便说明产品 信息,或者为每个销售订单添加合同的文本方便 查找。 demo,数据的导入导出,在ax正式上线之前需要导入一些数据,其中一些主表的数据可以通过系统中提供的导入导出功能来实现。 这些主表一般包括客户表,供应商表,物料表和会计科目表。 也可以用导入导出功能一次性导出某些类型的数据。 demo,第二部分:开发平台介绍,内容,ax开发环境介绍 调试环境的配置,系统构架,三层体系结构 client, aosapplication file, db,优点: 降低客户端负载 使用较小的带宽,降低网络负担 支持更多的客户端,多aos负载平衡,系统分层技术(layers),应用对象共分为八层次(sys, gls, dis, lis, bus, var, cus and usr.) ; 每一层分别保存在名为ax.aod 的文件中; 例如:axsys.aod 文件保存的是sys层的对象, axdis.aod 保存 dis 层对象,依次类推. 扩展名.aod 是 application object data 的缩写; patch-layers(syp, glp, dip, lip, bup, vap, cup and usp.),终端用户,层描述,层描述,在aot中查看层 工具选项开发,层描述,ax的所有用户都可以自定义ax应用 标准应用不会被修改 当删除对象时只会删除当前层的对象 设定当前层,标签和语言( labels and languages),标签文件命名规则 microsoft ax 中标签文件命名: ax*en-us.ald ,ax*en-gb.ald *: sys, syp,gls,glp; customization(客户端) axsysen-gb.ktd 中文标识:zh-cn,标签和语言( labels and languages),标签文件向导 标签编辑窗体 为窗体分配标签 demo,aot开发平台与项目,包含所有对象 contains all kind of objects 对象属性 object properties 对象x+代码 include all source code 项目 projects 1. 项目是对象快捷方式的集合. 2. 有助于项目任务开发涉及对象管理. 3. 对象导入导出功能. 练习: 1. 熟悉ide环境 2. 建立自己的项目,aot 对象节点,data dictionary (数据字典)- 数据类型和数据表 macros (宏) - 不能独立运行,用于jobs, classes, forms等中 classes (类)- 包含变量和对变量操作方法 forms (窗体)- 用户操作输入界面 reports(报表)- 用户操作输出界面 queries (查询)- 定义数据表查询 web froms (网页窗口)-企业门户中显示或输入的页面 jobs (工作)- 可以独立执行的 x+ 程序代码,常用于测试小程序 menu, menu items(菜单与菜单选项) - 用户操作的菜单,项目,帮助系统,调试环境的配置,配置调试运行在服务器端运行的代码 配置sql跟踪 demo,第三部分:x+语言基础,内容,ide开发环境概述 x+概述 数据类型 控制语句 类,x+集成开发环境(ide),ide开发环境设置 路径:工具选项开发(页),x+集成开发环境(ide),对象设计( designing) 对象编辑( editing) 对象调试( debugging ) 对象编译( compiling ),ide辅助工具,交叉引用(cross-references) 应用层次树(application hierarchy tree) 调试器(debugger) 数据库跟踪器(database trace) 客户端/服务器 跟踪器(client/server trace) sql跟踪器(sql trace) sql 语句跟踪日志(sql statement trace log) 代码探查器(code profile) 表浏览 (table browser) 对象对比工具 (compare tool) 查询功能 (find function),开发辅助工具,开发工具启动路径:工具开发工具,aot右键加载项,开发辅助工具,运行修改交叉引用,这是使用应用层次结构树的前提,开发辅助工具,数据库跟踪,开发辅助工具,客户端/服务器跟踪,开发辅助工具,sql跟踪,开发辅助工具,代码事件探查器,开发辅助工具,调试器,开发辅助工具,比较,x+概述,简单 不需要大量的培训来适应当前的开发实践。x+的概念能够很快被掌握,让开发这在开始的时刻就可以非常地高产 。 面向对象 x+是面向对象的语言。 熟悉 尽管c+和java没有被morphx平台选择为开发语言,但在移除c和java不必要的复杂性的同时,x+尽可能地于c+和java类似,这样使得x+看上去很熟悉。由于morphx用来处理复杂的帐务和企业事务管理,所以x+也包含了大量的通用的sql命令做为语言的一部分。 健壮 x+被设计用来开发高可靠性的软件,它提供了广泛的编译时检查,还有地位次之的运 行时检查。内存管理管理模型相当简单:对象用new操作符创建,没有指针类型。 高效率 由于高效的内存管理,尽管语言是解释性的,交互界面的用户感觉响应很快。 解释和动态 因为x+是解释性语言,通常情况下,比起传统的笨拙的编译,连接,测试周期,它可以有更快的原型开发,测试和开发.,x+数据类型,基本类型 boolean integer(int 和int64) real date timeofday (0; 86400) string enum 其他类型 array 具有相同类型的组合 container 容器类型(可以保存动态数量的各种类型数据) table 系统中所有表可以定义为变量,可对表中字段操作(记录级类型) class 类中变量和方法的实例化 练习: 在job种查询表,定义变量,容器, 表变量应用,x+数据类型,定义格式 数据类型 变量定义名 = 默认值 举例: -基本数据类型 str 20 right mystr1 = “zhaoxiansheng”; /定义一个名为mystr1 长度为20且右对齐的字符串 mystr1 = zhangchaobin;/字符串重新赋值 int i; i = 3; int64 j ; j = 8383838383838; real r ; r = 3.02125; date d; d = 112007; boolean b; b = false; /true or false enumname enum; enum = enumname:value;/noyes举例,x+数据类型,复杂数据类型 举例: - 数组: int intarry20; str 10 txt20; str 20 txt; /动态数组 - 容器:容器数据类型可以包含boolean, integer, real, date, string, container, arrays, tables等数据类型,类实例除外; container c; c=1,ddhdh,false; c += 2.56,salestable; str t1,t2,t3; c=x,y,z; t1,t2,t3 = c; /通过这种方式给变量赋值 容器中的几个主要方法:,x+数据类型,condel() 删除容器中的相关项目 confind() 查询容器中相关项目 conins() 向容器中插入新项目 conlen() 返回容器中项目的数量 connull() 将容器置空; conpeek() 从容器中取出某一项目,并返回 conpoke() 替换容器中一个或多个项目的内容 扩展类型定义 扩展类型名 变量名称; 定义方式和基本类型相同; 表定义 表名称 变量名称 /不需要new(); 类类型定义 类名 变量名称 /通过new方法将变量实例化 练习:定义变量,运算符,x+主要控制语句,if and if else and if else if ternary operator(三元运算 ?:) switch loops - while - do-while - for - use of continue and break select - insert - update - delete 练习: 结合print, pause在job中实现以上语句,查看输出结果,异常( exceptions),什么是异常? 引起异常的原因: 用户操作错误(user error) 逻辑错误(logical error) 系统错误(system error) 异常的类型(types) info warning deadlock error internal break dderror,常用处理程序,try and catch 定义: (系统异常时用户交互处理) to prevent the system from locking when an exception occurs, you can use two commands that identify and collect the exceptions. you can tell the system to give the user a message helping him to correct the error, or you can tell the system to retry the operation. 语法: try catch (exception:error) ,try,try 和 catch 命令 使用retry命令 确认 retry 命令不会导致无限循环 需要限定循环的次数,catch列表处理流程,异常抛出,throwing exceptions 使用throw命令抛出明确的用户可知的异常 练习 tts and throwing exceptions 数据处理发生异常时,系统自动使用throw命令抛出异常,代替ttsabort命令; 练习 infolog and error catching 在程序运行过程中,可以功过infolog信息抛出到catchlist,tts介绍 - transaction tracking system,事务跟踪系统 transaction: logical unit of work ,all or nothing operations - this will prevent the situation that two users edit the same record at the same time. ttsbegin, ttscommit, ttsabort when ttsbegin, operation just saved in temporary table, then ttscommit all updated operation is done at once, or ttsabort interrupt the update operation. 事务完整性检测 forupdate checking tts level checking 事务处理常和trycatch 组合使用,用于数据更新处理; 练习:建立一个job,使用trycatch和tts处理数据;,dialog,dialog class dialog class 是一个特殊的类 被用于设置参数以及用户数据的获取 类似一个窗体,但有区别 methods new(); addfield(); addgroup(); value(); active() run() user pressed cancel - run() = false user pressed ok - run() = true info :向用户输入系统提示信息或警告信息 box :一种特殊的dialog,可以用于警告,选择等场合; error:用于发送一个错误信息; 练习: 在job中建立dialog的用法,增加custtable关联字段和一个整数 字段,面向对象编程(oop)介绍,面向对象设计 对象 (对象应是实际问题中有意义的个体或概念实体,它保存数据,有存储空间) 类 (类是现实世界某些对象的共同特征(属性和操作)的表示,对象是类的实例) -类的特点 1. 继承 (extends, super) 2. 封装 (包含类中变量与对象) 3. 重载 (overload(不支持),类描述,类是什么? 其定义: 数据 操作数据的方法 为自己行为负责的个体 一个类包含: 类声明(状态属性) 方法 练习 创建一个类,在其中定义变量和方法 思考:表(table)和类(class)有何不同?,类描述,new 构造函数,用来创建一个对象并初始化其成员变量。 finalize() 析构函数,用来销毁一个对象。系统不会自动调用,需要手动调用,会销毁对象。由于ax有垃圾回收机制,不建议手动调用这个方法。,类描述,table与类的区别,类描述,访问控制 可以用private,protected,public进行访问控制。 访问控制只能针对方法进行限定,默认访问级别为public。 类成员的访问级别protected,并不可修改,只有类及其子类的方法可 以访问。外部变量如果想访问其成员变量只能通过访问器来实现。,类描述,继承 - ax只支持单继承,不支持多继承,语法跟java类似,用extends表示继承自某个类。 - 用final关键字可以防止类被继承和类的方法被重载。 - 在子类中可以通过super()调用父类方法。,类描述,抽象类 不能被实例化 可以有抽象方法(没有方法体) 可以有普通方法(有实现) 不必含有抽象方法 只有抽象类可以含有抽象方法 继承自抽象类的子类必须实现所有抽象方法,类描述,接口 在语法上可以看做是纯虚类 在相互毫无关系的类之间找到相似点而不必在类之间建立关系 定义一个或多个类必须实现的方法列表 一个类可以实现多个接口,类描述,overloading和默认参数 x+不支持overloading 可以通过默认参数模拟其行为 一个方法可以用多个参数列表调用,public str initname(int _age = age str _name = name) ,object.initname(12, “hans”);,object.initname();,object.initname(12);,object.initname(,”hans”);,类描述,内联方法 方法体内的方法,对于只在某个方法中会用到的某段计算逻 辑,可以在该方法体内定义一个方法。 事件 x+中不支持内联类和委托,不能实现标准的事件模型 x+的事件依赖于标准方法的调用,void clicked() super(); element.moveaddresstocusttable(); ,类描述,对象方法和类方法 - 对象方法 从属于类,但必须通过实例调用 调用时在对象后面跟随“.”获得方法 举例: void testmethod();/定义一个对象方法 ref_name.testmethod(); /使用实例来调用该方法 - 类方法 从属于类,其不需要通过实例而可以直接调用 需要用static 关键字修饰 void testmethod();/定义一个对象方法 ref_name:testmethod(); /使用类名来调用该方法,类描述,方法的返回值 - void 关键字 表示没有返回值 - 一个方法需要返回值,在方法名前注明需要返回的类型即可 类型可以是ax认可的任何数据类型 - 一个方法不需要返回值,方法名前 使用void 举例: void method1()/无返回值 / statement int method1()/有返回值,需要返回一个整型数据 / statement return 6;/return 数据必须和返回值类型一致 ,类描述,方法的参数 一个方法在处理问题时,可能需要从外部获取一些信息作为依据,这些必要的信息是通过参数来传递的; 参数是一个方法的窗口 举例: void method2(int paramter = 5)/参数定义的数量没有限制 if( paramter = 9) 处理一种情况 else 处理另一种情况 调用:this.method2(9); 或者 this.method2();后者使用默认值,类描述,main方法 - main方法是ax用来直接调用类的入口函数; -定义方法: static void main(args _args) main函数定义有三个约定,其一必须使用static关键字进行修饰,其二,不能有返回值,其三必须定义一个args类型的参数; 方法的修饰语 (具体参看开发者指南) abstract,client,display,edit,final,public,protected,private ,server,static,方法,this 关键字 this 可以看作一个指针,是对当前类自身的的引用,就是一个指向自己的引用,通俗的说就是“我自己”; 在同一个类中,一个方法需要调用另一个方法就要使用this指针; 举例: class aclass void method1 /功能实现 void method2 this.method1(); ,类描述,runbase框架 通过继承重复使用处理逻辑 用相同的引擎执行代码 通用的对话框布局和功能 自动保存和获取用户输入 可以方便地实现批处理,类描述,runbase框架的主要方法 classdeclaration dialog getfromdialog pack unpack run description (static) main (static),类描述,args,类描述,args,第四部分:数据字典,data dictinary,data dictionary -tables(表) -maps(图) -views(视图) -extended data types(扩展类型) -base enums (枚举类型) -configration key(设置键) -security keys (安全键),extended data types(扩展类型),枚举类型: 某类数据可能取值的集合,如一周内星期可能取值的集合为: sun,mon,tue,wed,thu,fri,sat 该集合可定义为描述星期的枚举类型,该枚举类型共有七个元素,因而用枚举类型定义的枚举变量只能取集合中的某一元素值。由于枚举类型是导出数据类型,因此,必须先定义枚举类型,然后再用枚举类型定义枚举型变量 扩展类型基于基本数据类型和枚举类型而创建; 作用: - 对基本数据类型或枚举类型进行细分,便于开发过程中数据定义 以及表字段定义统一,例如字段名称的统一,字符类型长度统统一 - 用于forml 中字段lookup查询; - 用于为数据表之间或form调用时自动建立关联关系; 练习:在aot中建立枚举类型(红,绿和蓝)和扩展类型(枚举类型相应的扩展类型,几种基本类型的扩展类型;,建立扩展类型、枚举变量,在aot中创建,如图:,tables的组成,表是一种二维的数据存储结构,在ax中表作为一种aot对象存在,其可以看作一种特殊的类,和我们一般认识的数据库中的表有区别; 表的分类: - 系统表(ax平台运行所必需的表) - 基本表 (业务逻辑运行所必需的表) 表的组成 - 字段(fields) - 字段组(field groups) - 索引 (indexs) - 关系 (relatioins) - 删除关联(deleteaction) - 方法 (methods),字段(fields),表字段是表在物理结构中列的概念化体现,是表的重要组成部分 创建新字段,如下图: 注意:在创建对象时字段必须依赖某一扩展类型,label属性是字段的描述,如果为空,则系统会继承扩展类型的label值;,字段组(field groups),字段组是ax对数据库表字段的一种逻辑分类,即按照一定的标准将字段归类,某一类就形成一个组;字段分组会在ax其他一些对象中用到,如后面要讲到的form,这会给开发带来很多方便; 最佳实践:每一个字段最好附属于某一个组;组命名最好和系统命名保持一致,如:identification,administration,address,setup,dimension等,索引(indexes),ax中的索引和数据库中索引对应; 索引的类型: - 唯一索引(unique) - 普通索引(non-unique) 索引可以建立在一个字段上,也可以建立在一组字段上) 最佳实践:索引命名时使用后缀“idx”;,关系(relations),关系反映表与表、表与扩展类型之间的一种关联 建立关系的媒介字段 关系一般建立在子表上; 关系的类型 -标准(表之间建立的关联字段与字段) -固定字段(本表某字段取固定值,相当于固定条件) -固定相关字段(关联表字段取固定值,删除约束(deleteactions),用于控制和本表相关联表的相关数据 删除建立在relations的基础上 分类 - none 本表记录删除,关联表不受影响 - cascade 级联删除,删除本表记录时,也会删除掉关联表中相关数 据 - restricted 限制删除。关联表中有记录时,本表记录不得删除 - cascade 级联-限制删除 在删除本表记录后,如果关联表有相关记录,则系统会提示是否需要删除,如果选择“是”,则删除,否则不做级联删除;,表方法(methods),分类 - 覆盖方法 ax本身定义的方法,可重写,有特定的执行时机 - 普通方法 由用户定义的方法,完成与表相关的业务操作或功能 表的几个主要方法: - insert() - update() - delete() 几个必要的普通方法 - find() - initfrom() - exists(),建议建表步骤,新建一张表(create a new table) 创建相应的扩展类型(或者枚举类型) 为表添加字段(当扩展类型建立好后,可以通过拖拽的方式添加字段) 为扩展类型创建表的关联(如果某个扩展类型是关键字段) 建立表关联(如果必要) 创建索引(如果必要,至少要将关键字段建立索引) 练习:根据上面的步骤创建一对主从表,以一个字段关联;,图和视图,视图(views)是建立在表基础之上的一种数据结构,其没有物理存储,只是对表数据的一种映射,可以通过建立关系将多张表合并成一个试图; 图(maps)是建立在表基础上的一种数据结构,其建立在多个具有相似性的表之上,起到共享数据和共享方法的作用;,第五部分:数据操作,内容,查询(queries) select 语句 while select 语句 临时表(temporary tables),query的结构组成,创建query的两种方式,通过aot设置创建 使用系统类通过代码的方式建立 表现形式不一样,实质是一样的,只要通过界面能设置的,代码都能重现; 下面是数组型字段的书写方法:,查询效率,影响效率的几个因素 表 记录的数量 表是否存在索引 索引 索引中字段的数量 唯一性 选择列 重复值的数量 是否特殊值,如二进制图片等,具体功能介绍,query模型: prepare execute,具体功能介绍,query模型: 直接查询,select 查询方式,select reverse firstfast firstonly forupdate nofetch nolock forceliterals | forceplaceholders forcenestedloop forceselectorder * | from index hint group by order by desc where outer | exists | notexists join reverse * | from index group by order by desc where := | , := fieldname | () := sum | avg | minof | maxof | count 注意 :从效率上考虑,少用嵌套,多用连接(join),关键字说明,firstfast speeds up the fetch. this is a priority hint that means that the first row will appear quicker but the total return time for this option may be slower. a typical use of the option is for dialog updates. firstonly speeds up the fetch. this gets morphx to only fetch the first record. forupdate selects records exclusively for update. the operation to be performed on the records that are fetched is an update. depending on the underlying database, the records may be locked for other users. sum returns the sum of the fields from the rows given by the group by clause. can be used to sum all accounts, order lines etc. avg returns the average of the fields from the rows given by the group by clause. minof returns the minimum of the fields from the rows given by the group by clause. maxof returns the maximum of the fields from the rows given by the group by clause. count returns the number of fields from the rows given by the group by clause. order by instructs the database to sort the selected records by fields in the order by list group by instructs the database to group selected records by fields in the order by list asc an option on the order by or group by clause. the sorting is ascending. desc an option on the order by or group by clause. the sorting is descending index instructs the database to sort the selected records as defined by the index index hint gives the database a hint to use this index to sort the selected records as defined by the index. the database may choose to ignore the hint 练习:firstonly, sum, maxof, count 等对custtable or inventtable 查询数据,while select 查询方式,while select reverse firstfast firstonly forupdate nofetch nolock forceliterals | forceplaceholders forcenestedloop forceselectorder * | from index hint group by order by desc where outer | exists | notexists join reverse * | from index group by order by desc where := | , := fieldname | () := sum | avg | minof | maxof | count 练习:分别使用query和while select 查询一组数据;,直接查询( direct sql),前两种方式只能查询ax数据库中的数据,如果想访问除ax数据库外的数据,只能用direct sql来执行,第六部分:窗体(forms),窗体设计(forms),对象模型:,form中对象的引用,form中常用的十个方法,formrun.init() formrun.close() formdatasource.init() formdatasource.initvalue() formda
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 东营分局考试题及答案
- 电子式考试题及答案
- 电梯安装考试题及答案
- 阅读之路上的风景11篇
- 等车侦探考试题及答案
- (正式版)DB15∕T 3273-2023 《紫苏种子生产技术规程》
- (正式版)DB15∕T 3253.8-2023 《食品生产加工小作坊生产规范 第8部分:酱腌菜制品》
- 成语的溯源及其在现代汉语中的应用教案
- 销售合同管理标准化模板及条款
- 企业采购审批流程与合规管理模板
- 法律援助法普法活动方案
- 食管恶性肿瘤护理查房
- 发热病人的护理课件
- 智能装备产业行动计划
- 新生儿湿疹护理与防治要点
- 高效农贸市场管理与运营合作协议
- 诸暨市家政服务员(母婴护理员)职业技能大赛技术文件
- CJ/T 81-2015机械搅拌澄清池搅拌机
- T/SHPTA 082-2024光伏组件封装用共挤EPE胶膜
- 企业合规经营及纳税证明书(5篇)
- 深圳入户委托协议书
评论
0/150
提交评论