`

ofbiz一个组件的各个文件介绍

 
阅读更多

 

<?xml version="1.0" encoding="UTF-8"?>
<forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://ofbiz.apache.org/Widget-Form"
       xsi:schemaLocation="http://ofbiz.apache.org/Widget-Form 
       http://ofbiz.apache.org/dtds/widget-form.xsd">
    <!--定义一个表单,属性有这个表单的类型,请求地址,默认实体名 默认的map集合名-->
    <form name="" type="" target="" default-entity-name="" 
          default-map-name="" default-table-style="">
        <!--表单内的输入框等,一个field对应一个-->
        <field name="" title="">
            <!--输入框的类型,input.text hyperlink,drop-down等-->
            <text/>
        </field>
        <field name="" title="">
            <check all-checked=""/>
        </field>
    </form>

</forms>
 新建一个组件,使用gradle 命令

 

 

gradlew createPlugin -PpluginId=sword -PpluginResourceName=Sword 
-PwebappName=sword -PbasePermission=SWORD

 这个命令的详细介绍,可以阅读ofbiz项目中的README.md文件中的了解。

 

创建之后目录如下:


使用命令创建的组件默认是在specialpurpose下,这个目录与hot-deploy目录都是存放组件的目录,

两者的区别就在于specialpurpose目录有图中component-load.xml文件,如图:

 如果我们将创建的组件移动到hot-deploy目录下则不需要添加该文件就可以加载组件

 

进入模块后,ofbiz-component.xml文件,该文件中定义了项目启动时,加载该组件时,需要加载的文件。

 

<?xml version="1.0" encoding="UTF-8"?>
<ofbiz-component name="sword"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd">

    <!--定义资源加载器-->
    <!-- define resource loaders; most common is to use the component resource loader -->
    <resource-loader name="main" type="component"/>

    <!-- 加载config和dtd目录的配置文件-->
    <!-- place the config directory on the classpath to access configuration files -->
    <classpath type="dir" location="config"/>
    <classpath type="dir" location="dtd"/>

    <!-- 加载jar包,在build目录中的lib文件夹中的jar包,在lib目录中的jar包 -->
    <!-- load single or multiple external libraries -->
    <classpath type="jar" location="build/lib/*"/>
    <classpath type="jar" location="lib/*"/>

    <!--加载该组件中定义的实体文件-->
<entity-resource type="model" reader-name="main"
 loader="main" location="entitydef/entitymodel.xml"/>
<!-- <entity-resource type="eca" reader-name="main"
 loader="main" location="entitydef/eecas.xml"/> -->
     <!-- 加载数据文件 -->
<entity-resource type="data" 
reader-name="seed" loader="main" location="data/SwordTypeData.xml"/>
                                                     
<entity-resource type="data" reader-name="seed"
 loader="main" location="data/SwordSecurityPermissionSeedData.xml"/>
<entity-resource type="data" reader-name="demo"
 loader="main" location="data/SwordSecurityGroupDemoData.xml"/>
<entity-resource type="data" reader-name="demo"
 loader="main" location="data/SwordDemoData.xml"/>

    <!--加载service文件-->
    <!-- service resources: model(s), eca(s) and group definitions -->
    <service-resource type="model" loader="main" location="servicedef/services.xml"/>
    <!--
    <service-resource type="eca" loader="main" location="servicedef/secas.xml"/>
    <service-resource type="group" loader="main" location="servicedef/groups.xml"/>
    -->
    <test-suite loader="main" location="testdef/SwordTests.xml"/>

    <!-- web applications; will be mounted when using the embedded container -->
    <!-- web应用配置
    name 为该组件名,
    base-permission为访问的权限,
    mount-point为组件访问的路径,如果为/就是输入https:localhost:8443直接访问 -->
    <webapp name="sword"
        title="Sword"
        server="default-server"
        location="webapp/sword"
        base-permission="OFBTOOLS,SWORD"
        mount-point="/sword"/>
</ofbiz-component>

 

 

当在浏览器中输入https://localhost:8443/sword回车访问该组件时,

因为在sword/webapp/sword/index.html文件中定义的一句代码,

访问会重定向到:https://localhost:8443/sword/control/main,该文件中只定义了一句话:

 

<%response.sendRedirect("control/main");%>

 

不过在单独模块中该语句好像不能用。因为我改了没作用,不知道为啥!

 

因为在新建组件时,web.xml文件会自动创建,所以这里就不再说明了。

 

接着是接受请求并指定跳转的controller.xml文件

该文件路径为:sword/webapp/sword/WEB-INF/controller.xml.

 

<?xml version="1.0" encoding="UTF-8"?>
<site-conf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://ofbiz.apache.org/Site-Conf" 
xsi:schemaLocation="http://ofbiz.apache.org/Site-Conf 
http://ofbiz.apache.org/dtds/site-conf.xsd">
    <!-- The controller elements that are common to all OFBiz components
         can be found in the following xml file. A component can override the
         elements found in the common-controller.xml file. -->
    <!--引入其他的controller.xml文件-->
    <include location="component://common/webcommon/WEB-INF/common-controller.xml"/>

    <description>Sword Component Site Configuration File</description>


    <!-- Events to run on every request after all other processing (chains exempt) -->
    <!--
    <postprocessor>
        <event name="test" type="java" path="org.apache.ofbiz.webapp.event.TestEvent" 
invoke="test"/>
    </postprocessor>
    -->
    <!--接受请求,请求的路径只有在这里配置才会响应或跳转-->
    <!-- Request Mappings -->
    <request-map uri="main">
        <!--权限安全设置,这两个属性代表是否使用https,和是否需要登录,需要登录的话,
请求这个uri的话会要求登录-->
        <security https="true" auth="true"/>
        <!--请求成功后的响应-->
        <response name="success" type="view" value="main"/>
        <!--请求失败后的响应-->
        <response name="error" type="view" value="main"/>
    </request-map>
    <!--根据请求中定义的response的value值对应,一个view-map可能有多个response指向-->
    <!-- View Mappings -->
<view-map name="main" type="screen" page="component://sword/widget/SwordScreens.xml#main"/>
</site-conf>

 

 

 

配置国际化信息的SwordUiLabels.xml,路径是sword\config\SwordUiLabels.xml,

 

<?xml version="1.0" encoding="UTF-8"?>
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-properties.xsd">
    <property key="SwordApplication">
        <value xml:lang="en">Sword Application</value>
        <value xml:lang="zh">Sword应用程序</value>
        <value xml:lang="zh-TW">Sword應用程式</value>
    </property>
    <property key="SwordCompanyName">
        <value xml:lang="en">OFBiz: Sword</value>
        <value xml:lang="zh-TW">OFBiz: Sword</value>
    </property>
    <property key="SwordCompanySubtitle">
        <value xml:lang="en">Part of the Apache OFBiz Family of Open Source Software</value>
        <value xml:lang="it">Un modulo della famiglia di software open source Apache OFBiz</value>
        <value xml:lang="zh">开软件OFBiz的组成部分?</value>
    </property>
    <property key="SwordViewPermissionError">
        <value xml:lang="en">You are not allowed to view this page.</value>
        <value xml:lang="zh">不允许你浏览这个页面?</value>
    </property>
</resource>

 

 

存放权限数据,权限组数据的文件,这些文件的数据一半是让我们来导入的,不会让我们去编辑。 

 

最后是最主要的显示用的screen文件,


 

定义组件中菜单screen的文件SwordMenus.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<menus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns="http://ofbiz.apache.org/Widget-Menu" 
       xsi:schemaLocation="http://ofbiz.apache.org/Widget-Menu 
       http://ofbiz.apache.org/dtds/widget-menu.xsd">
    <menu name="MainAppBar" title="${uiLabelMap.SwordApplication}"
          extends="CommonAppBarMenu" 
          extends-resource="component://common/widget/CommonMenus.xml">
        <!--定义一个叫做main的菜单按钮,嵌套的link标签是该菜单按钮的跳转uri,
        会由controller.xml文件接收-->
        <menu-item name="main" title="${uiLabelMap.CommonMain}">
            <link target="main"/>
        </menu-item>
    </menu>
</menus>

 ⒉定义在页面中使用的form表单SwordForms.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://ofbiz.apache.org/Widget-Form"
       xsi:schemaLocation="http://ofbiz.apache.org/Widget-Form 
       http://ofbiz.apache.org/dtds/widget-form.xsd">
    <!--定义一个表单,属性有这个表单的类型,请求地址,默认实体名 默认的map集合名-->
    <form name="" type="" target="" default-entity-name="" 
          default-map-name="" default-table-style="">
        <!--表单内的输入框等,一个field对应一个-->
        <field name="" title="">
            <!--输入框的类型,input.text hyperlink,drop-down等-->
            <text/>
        </field>
        <field name="" title="">
            <check all-checked=""/>
        </field>
    </form>
</forms>
 ⒊定义该组件公共装饰器的文件,CommonScreen.xml
<?xml version="1.0" encoding="UTF-8"?>
<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://ofbiz.apache.org/Widget-Screen"
         xsi:schemaLocation="http://ofbiz.apache.org/Widget-Screen 
         http://ofbiz.apache.org/dtds/widget-screen.xsd">

    <screen name="main-decorator">
        <!--公共的装饰器-->
        <section>
            <actions>
                <!--加载国际化文件,设为组件全局-->
                <property-map resource="SwordUiLabels" 
                              map-name="uiLabelMap" global="true"/>
                <property-map resource="CommonUiLabels" 
                              map-name="uiLabelMap" global="true"/>

                <!--设置模块页面的左上方的公司名和页面的title
                 title显示的是国际化文件中SwordCompanyName的值
                 -->
                <set field="layoutSettings.companyName" 
                     from-field="uiLabelMap.SwordCompanyName" global="true"/>
                <set field="layoutSettings.companySubtitle" 
                     from-field="uiLabelMap.SwordCompanySubtitle" global="true"/>

                <set field="activeApp" value="sword" global="true"/>

                <!--这个应该是与项目公共的模块菜单有关 注释后会整个模块报错-->
                <set field="applicationMenuName" value="MainAppBar" global="true"/>

                <!--引入该模块的菜单文件-->
                <set field="applicationMenuLocation" 
                     value="component://sword/widget/SwordMenus.xml" global="true"/>

                <!--应用标题,我不知道是在哪显示的-->
                <set field="applicationTitle" 
                     value="${uiLabelMap.SwordApplication}" global="true"/>
            </actions>
            <widgets>
                <!--引入公共的全局装饰器-->
                <include-screen name="GlobalDecorator" 
                                location="component://common/widget/CommonScreens.xml"/>
            </widgets>
        </section>
    </screen>

    <screen name="SwordCommonDecorator">
        <section>
            <actions>
            </actions>
            <widgets>
                <decorator-screen name="main-decorator" 
                                  location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <section>
                            <!--验证权限信息-->
                            <condition>
                                <if-has-permission permission="SWORD" action="_VIEW"/>
                            </condition>
                            <widgets>
                                <decorator-section-include name="body"/>
                            </widgets>
                            <fail-widgets>
                                <!--无法登陆后的提示信息-->
                                <label style="h3">${uiLabelMap.SwordViewPermissionError}</label>
                            </fail-widgets>
                        </section>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
</screens>

 ⒋定义接受请求后返回的显示的screen的文件,SwordScreens.xm

 

<?xml version="1.0" encoding="UTF-8"?>
<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://ofbiz.apache.org/Widget-Screen"
         xsi:schemaLocation="http://ofbiz.apache.org/Widget-Screen 
         http://ofbiz.apache.org/dtds/widget-screen.xsd">

    <screen name="main">
        <section>
            <actions>
                <!--先点选该组件后,深色显示该组件被选择-->
                <set field="headerItem" value="main"/>
                <!-- this highlights the selected menu-item with name "main" -->
            </actions>
            <widgets>
                <!--使用定义在CommonScreen,section属性name为body-->
                <decorator-screen name="SwordCommonDecorator" 
                                  location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <!--这里添加表单screen-->
                        <include-form name="" location=""/>
                        <!--添加菜单screen-->
                        <include-menu name="" location=""/>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
</screens>

 暂时主要用到的文件就是这些,写的好乱,唉

 

 

 

 

 


 

  • 大小: 20.7 KB
  • 大小: 39.9 KB
  • 大小: 18.8 KB
  • 大小: 10.9 KB
分享到:
评论
1 楼 PgGAI 2017-11-07  
牛逼,没个七八年工作经验是得不出来这样的见解。

相关推荐

    ofbiz一个完整例子

    OFBiz,全称为Open For Business Project,是一个开源的企业应用框架,用于构建企业级的电子商务、供应链管理和CRM等复杂业务系统。本示例将带你逐步了解如何在OFBiz中创建一个完整的应用实例,从实体创建到服务定义...

    ofbiz api开发文档

    OFBiz API中文版.chm文件是一个典型的Windows帮助文档,其中详细列举了OFBiz的所有服务、组件、实体以及相关的API接口。文档通常包含以下部分: - **服务**:描述了OFBiz中的服务接口,如订单处理、库存管理等。 ...

    ofbiz10.04表结构

    2. "ofbiz10.04表结构.pdm":PDM(Physical Data Model)通常是一个图形化的数据库模型表示,可能展示了OFBiz 10.04版本的表结构,包括各个表的物理布局、字段、主键和外键关系。这种可视化工具对理解数据库设计非常...

    OFBIZ开发指南 英文2

    OFBIZ是一个基于Java的企业级应用框架,旨在提供一系列完整的业务功能,包括供应链管理、电子商务、客户关系管理、财务管理等。本指南深入浅出地讲解了如何利用OFBIZ进行开发,帮助开发者理解和掌握其核心概念和技术...

    ofbiz重要的xml文件详解

    每个OFBiz组件都有自己的`component.xml`,它定义了组件的元数据,包括资源路径、服务、事件、视图等。组件是OFBiz模块化设计的基础,允许开发者独立开发和部署特定的功能。 6. **site-conf.xml**: 这个文件配置...

    关于OFBIZ的资料

    OfBiz,全称为The Apache Open For Business Project,是一个开源的企业应用套件,旨在为企业提供一套完整的业务自动化解决方案。这个项目由Apache软件基金会维护,遵循Apache 2.0许可证,因此它不仅免费,而且拥有...

    Apache+OFBiz+开发初学者指南

    总之,Apache OFBiz是一个功能强大的企业级应用框架,对于希望从事电子商务、ERP或CRM系统开发的初学者来说,理解其架构和组件至关重要。通过深入研究提供的资源和实践项目,你将能够逐步掌握这个强大的工具并开发出...

    ofbiz开发文档

    OFBiz,全称为Open For Business Project,是一个开源的企业级应用框架,主要用于构建和管理复杂的业务流程。它提供了一个全面的、可扩展的、基于服务的架构,支持电子商务、供应链管理、客户关系管理等多个领域。在...

    ofbiz 英文pdf

    - **OFBiz工作区简介**:介绍OFBiz项目的结构及基本文件组织方式。 - **安装Java开发工具包(JDK)**: - **下载JDK 5.0**:提供官方下载链接。 - **安装JDK 5.0**:给出安装过程中的注意事项及常见问题解决方案...

    OFBiz教程_-_初学者的开发指南

    3. **组件开发**:学习如何创建一个新的组件,以及组件中的主要文件如`ofbiz-component.xml`的用途。 4. **实体模型**:解释OFBiz中实体模型的概念及其作用。 5. **服务定义和服务调用**:如何定义服务并从其他组件...

    OFBiz入门教程

    - **应用程序目录(applications)**:这是存放OFBiz各个应用程序的地方,每个应用程序作为一个独立的组件存在。 - **会计模块(accounting)** - **内容管理(content)** - **电子商务(ecommerce)** - **...

    ofbiz框架(文档)全

    OFBiz,全称Open For Business Project,是一个开源的企业级应用框架,专注于电子商务、供应链管理和企业资源规划(ERP)等业务场景。本文将深入探讨OFBiz中的核心设计模式——Model-View-Controller(MVC),以及它...

    Ofbiz源码阅读笔记 之 请求控制篇

    - **2.2.2.2 pushUserIdentifier**:检查请求是否关联了一个已登录用户,如果是,则将该用户的信息添加到`userIdentifierStack`(一个`ThreadLocal`变量)中,便于后续处理中快速获取用户信息。 - **2.2.2.3 ...

    ofbiz例子practice

    Apache OFBiz是一个开源的企业应用框架,它提供了构建和管理企业级业务应用程序的全面工具集。这个"ofbiz例子practice"是OFBiz的一个实践项目,旨在帮助用户了解如何使用OFBiz来开发和运行实际的应用程序。在实践中...

    opentaps (from apache ofbiz) 架构图 (chart of architecture)

    提供的"opentaps 架构图.vsd"文件,是一个Visio绘制的OpenTaps和OfBiz架构的详细图表,清晰展示了各个组件之间的关系和交互流程。通过这个图表,你可以直观理解不同层的功能,以及它们如何协同工作来实现整个系统的...

    OfBiz和OpenTags架构图

    OfBiz的架构图可能显示了其各个服务组件的层级关系,以及如何通过服务组件模型(Service Component Architecture, SCA)实现解耦和复用。而OpenTags的架构图则可能展示了标签库的结构,以及如何在JSP解析过程中调用...

    ofbiz学习笔记

    在OFBiz学习过程中,了解其URL处理机制以及Screen配置是非常基础且重要的环节。OFBiz是一个开源的企业级应用框架,...在后续的学习中,你还需要了解更多的OFBiz组件,如服务引擎、工作流系统等,以构建完整的业务流程。

    java 开源电子商务框架开发大全

    ofbiz_cn.doc可能是一个中文版的OFBIZ用户指南,详细介绍了OFBIZ的功能特性和操作指南,对于中国开发者来说,中文文档无疑能降低学习门槛。在OFBIZ的使用过程中,理解其工作流程,如商品管理、订单处理和支付集成等...

    OFBiz OSGi Integration-开源

    在IT行业中,Open For Business(OFBiz)是一个高度可扩展且功能丰富的开源企业应用框架,主要用于构建电子商务、供应链管理、客户关系管理等多种业务系统。OSGi(Open Services Gateway Initiative)则是一种模块化...

    java offbiz 电子商务 系统 资料

    Java Offbiz是一个开源的电子商务平台,它基于Java技术构建,为各类企业和组织提供了一套全面的网上业务解决方案。Offbiz的全称为Open For Business Project,它涵盖了从订单管理、产品目录到供应链管理等多个核心...

Global site tag (gtag.js) - Google Analytics