zoukankan      html  css  js  c++  java
  • impex 语法

     

    impex 语法

     分类:
    脱离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;

    假设有以下的Java Model的依赖关系关系

    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";

     

  • 相关阅读:
    Markdown高级使用之流程图
    Sentinel滑动窗口算法
    Markdown基础使用
    多线程学习(二)--整体简介
    MYSQL学习(三) --索引详解
    MYSQL学习(二) --MYSQL框架
    MYSQL 学习(一)--启蒙篇《MYSQL必知必会》
    数据结构学习(六) --排序
    数据结构学习(五)--查找
    数据结构学习(四)--图
  • 原文地址:https://www.cnblogs.com/developer-ios/p/6950630.html
Copyright © 2011-2022 走看看