設定說明
引用元件
Maven 設定
pom.xml 加入以下項目。
<dependency> <groupId>com.iisigroup</groupId><artifactId>iisi-ude-filesystem</artifactId> </dependency>
環境架構與設定說明
Spring Context 應加入 LogicalFileSystemConfiguration 以定義以下 6 個主要的元件 bean。
- FileSystem fileSystem
- LogicalFileMapper logicalFileMapper;
- FileMonitor fileMonitor
- FileWriteFacade fileWriteFacade
- FileReadFacade fileReadFacade
- FileCompressFacade fileCompressFacade
宣告方式參考如下:
XML
<bean class="com.iisigroup.ude.configuration.LogicalFileSystemConfiguration">
JavaConfig
加入 import
@Configuration @Import({ LogicalFileSystemConfiguration.class // , ....}) public class RxxBasicConfiguration {
UDE 邏輯檔案系統設定
邏輯檔案系統會至以下路徑取得設定檔:
${config.path}/UDE/com.iisigroup.ude.filesystem.properties
Location
在程式中建立邏輯檔案,必須利用 LogicalFileLocation 介面指定「邏輯根目錄」。
- LogicalFileLocation.getName() 的回傳值,必須在 ~filesystem.properties 中有對應設定項目。
- 一般建議專案定義 ENUM 表示路徑,避免因使用字串宣告而造成的意外不一致錯誤(如大小寫問題)。
- 以下範例定義有三組邏輯檔案根目錄 : TEMP、DATA、WM_PIC。
public enum SampleLocation implements LogicalFileLocation { DAILY_DATA, TEMP, WM_PIC ; @Override public String getName() { return this.name(); } }
- 以下範例定義有三組邏輯檔案根目錄 : TEMP、DATA、WM_PIC。
- 邏輯檔案系統設定檔,主要的作用是定義實體檔案的對應位置(Location),範例如下:
location.TEMP = ${temp.path} location.DAILY_DATA = ${data.path}/%Y%%M%/%D% location.WM_PIC = ${resource.path}/picture:R
- 設定中,以「location.」為前綴的項目,即是邏輯檔案位置(Location)定義。
- 命名有區別大小寫,如 Temp 不等於 TEMP。
- 實務上不見得只能定義目錄,如果要對應到單一檔案位置,其實也無不可。
- 定義內容說明如下:
檔案系統變數
可使用UDE檔案系統變數值進行設定,如「${temp.path}」。標準支援項目應有以下幾項:
* global.config.path
* global.resource.path
* global.data.path
* config.path
* resource.path
* data.path
* temp.path
* log.path
時間與TAG變數應用
所有的UDE邏輯檔案(LogicalFile)都記錄有一個對應時間,預設為物件建立時間。 以「${data.path}/%Y%%M%/%D%」為例,即指向專案資料路徑下對應日期的年月日目錄,像「~/201612/09」。
另外,在建立 LogicalFile 時也可以指定Tag,在邏輯路徑中可以用 %TAG% 表示。 如專案需要以自訂原則(像使用者帳號)區分存放目錄,也可以使用此特性定義。
# %Y% 西元年,如:2015
# %TWY% 民國年,如:104
# %M% 月,如:05
# %D% 日,如:21
# %h% 時(24H),如:09 / 19
# %m% 分,如:00
# %TAG% 自訂TAG參數
邏輯唯讀:
若在邏輯路徑的最後加上「:R」,表示此路徑下的檔案為邏輯唯讀。 如果透過邏輯檔案元件的 IO 介面操作寫入,會抛出 Exception 提醒此為非法存取。
但無法限制使用者以其它方式寫入檔案。通常用在資源檔案像是「${resource.path}/picture:R」;或者是不同子專案間,一個負責寫入,一個只能讀取的情境。