OpenKM SDK 簡易範例
OpenKM安裝已有同仁分享 有興趣的可以參考在昕力大學搜尋這邊就不再贅述
首先要找到適用的SDK版本
可以到官網查詢
本文章使用Spring boot +Maven 因此使用 SDK for Java 1.2
Maven設定
OpemKM有自己的Repository ,所以需要在pom檔的repositories加上以下設定
<repositories>
<repository>
<id>openkm.com</id>
<name>OpenKM Maven Repository</name>
<url>https://maven.openkm.com</url>
</repository>
</repositories>
並在dependencies加上要下載使用的版本
<dependency>
<groupId>com.openkm</groupId>
<artifactId>sdk4j</artifactId>
<version>1.2</version>
</dependency>
建立OpenKM Services實例
需要輸入在創建OpenKM AP時設定的帳號、密碼與OpenKM的host
import com.openkm.sdk4j.OKMWebservices;
import com.openkm.sdk4j.OKMWebservicesFactory;
public void init() {
String user="testUser";
String password = "testWord";
String host ="OpenKM host";
OKMWebservices okmWebservices = OKMWebservicesFactory.newInstance(host, user, password);
}
創建成功後就可以使用okmWebservices來對OpenKM進行操作
查詢
find(QueryParams queryParams)
透過QueryParams可以加入許多查詢參數
以下介紹幾個較常用參數
參數 |
型別 |
說明 |
name |
String |
節點名稱(檔案名稱或資料夾名稱) |
domain |
Long |
要查詢的節點類型 0:Mail(信件) 1:Folder(資料夾) 2:Document(檔案) |
keywords |
Set<String> |
OpenKM允許在每個節點設置不同的keyword,此參數能依照keyword進行篩選 |
content |
String |
內文查詢,根據檔案內文查詢,很多坑,有機會再詳細說一下遇過的 |
mimeType |
String |
檔案類型,依照節點類型為Document的類型進行篩選,如以下範例 PDF: application/pdf PPTX: application/vnd.openxmlformats-officedocument.presentationml.presentation PNG: image/png 更多類型可自行上網查詢 這邊只提供幾個簡單範例 |
path |
String |
節點路徑,依照節點路徑進行篩選,只對Folder類型的節點有效 |
LastModifiedFrom LastModifiedTo |
Calendar |
針對節點最後修改時間進行篩選,因為只有Document類型的節點有最後修改時間,只對Document類型有效 |
更多參數與查詢語法可以參考以下
要注意的是這些參數都是以And的方式進行篩選,雖然有參數operator
可以設定,但只在舊版本支援,在6.X版本已經不支援
參考文章:這裡
範例:
import com.openkm.sdk4j.bean.QueryParams;
import com.openkm.sdk4j.bean.QueryResult;
public List<QueryResult> find() {
try {
OKMWebservices okmWebservices = OKMWebservicesFactory
.newInstance(openKmConfig.getUrl(), openKmConfig.getUser(), openKmConfig.getPassword());
QueryParams params = new QueryParams();
params.setMimeType("application/pdf");
params.setDomain(2);
params.setContent("測試文章");
return okmWebservices.find(params);
} catch (Exception e) {
}
}
以上會查出節點類行為Document且類型為PDF且內文含 "測試文章"的節點資訊
新增/刪除節點
新增資料夾
createFolder(Folder fld)
import com.openkm.sdk4j.bean.Folder;
public String createFolder() {
try {
OKMWebservices okmWebservices = OKMWebservicesFactory
.newInstance(openKmConfig.getUrl(), openKmConfig.getUser(), openKmConfig.getPassword());
Folder folder = new Folder();
folder.setPath(“/okm:root/公用資料夾”);
return okmWebservices.createFolder(folder).getUuid();
} catch (Exception e) {
}
return null;
}
Path參數為想要新增的資料夾位置,若資料夾已存在會丟出ItemExistsException的錯誤,成功創建後會將uuid寫入Folder
要注意Folder的其他屬性並不會影響新增的Folder節點屬性,只有path有作用
因此官方其實更推薦使用另一個方法來進行資料夾創建
createFolderSimple(String fldPath)
新增檔案
createDocument(Document doc, InputStream is)
import com.openkm.sdk4j.bean.Document;
public String createDocument(Path filePath) {
try (InputStream is = new FileInputStream(filePath.toFile())) {
Document doc = new Document();
doc.setPath(“/okm:root/公用資料夾/圖片.png”);
OKMWebservices okmWebservices = OKMWebservicesFactory
.newInstance(openKmConfig.getUrl(), openKmConfig.getUser(), openKmConfig.getPassword());
okmWebservices.createDocument(doc, is);
return doc.getUuid();
} catch (Exception e) {
}
return null;
}
使用方法跟創建資料夾差不多,只是多了一個InputStream進行檔案傳輸
跟創建資料夾一樣建立時的Doucment其他參數是沒有用的,官方推薦另一個建立方法createDocumentSimple(String docPath, InputStream is),無須建立Object
刪除資料夾/檔案
因為兩個方法幾乎一樣放一起說
deleteDocument(String docId)
deleteFolder(String fldId)
兩個方法都是傳入uuid或節點的絕對路徑即可進行刪除,
其他還有很多方法如查詢節點、修改節點等的key都是可擇一填入
public void deleteDocument () {
try {
OKMWebservices okmWebservices = OKMWebservicesFactory
.newInstance(openKmConfig.getUrl(), openKmConfig.getUser()
okmWebservices.deleteDocument(“/okm:root/公用資料夾/圖片.png”);
} catch (Exception e) {
}
}
public void deleteFolder() {
try {
OKMWebservices okmWebservices = OKMWebservicesFactory
.newInstance(openKmConfig.getUrl(), openKmConfig.getUser()
okmWebservices .deleteFolder(“550fceea-d4ea-48c5-b131-2f161b60d707”);
} catch (Exception e) {
}
}
參考文章:官網