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. python自动化--语言基础五面向对象、迭代器、range和切片的区分

    面向对象 一.面向对象简单介绍: class Test(): #类的定义 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 def __ini ...

  2. Spartan6系列之Spartan6系列之芯片时钟资源深入详解

    1.   时钟资源概述 时钟设施提供了一系列的低电容.低抖动的互联线,这些互联线非常适合于传输高频信号.最大量减小时钟抖动.这些连线资源可以和DCM.PLL等实现连接. 每一种Spartan-6芯片提 ...

  3. Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean

    WebsocketSourceConfiguration { @Bean ServletWebServerFactory servletWebServerFactory(){ return new T ...

  4. CAD多个点构造选择集(网页版)

    主要用到函数说明: IMxDrawSelectionSet::SelectByPolygon 在多个点组合的闭合区域里,构造选择集.详细说明如下: 参数 说明 [in] IMxDrawPoints* ...

  5. ThinkPHP---拓展之jQuery的ajax

    [前言] 用Sublime开发时,推荐下载一个jQuery插件,可以智能化创建基本函数格式,支持自动生成,可以提高开发效率 (1)jQuery里ajax方法有几个? 答:有4个,分别为post.get ...

  6. css去掉div的滚动条

    懒得讲原理了,直接贴代码: css部分: .slide-box { margin-top: 200px; display: -webkit-box; overflow-x: scroll; overf ...

  7. ubuntu tomcat自启动

    1 编写启动文件/etc/init.d/tomcat7 文件内容如下:

  8. 有哪些可以节省chrome内存的扩展插件?

    不知道从什么时候开始,chrome浏览器就这样不知不觉的超过IE浏览器成为全球第一大浏览器.我们在赞赏chrome浏览器流畅的速度时,更多的是对其chrome插件功能的赞赏.但是我们也发现了一个致命的 ...

  9. 教你如何使用Python写游戏辅助脚本

    主要实现方式是通过图片的对比,在游戏中就行点击.运行程序需要以下东西. PIL: 图片处理模块     (python3 换成了 pillow)  下载地址: https://www.lfd.uci. ...

  10. 对于 前端请求Django 后端服务出现403 Forbidden (CSRF token missing or incorrect.) 问题的解析

    Django中使用ajax post向後臺傳送資料時403 Forbidden (CSRF token missing or incorrect.):的解決辦法 在Django中使用ajax post ...