2016-01-14 16:23 588人阅读 评论(0) 收藏 举报
 分类:
hybris(8) 
脱离java Model单纯的去看impex文件的代码是不能很好理解impex的:
今天看了一下Impex的语法,清晰了许多:
impex语法在我理解有几个需要注意的地方:
1)Impex是基于java Model的一种面向对象的数据操作手段,因此写impex代码前需要理清java Model之间的依赖关系,

2)头模式:

头模式决定这段impex代码做什么样的操作,头模式有四种:INSERT,UPDATE,INSERT_UPDATE,REMOVE
根据字面意思我们可以知道每种模式做什么样的操作,不赘述。
impex 文件的理解:
3)impex代码的结构:
Header Model typeCode;Attributes
UPDATE Type;Attribute1;Attribute2;
value1;value2;

假设有以下的JavaModel的依赖关系关系

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class

Person{
    String
id;
    String
name;
}
 
class

House{
    String
id
    Person
owner;
    String
address;
}
 
class

Company{
    String
id
    String
name;
    List
employee;
}

如何使用impex创建Person,House,Company

1
2
3
4
5
6
7
8
9
INSERT_UPDATE
Person;id[unique=true];name[lang=en]
;p00001;Test
Name1
;p00002;Test
Name2
 
INSERT_UPDATE
House;id[unique=true];owner(id[unique=true],name);address
;H00001;p00001:Test
Name1;Test Address
 
INSERT_UPDATE
Campany;id[unique=true];name;employee(id[unique=true],name)
;c0001;Test
Company;p00001:Test Name1,p00002:Test Name2

从wiki资料上来看,前面三个操作的顺序是可以改变的,hybris处理impex的文件机制是
当前操作的impex依赖的对象尚未创建时,hybris 会把当前这条impex语句保存到一个临时文件,
当impex的语句被执行完以后,再处理临时文件中的impex语句。

在对照页面模板的impex文件时,发现TypeCode,Attribute在hybris并没有相应的Java文件和属性对应,而是impex文件里对应的TypeCode在Hybris系统里对应一个编译后生成的Model文件,Hybris在生成的java文件通过一些属性和方法使impex文件TypeCode,Attributes与Mode文件里的属性对应。
e.g:

1
2
3
4
5
INSERT_UPDATE
PageTemplate;catalogVersion(catalog(id[default=hybrisContentCatalog]),version[default=Online])[unique=true];uid[unique=true];name;frontendTemplateName;restrictedPageTypes(code);active[default=true]
PageTemplate对应一个编译后生成的PageTemplateModel
PageTemplateModel.java里有如下代码
public
final static String _TYPECODE = "PageTemplate";
public
static final String CATALOGVERSION = "catalogVersion";

 

impex 语法的更多相关文章

  1. IMPEX

    1.Impex是基于java Model的一种面向对象的数据操作手段,因此写impex代码前需要理清java Model之间的依赖关系. 2.基本语法:mode type[modifier=value ...

  2. Hybris IMPEX.

    1.Impex是基于java Model的一种面向对象的数据操作手段,因此写impex代码前需要理清java Model之间的依赖关系.   2.基本语法:mode type[modifier=val ...

  3. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  4. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  5. 探索C#之6.0语法糖剖析

    阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...

  6. [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性

    回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...

  7. Velocity初探小结--velocity使用语法详解

    做java开发的朋友一般对JSP是比较熟悉的,大部分人第一次学习开发View层都是使用JSP来进行页面渲染的,我们都知道JSP是可以嵌入java代码的,在远古时代,java程序员甚至在一个jsp页面上 ...

  8. node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法

    1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...

  9. C#语法糖大汇总

    首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...

随机推荐

  1. 安卓开发常用网络请求框架OkHttp、Volley、XUtils、Retrofit对比

    网络请求框架总结1.xutils     此框架庞大而周全,这个框架可以网络请求,同时可以图片加载,又可以数据存储,又可以 View 注解,使用这种框架很方便,这样会使得你整个项目对它依赖性太强,万一 ...

  2. 微信小程序打卡第五天

    2018-02-1823:55:53大年初三 微信小程序已经学了5个夜晚了,没有很努力,只是简单地接触,感觉从今天开始有了突破的进展,很爽! 无意间发现一个很好的教程,也是一个老哥分享的,很给力 ht ...

  3. 联想 Z5S(L78071)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 10.5.370

    >>>重点介绍<<< 第一:本刷机包可卡刷可线刷,刷机包比较大的原因是采用同时兼容卡刷和线刷的格式,所以比较大第二:[卡刷方法]卡刷不要解压刷机包,直接传入手机后用 ...

  4. Android学习笔记(四) JAVA基础知识回顾

    一.接口 1)接口中定义的方法都是public权限,并且默认为public,而不是default. 2)接口的实现(implements)是特殊的继承,类似于父类子类的关系,可以向上转型(非常重要). ...

  5. OC语言Block

    OC语言Block 一.Block (一)简介  Block是什么?苹果推荐的比较特殊的数据类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. Block和 ...

  6. U盘安装完美的WIN7操作系统教程

    准备工作 首先备份或者在官网下载好您机器的驱动,否则完成后可能无法正常使用 ①一个有win7或者XP系统的电脑(制作启动盘用) ②一个4G以上的U盘 ③win7&win8系统包(请到官网下载或 ...

  7. HDU_2112_最短路

    题目链接:http://acm.hdu.edu.cn/status.php?user=l1526789512&pid=2112&status=5 HDU Today Time Limi ...

  8. iOS中NSAttributedString的使用--对关键字着色,以及处理html实例

    1,最近项目中用到了一个功能,一个很好的功能.就是用户在搜索的时候,搜索结果出来后对你输入的关键字进行红色标记.这样用户就很请楚的看到自己输入什么后会出现什么样子的结果.还有一个功能是,现在有一段文字 ...

  9. 配置servlet出现java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

    拷贝一份sqljdbc.jar放到/WEB-INF/lib即可

  10. Python学习:ModuleNotFoundError: No module named 'pygal.i18n' 的解决方法

    最近在学<Python编程:从入门到实践>,16.2小结中 from pygal.i18n import COUNTRIES 获取两个字母的国别码,我用的pygal的版本是2.4.0(终端 ...