### 答
> OFBiz系统提供了一个专用于系统维护的网页版工具模块[webtools], 这里有很多工具, 方便系统管理人员从容的在线管理我们的系统.
> 接下来我将详细介绍一下, [webtools]模块提供的数据导入功能
>
#### 登录[webtools]模块
> - 运行项目等待启动成功.
> - 浏览器访问网址: https://localhost:8443/webtools
> - 使用[admin]账户, 密码[ofbiz]登录这个模块.
> - 在登录的主界面中找到**Entity XML Tools(实体XML工具)** 功能区.
> - 点击**XML Data Import(XML数据导入)** . (https://localhost:8443/webtools/control/EntityImport)
> - 这里提供了多种导入数据的方案:
> - XML数据文件的网址方式. (如: http://localhost/DemoData.xml)
> - XML数据文件在项目运行本机的磁盘文件. (如: /home/user1/data/DemoData.xml)
> - 文本域大输入框, 直接粘贴XML数据
> 下面我们逐一介绍一下用法
#### XML数据文件的网址方式
> 假定待导入的文件网址是[http://localhost/DemoData.xml]
> 如下图操作
> ![EntityImport1](https://box.kancloud.cn/d1c92560cd30a4baf91477db4176fcd6_924x432.png =200x100)
> 1. 在**Absolute Filename or URL(绝对文件名或网址)** 输入: http://localhost/DemoData.xml
> 2. 勾选**Is URL?(是网址?)**
> 3. 点击**Import File(导入文件)** 提交导入操作.
#### XML数据文件在项目运行本机的磁盘文件
> 假定待导入的文件网址是[/home/user1/data/DemoData.xml]
> 如下图操作
> ![EntityImport2](https://box.kancloud.cn/b4cee3e99738f9b50ad4606f6c0adc25_912x428.png =200x100)
> 1. 在**Absolute Filename or URL(绝对文件名或网址)** 输入: /home/user1/data/DemoData.xml
> 2. 点击**Import File(导入文件)** 提交导入操作.
#### 文本域大输入框, 直接粘贴XML数据
> 假定待导入的[DemoData.xml]文件内容如下:
> ~~~
> <?xml version="1.0" encoding="UTF-8"?>
> <entity-engine-xml>
> <SecurityPermission description="View operations in the NewLearn Component." permissionId="NEWLEARN_VIEW"/>
> </entity-engine-xml>
> ~~~
> 如下图操作
> ![EntityImport3](https://box.kancloud.cn/e8ce4b09cd4bb390083e82451ed1ca8a_1520x250.png)
> 1. 在文本域内粘贴待导入的数据: ` <SecurityPermission description="View operations in the NewLearn Component." permissionId="NEWLEARN_VIEW"/> `
> 2. 点击**Import Text(导入文本)** 提交导入操作.
>[warning] 注意:
> 1. 如上图, 文本域内数据的根标签必须是[entity-engine-xml]
> 2. Data数据的导入是有顺序要求的, 因为表数据有外键依赖, 一般规律是:
> 1). TypeData
> 2). SecurityData: [SecurityPermissionSeedData] 和 [SecurityGroupDemoData]
> 3). DemoData
> 4). 其他Data
#### 导入整个目录下的数据
> OFBiz还提供了一种方式, 这种方式可以导入一个目录下的多个文件.
> 这是一个特殊导入方式功能, 所以和前面讲的导入方式不在一起.
> 我们访问: **XML Data Import Dir(XML数据导入目录)**. (https://localhost:8443/webtools/control/EntityImportDir)
>
> 假定待导入的文件网址是[/home/user1/data]
> 如下图操作
> ![EntityImport4](https://box.kancloud.cn/dfa2c80618f066f708e9c418eb52fa1b_918x424.png =200x100)
> 1. 在**Absolute directory path(目录绝对路径)** 输入: /home/user1/data
> 2. 点击**Import File(导入文件)** 提交导入操作.
#### 所有导入功能都依赖一个服务: entityImport
> 这里我们稍微了解下这个服务的传入参数的定义
~~~
<!-- entityImport 服务: org.ofbiz.webtools.WebToolsServices.entityImport -->
<permission-service service-name="entityMaintPermCheck" main-action="VIEW"/>
<!-- 检测当前用户是否有查看权限 -->
<attribute name="filename" type="String" mode="IN" optional="true" allow-html="any"/>
<!-- 绝对文件名或网址 -->
<attribute name="fmfilename" type="String" mode="IN" optional="true" allow-html="any"/>
<!-- 用于过滤数据的FreeMarker模版文件的绝对文件名[可选] -->
<attribute name="fulltext" type="String" mode="IN" optional="true" allow-html="any"/>
<!-- 完整的XML文档(根标签: entity-engine-xml) -->
<attribute name="isUrl" type="String" mode="IN" optional="true"/>
<!-- 是网址吗 -->
<attribute name="mostlyInserts" type="String" mode="IN" optional="true"/>
<!-- 大部分是插入吗 -->
<attribute name="maintainTimeStamps" type="String" mode="IN" optional="true"/>
<!-- 维护时间戳吗 -->
<attribute name="createDummyFks" type="String" mode="IN" optional="true"/>
<!-- 新建伪外键 -->
<attribute name="checkDataOnly" type="String" mode="IN" optional="true"/>
<!-- 仅检查数据[不修改数据库] -->
<attribute name="txTimeout" type="Integer" mode="IN" optional="true"/>
<!-- TX超时秒数[对每个实体] -->
<attribute name="messages" type="List" mode="OUT" optional="false"/>
<!-- 服务处理结果 -->
~~~
> 在这个服务[entityImport]里调用了一个核心服务: parseEntityXmlFile
> 我们再看看这个服务[parseEntityXmlFile]的传入参数定义
~~~
<!-- 上述服务内部调用 parseEntityXmlFile 服务: org.ofbiz.webtools.WebToolsServices.parseEntityXmlFile -->
<permission-service service-name="entityMaintPermCheck" main-action="VIEW"/>
<!-- 检测当前用户是否有查看权限 -->
<attribute name="url" type="java.net.URL" mode="IN" optional="true"/>
<!-- 网址 -->
<attribute name="xmltext" type="String" mode="IN" optional="true" allow-html="any"/>
<!-- 完整的XML文档(根标签: entity-engine-xml) -->
<attribute name="mostlyInserts" type="String" mode="IN" optional="true"/>
<!-- 大部分是插入吗 -->
<attribute name="maintainTimeStamps" type="String" mode="IN" optional="true"/>
<!-- 维护时间戳吗 -->
<attribute name="txTimeout" type="Integer" mode="IN" optional="true"/>
<!-- TX超时秒数[对每个实体] -->
<attribute name="createDummyFks" type="String" mode="IN" optional="true"/>
<!-- 新建伪外键 -->
<attribute name="checkDataOnly" type="String" mode="IN" optional="true"/>
<!-- 仅检查数据[不修改数据库] -->
<attribute name="rowProcessed" type="Long" mode="OUT" optional="false"/>
<!-- 数据处理成功数 -->
~~~
- OFBiz开发手册
- 关于
- 更新日志
- 快速引导
- 关于本书
- 关于作者
- 认知篇
- 认识OFBiz
- 什么是OFBiz
- 架构图析
- 依赖库
- 请求核心流程
- 获取框架
- 衍生项目
- OFBiz的特点
- 框架特性
- 业务能力
- 框架优势
- 框架劣势
- 行业解决方案
- 架构对比
- OFBiz适应症
- 适合我吗
- OFBiz中国
- 中国业界
- 优秀博客
- 基础篇
- 开发准备
- 操作系统
- 开发环境
- 框架导入IDE
- 配置运行
- 创建模块
- 模块介绍
- 模块结构
- 模块创建
- 模块载入访问
- 标准CRUD
- 文件关系
- 实体设计-Entity
- 国际化-UiLabel
- 配置菜单-Menu
- 配置请求-Controller
- 配置屏幕-Screen
- 配置表单-Form
- 配置服务-Service
- 配置业务脚本-Minilang
- 测试CRUD
- 基础进阶
- 中文环境配置
- 通用搜索服务
- 文件上传
- Form表单验证
- 导出PDF
- 导出Excel
- 发送Email
- 配置Job
- 配置视图-view-entity
- 动态请求-ajax
- 常用功能
- 加速Gradle
- 常用命令
- 修改端口
- 调试模式
- 调试项目
- 重启生效
- 数据导入
- 缓存清理
- 在线日志
- 更换数据库
- 实体设计管理
- 表数据管理
- 配置本地dtd
- 使用Static静态文件
- 验证码-RandomCode
- 主题切换-Theme
- 时区切换-TimeZone
- 语种切换-Language
- webtools在线框架管理功能介绍
- 编码规范
- 驼峰命名法
- 代码编码规范
- 实体设计规范
- 字段类型规范
- 请求命名规范
- 业务实现规范
- 提高篇
- 环境上下文
- 上下文-ftl
- 上下文-groovy
- 上下文-event
- 上下文-form
- 上下文-screen
- 上下文-minilang
- 标签API
- 实体设计-entitymodel
- 实体触发器-eeca
- 国际化-UiLabel
- 菜单-Menu
- 请求-Controller
- 屏幕-Screen
- 表单-Form
- 服务-Service
- 服务触发器-seca
- 脚本-Minilang
- 脚本-Groovy
- 模板-Freemarker
- 演示数据-Data
- PDF标签-XSL-FO
- 工具类
- 调试-Debug.java
- 对象类型-ObjectType.java
- 字符串工具-StringUtil.java
- 日期时间-UtilDateTime.java
- 通用-UtilGenerics.java
- Http-UtilHttp.java
- 综合-UtilMisc.java
- 属性-UtilProperties.java
- URL-UtilURL.java
- 校验-UtilValidate.java
- XML操作-UtilXml.java
- 高级实现
- 忽略版本控制
- 配置项目使用MySQL数据库
- 配置项目使用Postgres数据库
- 扩展支付宝支付
- Webservice公共服务
- Rest接口
- Ftl自定义宏与使用
- 接入条形码
- 接入二维码
- 自定义主题-Theme
- error页面自定义
- 接入SMS手机短信服务
- QQ微信联合登录
- 微信服务号接管
- 页面静态化
- CMS帮助中心
- 访客IP与城市定位
- 使用二级域名
- Tenant多租户应用
- date-time中国化显示
- datepicker日期控件
- 图片处理
- SSL安全证书
- 接入workflow
- 使用solr搜索引擎
- 生产服务器性能优化
- 框架篇
- 框架模块
- 模块关系
- 框架基础-base
- 通用功能-common
- 运行容器-catalina
- 实体引擎-entity
- 静态资源-images
- XML脚本-minilang
- 用户权限-security
- 服务引擎-service
- 项目启动-start
- 测试工具-testtools
- 应用站点-webapp
- 在线框架管理-webtools
- 装饰器-widget
- 核心类
- 请求核心类
- 实体核心类
- 服务核心类
- 框架原理
- Start启动过程
- 实体引擎
- 请求控制
- 服务引擎
- ECA触发器
- 实体主键生成器
- Job定时任务
- 跨模块免登陆访问
- 无处不在的UEL表达式
- cache缓存的实现
- minilang原理
- 实体相关资源加载模式
- OFBiz支持的模块目录
- OFBiz请求处理过程分析
- 权限
- 权限介绍
- 权限分布
- 权限运用
- 重要文件
- 模块加载component-load.xml
- 模块配置ofbiz-component.xml
- 站点配置web.xml
- 缓存cache.properties
- 调试debug.properties
- 综合配置general.properties
- 二维码qrcode.properties
- 安全security.properties
- 服务端统计serverstats.properties
- 启动配置start.properties
- 网络访问配置url.properties
- 装饰器配置widget.properties
- 业务篇
- 业务模块
- 业务介绍
- 模块关系
- 内容-content
- 当事人-party
- 人事-humanres
- 商品-product
- 跟进-marketing
- 订单-order
- 制造-manufacturing
- 人工服务-workeffort
- 财务-accounting
- 行业解决方案
- 电商综合应用
- 运维篇
- 运行环境
- 服务器硬件要求
- Linux服务器初始化
- JDK安装与配置
- MySQL安装与配置
- SVN客户端安装
- Nginx安装与配置
- 项目部署
- 项目父目录
- 修改端口
- 一个服务器运行多个项目实例
- 运行项目
- 常用命令
- 番外篇
- 进阶技巧
- 标准CRUD完整模板
- 参考书目与简介
- 数据模型资源手册
- Freemarker语法
- Freemarker介绍
- Groovy语法
- Groovy介绍
- Groovy比之Java
- OFBiz中的Groovy增强
- 常见问题
- Ftl中文乱码
- PDF中文乱码
- 数据库中文乱码
- Console中文乱码
- 下载文件乱码
- http链接存数据库异常
- html代码存数据库异常
- OFBiz框架精简
- OFBiz_v16.11初始化好慢 为什么?
- 怎么查看自己的项目基于OFBiz的哪个版本
- IDEA里Gradle执行命令时提示 No cached version available for offline mode 错误
- OFBiz为什么可以下载了就能直接运行起来用?
- 用IDEA手工执行Gradle指令
- 不允许你浏览这个页面
- 使用[loadDefault]或[load-demo]指令到底加载了哪些实体和数据
- OFBiz中怎么手工导入Data.xml数据
- 怎么确认一个用户是否配置并授予了某个权限
- 哪些情况下需要重启OFBiz系统
- 如何清空缓存呢?
- MySQL或PostSQL等数据库时,更新一个实体字段类型,重启OFBiz并没有生效,为什么?
- 实体添加字段,重启在数据库没看到此字段,为什么?
- Gradle项目在Eclipse中自动链接依赖的jar包
- 解决Gradle项目导入Eclipse后抛出UnsupportedConfigurationException异常
- 为Eclipse安装Gradle环境
- Eclipse配置显示工具窗口
- 用Eclipse手工执行Gradle指令
- 回答问题
- 看云使用小记