Cordys BOP 4平臺開發實戰——MongoDB提供文件服務(1)
1、查詢返回單個文件JSON資料
(1)查詢返回獨立文件
MongoDB語法:
.find({"ID":"2015040011"})
Soap請求:
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"><SOAP:Body>
<FindDocuments xmlns="http://schemas.cordys.com/XiaoywWSAppServerPackage" preserveSpace="no" qAccess="0" qValues="">
<collectionName>BusinessEntity</collectionName>
<querycondition>{"ID":"2015040011"}</querycondition>
</FindDocuments>
</SOAP:Body>
</SOAP:Envelope>
返回值擷取內容如下:
<findDocuments>
{ "_id" : { "$oid" : "5525d9e084ae4890fc58c489"} , "ID" : "2015040011" , "Name" : "高階採購流程" , "Dept" : "經營管理部"}</findDocuments>
(2)查詢返回巢狀文件
MongoDB語法:
.find({"ID":"2015040013"})
Soap請求:
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<FindDocuments xmlns="http://schemas.cordys.com/XiaoywWSAppServerPackage" preserveSpace="no" qAccess="0" qValues="">
<collectionName>BusinessEntity</collectionName>
<querycondition>{"ID":"2015040013"}</querycondition>
</FindDocuments>
</SOAP:Body>
</SOAP:Envelope>
巢狀文件查詢結果擷取主要內容如下:
<findDocuments>
{ "_id" : { "$oid" : "55260ce084ae4cb2fa2e2bea"} , "ID" : "2015040013" , "Name" : "新版合作伙伴採購流程" , "Dept" : "經營管理部" , "DETAIL" :
[ { "WF" : "01" , "WFNAME" : "啟動"} , { "WF" : "02" , "WFNAME" : "結束"}]}
</findDocuments>
2、擴充套件/修改文件,返回文件_id
(1)插入單文件操作
MongoDB語法:
.save({"ID":"2015040012","Name":"新版外包採購流程","Dept":"經營管理部"})
Soap請求:
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<GetExpandDocument xmlns="http://schemas.cordys.com/XiaoywWSAppServerPackage" preserveSpace="no" qAccess="0" qValues="">
<collectionName>BusinessEntity</collectionName>
<JSONString>{"ID":"2015040012","Name":"新版外包採購流程","Dept":"經營管理部"}</JSONString>
</GetExpandDocument>
</SOAP:Body>
</SOAP:Envelope>
返回_id值如下:
<getExpandDocument>5525e34d84ae4cb2fa2e2be6</getExpandDocument>
(2)插入巢狀文件(相當於一對多關係)
MongoDB語法:
.save({ID:'2015040013',Name:'新版合作伙伴採購流程',Dept:'經營管理部',DETAIL:[{WF:'01',WFNAME:'啟動'},{WF:'02',WFNAME:'結束'}]})
Soap請求:
<GetExpandDocument xmlns="http://schemas.cordys.com/XiaoywWSAppServerPackage" preserveSpace="no" qAccess="0" qValues="">
<collectionName>BusinessEntity</collectionName>
<JSONString>{ID:'2015040013',Name:'新版合作伙伴採購流程',Dept:'經營管理部',DETAIL:[{WF:'01',WFNAME:'啟動'},{WF:'02',WFNAME:'結束'}]}</JSONString>
</GetExpandDocument>
(3)修改資料,在_id值不變的情況下,執行修改操作
MongoDB語法:
.save({"_id":{"$oid":"5525d9e084ae4890fc58c489"},"ID":"2015040011","Name":"經領導外包採購流程","Dept":"經營管理部"})
Soap請求:
<GetExpandDocument xmlns="http://schemas.cordys.com/XiaoywWSAppServerPackage" preserveSpace="no" qAccess="0" qValues="">
<collectionName>BusinessEntity</collectionName>
<JSONString>{"_id":{"$oid":"5525d9e084ae4890fc58c489"},"ID":"2015040011","Name":"經領導外包採購流程","Dept":"經營管理部"}
</JSONString>
</GetExpandDocument>
附件程式碼:
/*
This class has been generated by the Code Generator
*/
package com.unicom.xiaoywwsappserverpackage;
import com.cordys.cpc.bsf.busobject.BusObjectConfig;
import com.cordys.cpc.bsf.busobject.BusObjectIterator;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.WriteResult;
import com.mongodb.util.JSON;
public class C_MongoPackage extends C_MongoPackageBase
{
public C_MongoPackage()
{
this((BusObjectConfig)null);
}
public C_MongoPackage(BusObjectConfig config)
{
super(config);
}
/* 內部私有共享方法:用於連結資料庫,需要傳輸DB */
private static DB connectDB(DB v_db){
try {
MongoClientURI uri = new MongoClientURI("mongodb://使用者名稱:密碼@10.64.52.120:27017/資料庫名稱");
MongoClient client = new MongoClient(uri);
v_db = client.getDB("ayuming");
} catch (Exception e) {
e.printStackTrace();
}
return v_db;
}
/* 查詢返回單個文件,輸入引數分別為Collection名稱、查詢條件 */
public static String findDocuments(String collectionName, String querycondition)
{
DB db = null;
String ret_str = null;
try {
db = connectDB(db);
DBCollection collection = db.getCollection(collectionName);
DBObject query = (BasicDBObject) JSON.parse(querycondition);
DBCursor dbCursor = collection.find(query);
int curCount = dbCursor.count();
if (curCount > 0){
ret_str = dbCursor.next().toString();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (db != null) {
try {
db.requestDone();
db = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
return ret_str;
}
public static BusObjectIterator<com.unicom.xiaoywwsappserverpackage.C_MongoPackage> getC_MongoPackageObjects(com.cordys.cpc.bsf.query.Cursor cursor)
{
// TODO implement body
return null;
}
/* 儲存單個文件到資料庫中,輸入引數為Collection名稱、JSON格式的文件,支援巢狀模型 */
public static String getExpandDocument(String collectionName,String JSONString) {
DB db = null;
String ret_id = null;
try {
db = connectDB(db);
DBCollection collection = db.getCollection(collectionName);
DBObject query = (BasicDBObject) JSON.parse(JSONString);
WriteResult writeResult = collection.save(query);
ret_id = query.get("_id").toString();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (db != null) {
try {
db.requestDone();
db = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
return ret_id;
}
public void onInsert()
{
}
public void onUpdate()
{
}
public void onDelete()
{
}
}
注:此程式碼只是PoC使用,請完善加入日誌處理等必要功能再使用到生產環境上。
參考及相關:
《雲端計算統一辦公運營平臺服務能力設計方案》 肖永威 2014.11
《用MongoDB資料庫來管理辦公系統中文件型的表單和資訊——通用流程化應用審批單設計思路(二,續)》 肖永威 2015.01
相關文章
- 資訊化實戰展示系列4 **市企業公共服務平臺
- 物聯網路卡平臺提供哪些服務
- 影片服務平臺如何解決直播平臺開發中具有挑戰的工作
- 如何在SAP雲平臺上使用MongoDB服務MongoDB
- 服務式辦公室,開展平臺戰略
- 情指勤融合實戰平臺開發解決方案,智慧公安警務平臺建設
- 小程式開發家政公司、家政服務平臺。
- 高層次人才一站式服務平臺開發 人才綜合服務平臺系統
- SpringCloud微服務實戰——搭建企業級開發框架(二十五):實現多租戶多平臺簡訊通知服務SpringGCCloud微服務框架
- 【新加坡】Shopee: Golang服務端或者平臺開發內推Golang服務端
- API開發平臺,全面快速整合釋出API服務API
- 情指一體化實戰平臺開發,智慧警務系統開發解決方案
- Nodejs:使用Mongodb儲存和提供後端CRD服務NodeJSMongoDB後端
- SpringCloud微服務實戰——搭建企業級開發框架(十九):Gateway使用knife4j聚合微服務文件SpringGCCloud微服務框架Gateway
- 資訊化實戰展示系列5**市**區資料服務平臺
- Laravel深入學習4 – 服務提供器Laravel
- 眾創空間,提供務實高效的創業平臺創業
- 鴻蒙開發實戰:【系統服務框架部件】鴻蒙框架
- 區塊鏈開發平臺_區塊鏈技術服務區塊鏈
- Bootstrap提供的CDN服務標籤與下載文件boot
- 4_webflux服務端開發WebUX服務端
- 微服務開發平臺 Spring Cloud Blade 部署實踐微服務SpringCloud
- Go實戰 22 | 網路程式設計:通過 RPC 實現跨平臺服務Go程式設計RPC
- 移動開發即服務,騰訊雲移動開發平臺打造開發新模式移動開發模式
- 中通訊息服務運維平臺實踐(已開源)運維
- NeuChar 平臺使用及開發教程(四):使用 NeuChar 的素材服務
- [新加坡] Shopee Golang 服務端或者平臺開發工程師內推Golang服務端工程師
- 智慧平安小區搭建,智慧社群綜合服務平臺開發
- Angular4 實戰開發Angular
- 情指勤一體化情報指揮實戰平臺開發方案,智慧警務系統開發
- 怎樣開啟mongodb服務端?MongoDB服務端
- Go+MongoDB的微服務實戰MongoDB微服務
- Windows平臺Python Pyramid實戰從入門到進階:第一個服務WindowsPython
- js逆向實戰之某市場監管公告服務平臺返回資料解密JS解密
- 微軟為獨立遊戲開發者提供平臺微軟遊戲開發
- Tcloud 雲測平臺-多服務框架開源Cloud框架
- 最新高通平臺驅動開發參考文件
- spring cloud構建網際網路分散式微服務雲平臺-服務提供與呼叫SpringCloud分散式微服務
- 區塊鏈商品溯源平臺開發,區塊鏈公共服務系統開發方案區塊鏈