### 答
> 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]
> 如下圖操作
> 
> 1. 在**Absolute Filename or URL(絕對文件名或網址)** 輸入: http://localhost/DemoData.xml
> 2. 勾選**Is URL?(是網址?)**
> 3. 點擊**Import File(導入文件)** 提交導入操作.
#### XML數據文件在項目運行本機的磁盤文件
> 假定待導入的文件網址是[/home/user1/data/DemoData.xml]
> 如下圖操作
> 
> 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>
> ~~~
> 如下圖操作
> 
> 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]
> 如下圖操作
> 
> 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指令
- 回答問題
- 看云使用小記