元数据归类总结

解决方案

  • 解决方案是元数据的最大载体,对应于一个元数据集合。任一个元数据都必须归属于某个解决方案,譬如,EAS就是一个解决方案。

♢ ♢ 所有客户端加载的元数据都是加载 deployed_meta 文件夹下的元数据 这是文件夹发布以后自动生成的文件夹

  • 命名规则:不能是中文 而且只能是英文 而且是全小写
  • 如何建立:设计工具视图->右键新增包
  • 作用
    ☑ 提供了元数据的Namespace管理
    ☑ 提供了一种分类和查看的方式
    ☑ 类似于目录结构的一个树状模型
    ☑ 元数据必须属于且只属于一个包
    ☑ 包定义的名称必须与文件的命名一致
    ☑ 在定义期,包会映射到元数据存储的实际目录

实体介绍 Entity

  • 实体对象是元数据模型的核心内容,数据对象、查询对象、实体界面对象等其他对象均附属或依赖于它。

  • 实体对象是数据存储的一个逻辑视图,它对应于业务系统中的实体类。

  • 实体对象分类:
    •“常规”(Normal):是可永久存储的数据对象
    •“抽象”(Abstract):不定义与数据对象的映射,实体对象可以继承它

  • 自己新建实体的时候 要注意命名规范 首字母大写(否则不符合java开发规范)

  • 文件结构:分为8块 基础信息 属性 方法 事件 逻辑建 缺省视图 图形化编辑 源代码
    ① 基础信息

    ▶ 类实现信息:

○ 控制器bean是如何构建出来的?先创建实体 再配置是实体里的控制器bean 再发布...

♥ ♥ ♥ 不同情况 使用的控制器和请求方式不一样 分为以下两种情况:① 客户端请求服务端 通过RPC请求(远程服务的调用)  即用到远程控制器(控制器Remote)② 服务端调用服务端通过本地控制器(控制器Local)

不管是本地还是远程都是通过工厂类(实体名称+Factory)来实现的

♥ ♥ ♥ 如何在一个实体对象中调用另一个实体对象的方法?总的思路 : 首先通过工厂类拿到控制器 (工厂类->每个实体名称+Factory) 然后控制层在调用服务端代码  也就是利用了 反射机制 和 工厂方法模式 ① 客户端请求服务端 (远程服务控制器Remote)步骤 1、创建实体业务接口 步骤 2、调用具体实现类里的方法

//返回的是一个接口 (就是实体A的业务接口 (基础信息里看))
实体A名称Factory.getRemoteInstance().实体A的方法(传参)

  ② 服务端调用服务端(本地服务控制器Local)方法1、通过  this.方法名方法2、实现接口来调用

实体A名称Factory.getLocalInstance(ctx).实体A的方法(传参)


  ▶ 扩展属性:
* 重要的两个属性: 是否使用编码规则(默认true) 以及 BOTP业务对象转换♥ ♥ ♥
* BOTP主要的作用:支持用户在各种业务单据间定义转换关系,并自动/批量地帮助用户将源单据转换生成目标单据,从而大大地减少业务人员的相关工作量;♢ 主要功能,包括:1. 业务数据的自动生成:单据生成凭证,选单生成等2. 基于对象的数据交换:数据交换平台3. 关联关系建立与维护:自动建立并记录关联关系4. 反写及取消反写5. 关联数据的自动维护

假如规定实体要参与业务转换规则BOTP我们就要在扩展属性里面增加它 反之删除
假如规定实体不使用编码规则 (默认true),我就要修改值为false


* 如何修改 业务单元的所属的业务组织(主业务组织) ?♥ ♥ ♥方法1:业务建模视图->点开我们要修改的业务单元->右键点击界面->选单据信息->即可修改方法2:业务建模视图->右键我们要修改的业务单元目录选中查看关联元数据->点开具体的实体对象->修改扩展属性中的OrgType的值

② 属性

♥ ♥ ♥ 自有属性和关联属性最大的区别 ?
自有属性是基本数据类型 关联属性是引用数据类型 ?????不是很懂为啥

③ 方法▶ 整体介绍:
方法发布完可以在,就会在基础信息里的 业务接口 里面自动生成,但我们不能直接找到,因为实体对象继承了多个父类,然后那些名字啥啥都自己新建的是在业务接口对应的,但是这里本来自带的在业务接口里就不对应了...(忘了) 总之,去观察一下就知道了。
  • 添加一个方法 的命名规则 :首字母小写,另外设置好别名、访问级别(访问修饰符)。

    ▶ 详细信息:

业务功能需要事务保护就一定要设置required
Required 要求有事务: 如果已有事务,则在当前事务中进行;如果没有,就新建事务;
RequiredNew 要求有事务: 不管原来有没有事务,都新建事务,在新事务环境中执行。
Mandatory 要求有事务: 如果原来没有事务,即抛异常。
Supports 可支持事务: 如果原来有事务,就在当前事务中进行;如果没有,就不新建事务,即可在事务环境中进行。
NotSupports 无事务: 如果原来有事务,则先挂起事务,继续在无事务环境中执行; 如果原来没有事务, 则可继续执行。
Never 不支持事务: 如果原来有事务,则抛异常; 如果没有,则可继续执行。

④ 事件   配置工作流的时候需要使用  平时不太用的上⑤ 源代码源代码就是实体发布以后生成的xml文件

select newBosid(“bodType唯一标识”) from dual // 通过这个来找到我们指定的实体

实体关系 (以 .relation 结尾的文件)

  • 命名规则:R_源对象名称_目标对象名称_字段名称
  • 怎么通过实体关联属性找到他的目标对象?
    Ctrl+点击 SupplierEntity 文本框部分 可实现跳转

数据表

  • 可以称为数据对象,数据表可以对应于关系数据库中的数据表,是物理模型,相对的ER模型是逻辑模型。
    ◐ 数据表的2种建立方式:
    ✔ 手工新增…
    命名规则:CT_实体前三个英文字母_实体名称
    (实体名称过长就拼接实体的每个单词的首字母)

    ✔ 从数据库导入…
    首先必须准备好 导入需要的sql文件
    其次 按照下图操作:

查询(以 .query 结尾的文件)

  • 查询是实体的查询视图,可以在数据访问过程中只获取视图中指定属性的数据,并按照过滤、排序条件进行数据的过滤和排序
  • 查询的数据组织形式是二维模型的,可以分为:连接查询、联合查询

** 注意下图蓝字解析 另外蓝字解析是针对1个单头和1个分录来说的
假如有1个单头 2个分录(这两个分录没有关联) 我们的主键定义部分不能写3个id
写三个id是无法实现的 因为无论如何都会产生多余的笛卡尔积 统计条数都不对

【tips】* 主键设置错的话 前端页面可能会出现 还有数据却滚动不下去。
* 单头579条 单头+分录1995条
如果 主键只定义单头主键
那么 数据只有579条 两个都加才有1995条。

【现在我们双击 entries.id 添加别的字段 到计算式下方的框框中并设置计算式为#1 如图3 最后可以看到SQL代码如图4】

【接下来可以修改计算式 查看SQL效果 这里分别修改计算式为#0 or #1 效果如图5 修改计算式为#0 and #1 效果如图6 但是这样的sql语句都是错误的 只是为了效果查看才这样子写 计算式应该是定义 我们指定字段 显示的值是怎样的?因为写成#0+#1 不会有语法错误 只是没东西显示…】

  • 列表所有数据都是用query查的

  • 如何修改该页面 选项卡代码中sql代码?

    步骤:
    【修改连接符】
    切换至 文件结构-> 定义(下方选项卡)操作
    首先找到需要修改的子对象,双击会跳出窗口,选择连接类型进行修改。
    默认 inner join in 内连接
    父对象所有行 letf join in 左连接
    子对象所有行 right join in 右连接

    【修改查询Select后现实的字段】
    切换至 文件结构-> 字段(下方选项卡)进行操作即可


♣ 假如数据库有一条数据A 而列表上没有数据A 出错的地方大致有两个:
① 我们先把query文件我们需要的代码复制到金蝶EAS客户端中的查询分析进行查询
a、假如查得到数据没有报错 说明是 权限问题
b、假如查询不到 70-80%可能是 SQL语句中连接类型有错误

A left join in B
3条 a1 b1 | a1 b2 | a2 null
A right join in B
2条 a1 b1 | a1 b2


业务功能 Function

  • 是对Entity对象、UI对象的方法提供封装,供其他模块或二次开发使用(目前业务功能的主要使用对象为工作流)
  • 命名规则:首字母大写+Function结尾
  • 如何新建:设计工具视图->右键单击新增->选择业务功能
  • 文件结构:分为3块 基础信息 操作定义 源代码
① 基础信息: 定义名称和别名 ② 操作定义:是整个业务功能的核心♦ 操作列表:列举了每个操作,点击列表任意一项 右侧可以看到对应操作的详细信息。♦ 详细信息:这些操作的具体描述如:名称、别名等 ♦ 引用(配置哪个页面需要引用这个操作):用来设置操作的引用信息 包括UI及实体、事件的引用。引用包括实体引用和业务引用。♡ 提交操作和审核操独特的区别?  “ 提交需要引用界面对象 审核不需要引用界面对象 ”因为在editUI并没有提交按钮,所以只能通过绑定事件进行提交。但有审核按钮,所以不需要绑定。(大概好像是这样..)

PS: 整个业务功能是为我们的工作流服务的,工作流配置一般是由实施人员进行配置的

功能 Facade

  • 是一个public方法的集合类,是用以定义类似“凭证过账”操作的与实体无关的逻辑方法
  • 命名规则:首字母大写+Facade结尾
  • 如何新建:设计工具视图->右键单击新增->选择功能
  • 文件结构:分为3块 基础信息 方法 源代码
    ① 基础信息:和实体很像 也有一个类实现信息 但它少了一个对应的表对象和子对象类等 也就是没有实体这么多的文件结构 (需要关注业务接口和控制器bean)
    ② 方法:也是和实体一样可以创建方法 然后保存发布属性 (新建方法会被创建在业务接口里面 存在完以后我们就自己去实现它 ;新建方法会在控制器bean里面被重写),另外里面的事务属性和实体的是一样的,当业务功能需要事务保护就一定要设置required

☆ editui和listui投如何调用控制器bean里面的方法?
功能名Factory.getRemoteInstance().方法名

枚举 Enum

  • 枚举值的类型可以是:Integer、Long、Float、Double、String
  • 命名规则:首字母大写+Enum结尾 (只要源数据要生成.java文件都要首字母大写)
  • 如何新建:设计工具视图->右键单击新增->枚举 一定要创建在app和client的同级目录下面
  • 文件结构:分为2块 枚举定义 源代码
    ① 枚举定义:
  • 发布的类名:也就是发布完以后生成的.java文件 所在的地方

  • 值定义(一个枚举可以定义多少个值) 名称大写命名 值建议用数据

枚举对象一旦定义完以后枚举的值就不可以变了
因为它全局变量使用的是static final

♥ 比较某个枚举值是不是等于男?(两种方式)( 注意用equals还是== 尽量用equals)
方法1、通过 枚举 的值 也就是我们定义的Sting类型的全局变量比较 (值比较)
//自己创建枚举对象 TestEnum a 取到他的值来比较
//XXXEnum本类名 xx是Sting类型静态变量
XXXEnum.XX.equles(a.getValue())//XXXEnum对象

方法2、用final修饰的枚举值对象(枚举类创建的一个构造器)(引用比较) 固定值写在equals前面 变量写在equals后面

异常 Exception

  • 异常元数据提供异常信息的规范化和多语言显示
  • 自定义的异常类信息,包括异常号、错误信息等
  • 命名规则:首字母大写+Exception结尾

权限

  • 如何创建:左上方菜单选项卡 方案 点击权限管理
  • 文件名: .permission结尾
  • 常规的权限管理区创建权限项,可以选择绑定业务单元也可以不选择,我们有两种实现方式。

方法1:我们就可以点击 新建权限项 里创建
方法2:设计视图中bim.permission文件中添加

每一个权限的上级都要有一个包,用于更好管理好每个权限(和建立业务单元是一个道理)

自定义的权限项名字:别名一定要是中文 名称可以使英文

bim.permission是系统自带的 一个系统会有很多个permission 我们不要把所有权限都放到bim.permission 中 我们可以为每个部分创建一个单独的权限文件 (PS.权限管理->我们可以选择我们自己独立创建的权限文件/也可以不选(新建权限项默认在bim.permissio中)

日志

  • 日志文件是用来记录事务对数据库更新操作的文件
  • 如何创建:左上方菜单选项卡 方案 点击日志管理
  • 文件名: .log结尾
  • 日志管理中添加的日志项,想要添加到非默认的bim.log文件下的画
    话只能设计视图里面的窗口新建完以后一个新的log文件再一个个添加

多语言资源

  • 多语言资源的值定义,采用字典形式存储多远信息
  • 根据解决方案中定义的语言种类,在多语言资源中增加相应的语言信息定义
  • 文件名: .resources结尾
  • 系统支持英文、简体中文、繁体中文
    这里需要注意的是eas实体中属性的name如果勾选了多语言属性
    数据库中对应的字段里不是以FName存储了
    而是以 FName_l1 FName_l2 FName_l3 存储的 L1英文 L2简体中文 L3繁体中文

金蝶EAS BOS 元数据介绍相关推荐

  1. 金蝶EAS BOS开发常用的代码说明及常见问题

    2019独角兽企业重金招聘Python工程师标准>>> 概要 此工程是针对金蝶EAS BOS开发者提供代码参考,内容来源有网络,QQ群及个人收集等 主要功能 1.常见问题处理,对开发 ...

  2. 金蝶EAS BOS开发之扩展表应用

    我们在客户业务系统开发中,经常会遇到一些单据信息量很大(字段很多),由于关系数据库的表中一行最多只能存储8000个字符,这样经常会导致我们通过一个实体(通常是一个实体一张表)无法解决,需要再另外新建一 ...

  3. 金蝶EAS BOS 快捷键(待更新)

    [快捷键] BOS业务建模工具 左上方菜单栏搜索 可以搜索元数据 JAVA 视图下 快捷键 作用 ctrl+T 查看该接口的所有实现类 ctrl+shift+T 快速找到某个类 alt+/ 自动把方法 ...

  4. 金蝶EAS/BOS开发小知识二

    1:如何通过IObjectPK pk获取实体对象 IObjectPK是一个表示实体对象id的对象,在日常开发工作中,经常需要通过它来获取实体对象.以下是通过IObjectPK获取实体对象代码的模版: ...

  5. 金蝶EAS/BOS开发小知识三

    1:部署时提示版本不一致的解决办法 从服务器的目录:如: D:\Kingdee\eas\server\propertiesCopy文件eascomponents.xml 到部署机的目录: 如:E:\w ...

  6. 金蝶EAS BOS上如何打补丁

    主要分为2种方式,直接通过BOS管理平台,去安装补丁 另一种方式就是通过本地zip压缩包去打补丁,以我的安装目录包为例路径为:E:\kingdee\kingserver\eas\admin\patch ...

  7. 金蝶EAS/BOS开发小知识一

    1 .EAS F7 多选属性控制 prmtPortlet.setEnabledMultiSelection(true); 2 .EAS 菜单表记录 系统化菜单表:t_bas_sysmenuitem 客 ...

  8. 金蝶EAS BOS,WEB基本使用

    金蝶EAS_BOS开发帮助文档 前言:此文档是我在使用BOS开发时记录的一些可使用的方法及属性,以便自己以后不会使用时就不用去请教他人.也许可以拿给后来的同事使用. 前端 前台调用后台方法时使用的对象 ...

  9. 金蝶EAS BOS常用快捷键

    分类专栏: K3 版权 常用快捷键 BOS开发平台常用快捷键 ctrl+shift+R 在工作空间查找资源 ctrl+L 查找行号 ctrl+shift+D 调试时求值 ctrl+shift+T 查找 ...

最新文章

  1. php四位数加密,如何使用php实现一个对数字进行8位的加密解密函数
  2. Python 笔试集(2):你不知道的 Python 整数
  3. 1028 人口普查 (20 分)
  4. ACCESS中如何比较日期和时间,使用DateDiff函数
  5. 关于Linux系统中用户权限问题
  6. ios加载本地游戏html,使用WKWebView iOS加载本地HTML / Javascript
  7. Mybatis自定义SQL拦截器
  8. 国内外知名光端机品牌大全
  9. 每天一个Linux命令-ls
  10. Sublime Text快捷键去除空白行
  11. 吴恩达机器学习 —— 2.7 计算图
  12. 使用rust编译linux,在 Ubuntu 上为 CentOS 编译 Rust 程序,
  13. 拍摄人像最难的是哪个方面?
  14. 观察者模式 - dom事件 / 自定义事件 / Promise 我的理解
  15. saltstack学习-1:saltstack介绍、部署、常见问题处理
  16. StringUtil工具类:
  17. 转移到ios下载安卓_转移到ios下载-转移到ios app下载v2.10.0 安卓最新版-2265安卓网...
  18. 如何降低论文查重率?
  19. Tomcat控制台弱密码漏洞
  20. String 类的常用方法

热门文章

  1. Java编写简单五子棋游戏
  2. 总结c语言基础算法——冒泡排序法和选择排序法
  3. Java发送会议邮件 时区_【上海校区】基于JavaMail的日历(会议)邮件发送实现
  4. 监控摄像机电子快门应用现状及技术解析
  5. 杏树林入局互联网医院 手里有哪些“好牌”?
  6. LeetCode-问题2611-老鼠和奶酪
  7. 信息安全不得不说的事
  8. 数组查找、赋值、复制、反转及修改,三种常用排序算法
  9. android中的广播大全,android中的广播
  10. php遍历dom节点,详解PHP使用DOMDocument类遍历、增加、修改、删除XML节点操作