關於儲存庫服務
Repository服務為AEM Forms提供資源儲存和管理服務。 當開發人員建立AEM Forms應用程式時,他們可以將資產部署在儲存庫中,而非檔案系統。 這些資產可以包含任何類型的文宣,包括XML表單、PDF表單(包括Acrobat表單)、表單片段、影像、描述檔、原則、SWF檔案、DDX檔案、XML架構、WSDL檔案和測試資料。
例如,請考慮以下名為Applications/FormsApplication的Forms應用程式:
請注意,FormsFolder中有一個名為Loan.xdp的檔案。 若要存取此表單設計,請指定完整路徑(包括版本):Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
。
有關使用Workbench建立Forms應用程式的資訊,請參閱Workbench幫助。
位於AEM Forms儲存庫中的資源路徑為:
Applications/Application-name/Application-version/Folder.../Filename
以下值顯示一些URI值的示例:
您可以使用網頁瀏覽器來瀏覽AEM Forms Repository。 要瀏覽儲存庫,請在Web瀏覽器中輸入以下URL https://[server name]:[server port]/repository
。 您可以使用網頁瀏覽器來驗證與「使用AEM Forms Repository」(使用AEM Forms資料庫)區段關聯的快速啟動結果。 例如,如果您新增內容至AEM Forms Repository,您就可以在網頁瀏覽器中看到內容。 (請參閱快速入門(SOAP模式):使用Java API編寫資源。)
儲存庫API提供了一些操作,可用來儲存和檢索儲存庫中的資訊。 例如,當處理應用程式時需要資源時,可以獲取資源清單或檢索儲存在儲存庫中的特定資源。
儲存庫API不能用於與Content Services交互(已過時)。 若要與Content Services互動(已過時),請使用「檔案管理API」。
使用儲存庫服務API,您可以完成以下任務:
使用儲存庫API,您無法使用ECM儲存庫管理資源訪問控制、搜索資源或指定資源關係。
將加密的PDF寫入儲存庫時,無法使用自動關係提取功能。 否則,加密的PDF可以儲存在儲存庫中,稍後再擷取。 檢索器可以選擇在從儲存庫檢索PDF後對其進行解密。
有關Repository服務的詳細資訊,請參閱 Services Reference for AEM Forms。
資料夾(資源集合)用於按有組織的組儲存對象(檔案或資源)。 資料夾可以包含資源和其他資料夾,也稱為子資料夾。 資源一次只能儲存在一個資料夾中。
檔案從資料夾繼承訪問控制清單(ACL),子資料夾從其父資料夾繼承ACL。 因此,在建立子資料夾之前,父資料夾必須存在。 IDE僅允許您逐個資料夾進行交互,而不允許逐個檔案進行交互。 您無法對資料夾進行版本化,也無需這樣做;資料夾本身不包含資料。 相反,它只是包含資料之資源的容器。 預設ACL是系統級權限,這意味著用戶必須擁有系統級權限(讀取、寫入、遍歷、管理ACL),直到有人授予他們特定資料夾的權限。 ACL僅在IDE中工作。
有關Repository服務的詳細資訊,請參閱 Services Reference for AEM Forms。
要建立資料夾,請執行以下步驟:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請加入proxy檔案。
建立服務客戶端
在以寫程式方式建立資源集合之前,必須建立連接並提供憑據。 這是通過建立服務客戶端來實現的。
建立資料夾
調用Repository服務方法以建立資源收集,並使用標識資訊(包括其UUID、資料夾名稱和說明)填充資源收集。
將資料夾寫入儲存庫
調用Repository服務方法來寫入資源集合,指定目標資料夾的URI。
另請參閱
使用儲存庫服務API(Java)建立資料夾:
包含專案檔案
將專案檔案加入Java專案的類別路徑中。
建立服務客戶端
使用其建構子並傳遞包含連接屬性的ServiceClientFactory
對象,建立ResourceRepositoryClient
對象。
建立資料夾
要建立資源集合,必須首先建立com.adobe.repository.infomodel.bean.RepositoryInfomodelFactoryBean
對象。
叫用repositoryInfomodelFactoryBean
物件的newResourceCollection
方法,並傳入下列參數:
com.adobe.repository.infomodel.Id
UUID標識符。com.adobe.repository.infomodel.Lid
UUID標識符。java.lang.String
。 例如,FormsFolder
。該方法返回表示新資料夾的com.adobe.repository.infomodel.bean.ResourceCollection
對象。
使用setDescription
方法設定資料夾的說明,並傳入下列參數:
String
。 在此範例中,"test Folder"
是使用.
將資料夾寫入儲存庫
叫用ResourceRepositoryClient
物件的writeResource
方法,並傳入資料夾的URI和ResourceCollection
物件。 例如,資料夾的URI可以是以下值/Applications/FormsApplication/1.0/
。
該方法返回新建立的com.adobe.repository.infomodel.bean.Resource
對象的實例。 例如,您可以叫用com.adobe.repository.infomodel.bean.Resource
物件的getId
方法,以擷取新資源的識別碼值。
另請參閱
使用儲存庫服務API(web service)建立資料夾:
包含專案檔案
建立服務客戶端
使用Microsoft .NET客戶端元件,通過調用其預設建構子建立RepositoryServiceService
對象。 使用包含用戶名和口令的System.Net.NetworkCredential
對象設定其Credentials
屬性。
建立資料夾
使用ResourceCollection
類的預設建構子建立資料夾,並傳遞以下參數:
Id
物件,此物件是透過為Id
類別叫用預設建構函式並指派給Resource
物件的id
欄位來建立。Lid
物件,此物件是透過為Lid
類別叫用預設建構函式並指派給Resource
物件的lid
欄位來建立。Resource
物件的name
欄位。 此示例中使用的名稱為"testfolder"
。Resource
對象的description
欄位。 此示例中使用的說明為"test folder"
。將資料夾寫入儲存庫
叫用RepositoryServiceService
物件的writeResource
方法並傳入下列參數:
ResourceCollection
對象。null
作為其他兩個參數。另請參閱
您可以在儲存庫中的給定位置建立資源。 自然檔案大小受資料庫限制和作業逾時的限制。 在預設組態中,檔案限制為25 MB。 要提高或降低最大檔案大小,必須更改資料庫配置。
寫入資源等同於將資料儲存在儲存庫中。 將資源寫入儲存庫後,儲存庫生態系統中的所有客戶端都可以訪問該資源。 將資源(如XML架構、XDP檔案和XSD檔案)寫入儲存庫時,將根據MIME類型對內容進行解析。 如果支援MIME類型,解析器確定是否與其他內容存在默示關係。 例如,如果階層式樣式表(CSS)有參照通用CSS的相對URL,您也會將通用CSS送出至儲存庫。 兩個資源之間的關係被儲存為不可調整的30天期間的待處理關係。 在30天內將公用CSS提交到儲存庫時,將形成關係。
建立資源時,訪問控制清單(ACL)會從父資料夾繼承。 根資料夾具有系統級權限,直到建立初始資源或資料夾,此時該資源或資料夾將獲得預設ACL權限。
您可以使用Repository服務Java API或web service API以程式設計方式編寫資源。
有關Repository服務的詳細資訊,請參閱 Services Reference for AEM Forms。
要編寫資源,請執行以下步驟:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請加入proxy檔案。
建立服務客戶端
在以寫程式方式讀取資源之前,必須建立連接並提供憑據。 這是通過建立服務客戶端來實現的。
為資源指定目標資料夾的URI
建立包含要讀取的資源URI的字串。 語法包含正斜線,如本例所示:"/path/folder"。
建立資源
調用Repository服務方法建立資源,並使用標識資訊(包括其UUID、資源名稱和說明)填充資源。
指定資源內容
調用儲存庫服務方法以建立資源內容,並將該內容儲存在資源中。
將資源寫入目標資料夾
調用Repository服務方法來寫入資源,指定目標資料夾的URI。
另請參閱
使用Repository服務API(Java)編寫資源:
包含專案檔案
在Java專案的類別路徑中加入用戶端JAR檔案。
建立服務客戶端
使用其建構子並傳遞包含連接屬性的ServiceClientFactory
對象,建立ResourceRepositoryClient
對象。
為資源指定目標資料夾的URI
為資源指定目標資料夾的URI。 在這種情況下,由於名為testResource
的資源將儲存在名為testFolder
的資料夾中,因此該資料夾的URI為"/testFolder"
。 URI儲存為java.lang.String
對象。
建立資源
要建立資源,必須首先建立com.adobe.repository.infomodel.bean.RepositoryInfomodelFactoryBean
對象。
叫用RepositoryInfomodelFactoryBean
物件的newResource
方法,此方法會建立com.adobe.repository.infomodel.bean.Resource
物件。 在本範例中,提供下列參數:
com.adobe.repository.infomodel.Id
對象,通過調用Id
類的預設建構子建立。com.adobe.repository.infomodel.Lid
對象,通過調用Lid
類的預設建構子建立。java.lang.String
。若要指定資源的說明,請叫用Resource
物件的setDescription
方法,並傳遞包含說明的字串。 在此示例中,說明為"test resource"
。
指定資源內容
要為資源建立內容,請調用RepositoryInfomodelFactoryBean
對象的newResourceContent
方法,該方法返回com.adobe.repository.infomodel.bean.ResourceContent
對象。 將內容新增至ResourceContent
物件。 在此示例中,通過執行以下任務來完成此操作:
ResourceContent
物件的setDataDocument
方法並傳入com.adobe.idp.Document
物件ResourceContent
物件的setSize
方法,並傳入Document
物件的大小(位元組)調用Resource
物件的setContent
方法並傳入ResourceContent
物件,將內容新增至資源。 如需詳細資訊,請參閱AEM Forms API參考。
將資源寫入目標資料夾
叫用ResourceRepositoryClient
物件的writeResource
方法,並傳入資料夾的URI以及Resource
物件。
另請參閱
使用Repository服務API(web service)編寫資源:
包含專案檔案
建立服務客戶端
使用Microsoft .NET客戶端元件,通過調用其預設建構子建立RepositoryServiceService
對象。 使用包含用戶名和口令的System.Net.NetworkCredential
對象設定其Credentials
屬性。
為資源指定目標資料夾的URI
為資源指定目標資料夾的URI。 在這種情況下,由於名為testResource
的資源將儲存在名為testFolder
的資料夾中,因此該資料夾的URI為"/testFolder"
。 使用與Microsoft .NET Framework(例如C#)相容的語言時,將URI儲存在System.String
對象中。
建立資源
要建立資源,請調用Resource
類的預設建構子。 在此示例中,以下資訊儲存在Resource
對象中:
com.adobe.repository.infomodel.Id
物件,此物件是透過為Id
類別叫用預設建構函式並指派給Resource
物件的id
欄位來建立。com.adobe.repository.infomodel.Lid
物件,此物件是透過為Lid
類別叫用預設建構函式並指派給Resource
物件的lid
欄位來建立。Resource
對象的name
欄位。 此示例中使用的名稱為"testResource"
。Resource
物件的description
欄位。 此示例中使用的說明為"test resource"
。指定資源內容
要為資源建立內容,請調用ResourceContent
類的預設建構子。 然後,將內容新增至ResourceContent
物件。 在此示例中,通過執行以下任務來完成此操作:
BLOB
對象分配給ResourceContent
對象的dataDocument
欄位。ResourceContent
對象的size
欄位分配BLOB
對象的大小(以位元組為單位)。將ResourceContent
物件指派至Resource
物件的content
欄位,將內容新增至資源。
將資源寫入目標資料夾
叫用RepositoryServiceService
物件的writeResource
方法,並傳入資料夾的URI以及Resource
物件。 傳遞null
作為其他兩個參數。
另請參閱
您可以列出資源來發現資源。 對儲存庫執行查詢,以查找與給定資源集合相關的所有資源。
組織資源後,您就可以檢視結構的特定分支來檢查您建立的結構,就像在作業系統中一樣。
上市資源按關係經營:資源是資料夾的成員。 會籍由「會員」類型的關係所代表。 在指定資料夾中列出資源時,您正在按關係「成員」查詢與指定資料夾相關的資源。 關係是方向性的:關係的成員具有作為目標成員的源。 源頭是資源;目標是父資料夾。
有關Repository服務的詳細資訊,請參閱 Services Reference for AEM Forms。
要列出資源,請執行以下步驟:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請加入proxy檔案。
建立服務客戶端
在以寫程式方式建立資源集合之前,必須建立連接並提供憑據。 這是通過建立服務客戶端來實現的。
指定資料夾路徑
建立包含資源資料夾路徑的字串。 語法包含正斜線,如本例所示:"/path/folder"。
檢索資源清單
調用儲存庫服務方法以檢索資源清單,指定目標資料夾的路徑。
另請參閱
使用Repository服務API(Java)列出資源:
包含專案檔案
在Java專案的類別路徑中加入用戶端JAR檔案。
建立服務客戶端
使用其建構子並傳遞包含連接屬性的ServiceClientFactory
對象,建立ResourceRepositoryClient
對象。
指定資料夾路徑
指定要查詢的資源集合的URI。 在這種情況下,其URI為"/testFolder"
。 URI儲存為java.lang.String
對象。
檢索資源清單
叫用ResourceRepositoryClient
物件的listMembers
方法並傳入資料夾的URI。
該方法返回com.adobe.repository.infomodel.bean.Resource
對象的java.util.List
,該對象是Relation.TYPE_MEMBER_OF
類型com.adobe.repository.infomodel.bean.Relation
的源,並以資源收集URI為目標。 您可重複此List
以檢索每個資源。 在此示例中,將顯示每個資源的名稱和說明。
另請參閱
列出資源。
使用儲存庫服務API(web服務)列出資源:
包含專案檔案
建立服務客戶端
使用Microsoft .NET客戶端元件,通過調用其預設建構子建立RepositoryServiceService
對象。 使用包含用戶名和口令的System.Net.NetworkCredential
對象設定其Credentials
屬性。
指定資料夾路徑
指定包含要查詢的資料夾URI的字串。 在這種情況下,其URI為"/testFolder"
。 使用與Microsoft .NET Framework(例如,C#)相容的語言時,將URI儲存在System.String
對象中。
檢索資源清單
叫用RepositoryServiceService
物件的listMembers
方法,並將資料夾的URI傳入為第一個參數。 傳遞null
作為其他兩個參數。
該方法返回可以轉換到Resource
對象的對象陣列。 您可以循環瀏覽對象陣列以檢索每個相關資源。 在此示例中,將顯示每個資源的名稱和說明。
另請參閱
列出資源。
您可以從儲存庫中的給定位置檢索資源,以讀取其內容和元資料。 工作流由初始化表單作為前端。 此程式具有讀取表單所需的所有權限。 系統檢索資料表單並從儲存庫讀取內容。 儲存庫授予對內容和元資料的訪問權(甚至能夠知道資源存在)。
儲存庫具有以下四種權限類型:
用戶只能在擁有運行進程的權限時運行進程。 IDE用戶需要遍歷和讀取權限才能與儲存庫同步。 ACL僅在設計時才適用,因為運行時是在系統上下文中進行的。
您可以使用Repository服務Java API或web service API以程式設計方式讀取資源。
有關Repository服務的詳細資訊,請參閱 Services Reference for AEM Forms。
要讀取資源,請執行以下步驟:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請加入proxy檔案。
建立服務客戶端
在以寫程式方式讀取資源之前,必須建立連接並提供憑據。 這是通過建立服務客戶端來實現的。
指定要讀取的資源的URI
建立包含要讀取的資源URI的字串。 語法包含正斜線,如本例所示:"/path/resource"。
閱讀資源
調用Repository服務方法讀取資源,指定URI。
另請參閱
使用Repository服務API(Java)讀取資源:
包含專案檔案
在Java專案的類別路徑中加入用戶端JAR檔案。
建立服務客戶端
使用其建構子並傳遞包含連接屬性的ServiceClientFactory
對象,建立ResourceRepositoryClient
對象。
指定要讀取的資源的URI
指定代表要檢索的資源URI的字串值。 例如,假設資源名為testResource(位於名為testFolder的資料夾中),請指定/testFolder/testResource
。
閱讀資源
調用ResourceRepositoryClient
物件的readResource
方法,並將資源的URI作為參數傳遞。 此方法返回表示資源的Resource
實例。
另請參閱
使用Repository服務API(web service)讀取資源:
包含專案檔案
建立服務客戶端
使用Microsoft .NET客戶端元件,通過調用其預設建構子建立RepositoryServiceService
對象。 使用包含用戶名和口令的System.Net.NetworkCredential
對象設定其Credentials
屬性。
指定要讀取的資源的URI
指定包含要檢索的資源URI的字串。 在這種情況下,由於名為testResource
的資源位於名為testFolder
的資料夾中,因此其URI為"/testFolder/testResource"
。 使用與Microsoft .NET Framework(例如C#)相容的語言時,將URI儲存在System.String
對象中。
閱讀資源
叫用RepositoryServiceService
物件的readResource
方法,並將資源的URI傳遞為第一個參數。 傳遞null
作為其他兩個參數。
另請參閱
您可以檢索和更新儲存庫中的資源內容。 更新資源時,這些資源的訪問控制在版本之間保持不變。 執行更新時,您可以選擇增加主要版本。 如果您不選擇增加主要版本,次要版本會自動更新。
更新資源時,將根據指定的資源屬性建立新版本。 在更新資源時,可以指定兩個重要參數:目標URI和包含所有更新元資料的資源實例。 請務必注意,如果您未變更指定屬性(例如,名稱),則在您傳入的例項中仍需要該屬性。 解析內容時建立的關係會新增至特定版本,除非指定,否則不會前移。
例如,如果您更新XDP檔案,且其中包含對其他資源的參考,則也會記錄這些額外的參考。 假設form.xdp 1.0版有兩個外部參照:標誌和樣式表,您隨後會更新form.xdp,以便現在有三個參照:標誌、樣式表和架構檔案。 在更新期間,儲存庫將將第三個關係(到架構檔案)添加到其暫掛關係表。 當架構檔案存在於儲存庫中時,將自動形成關係。 不過,如果form.xdp 2.0版不再使用標誌,form.xdp 2.0版將不會與標誌有任何關係。
所有更新操作都是原子操作和事務操作。 例如,如果兩個用戶讀取了相同的資源,並決定將1.0版更新為2.0版,則其中一個將成功,而另一個將失敗,則儲存庫的完整性將得到維護,並且兩個用戶都將收到確認成功或失敗的消息。 如果事務未提交,則在資料庫出現故障時將回退,並根據應用程式伺服器超時或回退。
您可以使用Repository服務Java API或web service API,以程式設計方式更新資源。
有關Repository服務的詳細資訊,請參閱 Services Reference for AEM Forms。
要更新資源,請執行以下步驟:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請加入proxy檔案。
建立服務客戶端
在以寫程式方式讀取資源之前,必須建立連接並提供憑據。 這是通過建立服務客戶端來實現的。
檢索要更新的資源
閱讀資源。 如需詳細資訊,請參閱閱讀資源。
更新資源
在資源中設定新資訊並調用儲存庫服務方法以更新資源,指定URI、更新的資源以及版本資訊的更新方式。
另請參閱
使用Repository服務API(Java)更新資源:
包含專案檔案
在Java專案的類別路徑中加入用戶端JAR檔案。
建立服務客戶端
使用其建構子並傳遞包含連接屬性的ServiceClientFactory
對象,建立ResourceRepositoryClient
對象。
檢索要更新的資源
指定要檢索和讀取資源的資源的URI。 在此示例中,資源的URI為"/testFolder/testResource"
。
更新資源
更新Resource
物件的資訊。 在此範例中,若要更新說明,請叫用Resource
物件的setDescription
方法,並將新的說明字串傳遞為參數。
然後叫用ServiceClientFactory
物件的updateResource
方法,並傳入下列參數:
java.lang.String
物件。Resource
對象包含更新的資源資訊。boolean
值,指示要更新主版還是次版。 在此範例中,會傳入true
值,以指出主要版本將會增加。另請參閱
使用Repository API(web service)更新資源:
包含專案檔案
建立服務客戶端
使用Microsoft .NET客戶端元件,通過調用其預設建構子建立RepositoryServiceService
對象。 使用包含用戶名和口令的System.Net.NetworkCredential
對象設定其Credentials
屬性。
檢索要更新的資源
指定要檢索並讀取資源的資源的URI。 在此示例中,資源的URI為"/testFolder/testResource"
。 如需詳細資訊,請參閱閱讀資源。
更新資源
更新Resource
物件的資訊。 在此範例中,若要更新說明,請為Resource
物件的description
欄位指派新值。
叫用RepositoryServiceService
物件的updateResource
方法,並傳入下列參數:
System.String
物件。Resource
對象包含更新的資源資訊。boolean
值,指示要更新主版還是次版。 在此範例中,會傳入true
值,以指出主要版本將會增加。null
以取得其餘兩個參數。另請參閱
您可以構建用於搜索儲存庫中資源的查詢,包括歷史記錄、相關資源和屬性。
您可以檢索相關資源以確定表單及其片段之間的相關性。 例如,如果您有表單,您可以決定它使用的片段或外部資源。 如果您有影像,您也可以瞭解哪些表格使用影像。 您也可以使用根據屬性的篩選來搜尋相關資源。 例如,您可以搜尋使用指定名稱之影像的所有表單,或尋找具有指定名稱之表單使用的任何影像。 您也可以使用資源屬性進行搜索。 例如,您可以執行查詢,以查找其名稱以指定字串開頭的所有表單或資源,該字串可能包括「%」和「_」通配符。 請記住,基於屬性的搜索並非基於關係;此類搜索基於您對給定資源有特定知識的假設。
查詢語句
query包含一或多個與條件邏輯連接的語句。 語句由左操作數、運算子和右操作陣列成。 此外,您還可以指定用於搜尋結果的排序順序。 排序順序包含與SQL ORDER BY
子句等效的資訊,並由包含搜索所基於屬性的元素以及指示使用升序或降序的值組成。
您可以使用Repository服務Java API,以程式設計方式搜索資源。 目前,無法使用web service API來搜尋資源。
排序行為
調用ResourceRepositoryClient
物件的searchProperties
方法並指定排序順序時,排序順序不受尊重。 例如,假設您建立了具有三個自定義屬性的資源,其中屬性名為name
、secondName
和asecondName
。 接著,您在屬性名稱上建立排序順序元素,並將ascending
值設定為true
。
然後,您會叫用ResourceRepositoryClient
物件的searchProperties
方法,並依排序順序傳遞。 搜索返回具有三個屬性的正確資源。 但是,屬性不按屬性名稱排序。 它們會依新增順序傳回:name
、secondName
和asecondName
。
有關Repository服務的詳細資訊,請參閱 Services Reference for AEM Forms。
要搜索資源,請執行以下步驟:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請加入proxy檔案。
建立服務客戶端
在以寫程式方式讀取資源之前,必須建立連接並提供憑據。 這是通過建立服務客戶端來實現的。
指定搜尋的目標資料夾
建立包含執行搜索的基本路徑的字串。 語法包含正斜線,如本例所示:"/path/folder"。
指定搜尋中使用的屬性
您可以根據資源中包含的屬性進行搜索。 指定要對其執行搜索的屬性值。
建立搜索中使用的查詢
使用語句和條件構建查詢。 每個語句將指定搜索的基礎屬性、要使用的條件以及要在搜索中使用的屬性值。
建立搜尋結果的排序順序
排序順序由元素組成,每個元素包含搜索中使用的屬性之一和指示使用遞增或遞減順序的值。
搜尋資源
使用資料夾、查詢和排序順序搜尋資源。 此外,請指出搜尋的深度以及要傳回結果數的上限。
從搜索結果中檢索資源
重複返回的資源清單並提取資訊以供進一步處理。
另請參閱
使用儲存庫服務API(Java)搜索資源:
包含專案檔案
在Java專案的類別路徑中加入用戶端JAR檔案。
建立服務客戶端
使用其建構子並傳遞包含連接屬性的ServiceClientFactory
對象,建立ResourceRepositoryClient
對象。
指定搜尋的目標資料夾
指定要執行搜索的基本路徑的URI。 在此示例中,資源的URI為/testFolder
。
指定搜尋中使用的屬性
指定要對其執行搜索的屬性的值。 屬性存在於com.adobe.repository.infomodel.bean.Resource
對象中。 在本例中,將對name屬性進行搜索;因此,會使用包含Resource
物件名稱的java.lang.String
,在本例中為testResource
。
建立搜索中使用的查詢
要建立查詢,請通過調用Query
類的預設建構子建立com.adobe.repository.query.Query
對象,並向查詢添加語句。
要建立語句,請調用com.adobe.repository.query.Query.Statement
類的建構子並傳遞以下參數:
Resource.ATTRIBUTE_NAME
。Query.Statement
類中的靜態常數之一。 在此示例中,使用靜態值Query.Statement.OPERATOR_BEGINS_WITH
。String
,該屬性包含值"testResource"
。調用Query.Statement
物件的setNamespace
方法並傳入com.adobe.repository.infomodel.bean.ResourceProperty
類別中包含的其中一個靜態值,以指定左側運算元的命名空間。 在此範例中,使用ResourceProperty.RESERVED_NAMESPACE_REPOSITORY
。
調用Query
物件的addStatement
方法並傳入Query.Statement
物件,將每個陳述式新增至查詢。
建立搜尋結果的排序順序
要指定搜索結果中使用的排序順序,請通過調用SortOrder
類的預設建構子建立com.adobe.repository.query.sort.SortOrder
對象,並將元素添加到排序順序。
要為排序順序建立元素,請調用com.adobe.repository.query.sort.SortOrder.Element
類的一個建構子。 在此範例中,由於資源的名稱是搜尋的基礎,因此靜態值Resource.ATTRIBUTE_NAME
是第一個參數,而遞增順序(boolean
值true
)是指定為第二個參數。
調用SortOrder
物件的addSortElement
方法並傳入SortOrder.Element
物件,將每個元素新增至排序順序。
搜尋資源
若要根據屬性屬性搜尋resources
,請叫用ResourceRepositoryClient
物件的searchProperties
方法並傳入下列參數:
String
包含執行搜索的基本路徑。 在這種情況下,使用"/testFolder"
。com.adobe.repository.infomodel.bean.ResourceCollection.DEPTH_INFINITE
用於指示將使用基本路徑及其所有資料夾。int
值,指示要從中選擇未分頁結果集的第一行。 在此示例中,指定了0
。int
值,指示要返回的最大結果數。 在此示例中,指定了10
。該方法以指定的排序順序返回Resource
對象的java.util.List
。
從搜索結果中檢索資源
要檢索搜索結果中包含的資源,請循環瀏覽List
並將每個對象轉換到Resource
以提取其資訊。 在此示例中,將顯示每個資源的名稱。
另請參閱
您可以指定儲存庫中資源之間的關係。 有三種關係:
您可以建立自己的自訂關係。 例如,如果將HTML檔案儲存在儲存庫中,並且它使用影像,則可以指定將HTML檔案與影像關聯的自定義關係(因為通常只有XML檔案與使用儲存庫定義的依賴關係的影像關聯)。 自定義關係的另一個示例是,如果希望使用循環圖結構而不是樹結構來構建儲存庫的不同視圖。 您可以定義圓形圖和檢視器來遍歷這些關係。 最後,您可以指出資源會取代另一個資源,即使兩個資源完全不同。 在這種情況下,您可以定義保留範圍以外的關係類型,並在這兩個資源之間建立關係。 您的應用程式將是唯一可偵測和處理關係的用戶端,而且可用來搜尋該關係。
您可以使用Repository服務Java API或web service API,以程式設計方式指定資源之間的關係。
有關Repository服務的詳細資訊,請參閱 Services Reference for AEM Forms。
要指定兩個資源之間的關係,請執行以下步驟:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請加入proxy檔案。
建立服務客戶端
在以寫程式方式讀取資源之前,必須建立連接並提供憑據。 這是通過建立服務客戶端來實現的。
指定要關聯的資源的URI
建立包含要關聯的資源的URI的字串。 語法包含正斜線,如本例所示:"/path/resource"。
建立關係
調用儲存庫服務方法以建立並指定關係類型。
另請參閱
使用Repository服務Java API建立關係資源,執行以下任務:
包含專案檔案
在Java專案的類別路徑中加入用戶端JAR檔案。
建立服務客戶端
使用其建構子並傳遞包含連接屬性的ServiceClientFactory
對象,建立ResourceRepositoryClient
對象。
指定要關聯的資源的URI
指定要關聯的資源的URI。 在這種情況下,由於資源名為testResource1
和testResource2
,並位於名為testFolder
的資料夾中,因此其URI為"/testFolder/testResource1"
和"/testFolder/testResource2"
。 URI儲存為java.lang.String
對象。 在此示例中,資源首先寫入儲存庫,並檢索其URI。 有關編寫資源的詳細資訊,請參閱編寫資源。
建立關係
叫用ResourceRepositoryClient
物件的createRelationship
方法並傳入下列參數:
com.adobe.repository.infomodel.bean.Relation
類中的靜態常數之一。 在此示例中,通過指定值Relation.TYPE_DEPENDANT_OF
來建立依賴關係。boolean
值,指示是否將目標資源自動更新為新頭資源的基於com.adobe.repository.infomodel.Id
的標識符。 在此示例中,由於依賴關係,指定值true
。您也可以叫用ResourceRepositoryClient
物件的getRelated
方法並傳入下列參數,以擷取特定資源的相關資源清單:
"/testFolder/testResource1"
)。boolean
值,指示指定的資源是否是關係中的源資源。 在此示例中,指定值true
,因為此情況。Relation
類中的靜態常數之一。 在此示例中,通過使用先前使用的相同值來指定從屬關係:Relation.TYPE_DEPENDANT_OF
。getRelated
方法返回Resource
對象的java.util.List
,通過<a2/>對象可循環檢索每個相關資源,並將List
中包含的對象按順序傳送到Resource
。 在此示例中,testResource2
應該位於返回的資源清單中。
另請參閱
快速入門(SOAP模式):使用Java API建立資源之間的關係
使用Repository API(web service)建立關係資源:
包含專案檔案
建立服務客戶端
使用Microsoft .NET客戶端元件,通過調用其預設建構子建立RepositoryServiceService
對象。 使用包含用戶名和口令的System.Net.NetworkCredential
對象設定其Credentials
屬性。
指定要關聯的資源的URI
指定要關聯的資源的URI。 在這種情況下,由於資源名為testResource1
和testResource2
,並位於名為testFolder
的資料夾中,因此其URI為"/testFolder/testResource1"
和"/testFolder/testResource2"
。 使用與Microsoft .NET Framework(例如,C#)相容的語言時,URI將儲存為System.String
對象。 在此示例中,資源首先寫入儲存庫,並檢索其URI。 有關編寫資源的詳細資訊,請參閱編寫資源。
建立關係
叫用RepositoryServiceService
物件的createRelationship
方法並傳入下列參數:
3
來建立依賴關係。boolean
值,指示是否已指定關係類型。 在此示例中,指定了值true
。boolean
值,指示是否將目標資源自動更新為新頭資源的基於Id
的標識符。 在此示例中,由於依賴關係,指定值true
。boolean
值,指示是否指定了目標頭。 在此示例中,指定了值true
。null
作為最後一個參數。您也可以叫用RepositoryServiceService
物件的getRelated
方法並傳入下列參數,以擷取特定資源的相關資源清單:
"/testFolder/testResource1"
)。boolean
值,指示指定的資源是否是關係中的源資源。 在此示例中,指定值true
,因為此情況。boolean
值,指示是否指定了源資源。 在此示例中,提供了值true
。3
。null
以取得其餘兩個參數。getRelated
方法返回可以轉換到Resource
對象的對象陣列,您可以通過這些對象進行迭代以檢索每個相關資源。 在此示例中,testResource2
應該位於返回的資源清單中。
另請參閱
您可以鎖定資源或一組資源供特定使用者獨佔使用或在多個使用者間共用使用。 共用鎖表示資源將發生某些情況,但並不阻止其他人對該資源執行操作。 應將共用鎖視為信令機制。 獨佔鎖定表示鎖定資源的用戶將更改資源,而鎖定確保在用戶不再需要訪問資源並釋放鎖定之前,其他任何用戶都不能更改。 如果儲存庫管理員解除了資源的鎖定,則該資源上的所有獨佔鎖定和共用鎖定都將自動刪除。 此類操作適用於用戶不再可用且未解鎖資源的情況。
鎖定資源時,當您查看「工作台」中的「資源」頁籤時,將顯示鎖定表徵圖,如下圖所示。
您可以使用Repository服務Java API或web服務API,以程式設計方式控制對資源的存取。
有關Repository服務的詳細資訊,請參閱 Services Reference for AEM Forms。
要鎖定和解除鎖定資源,請執行以下步驟:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請加入proxy檔案。
建立服務客戶端
在以寫程式方式讀取資源之前,必須建立連接並提供憑據。 這是通過建立服務客戶端來實現的。
指定要鎖定的資源的URI
建立包含要鎖定的資源的URI的字串。 語法包含正斜線,如本例所示:"/path/resource"。
鎖定資源
調用儲存庫服務方法以鎖定資源,指定URI、鎖定類型和鎖定深度。
檢索資源的鎖
調用Repository服務方法以檢索資源的鎖,指定URI。
解除鎖定資源
調用儲存庫服務方法以解鎖資源,指定URI。
另請參閱
使用Repository服務API(Java)鎖定資源:
包含專案檔案
在Java專案的類別路徑中加入用戶端JAR檔案。
建立服務客戶端
使用其建構子並傳遞包含連接屬性的ServiceClientFactory
對象,建立ResourceRepositoryClient
對象。
指定要鎖定的資源的URI
指定要鎖定的資源的URI。 在這種情況下,由於名為testResource
的資源位於名為testFolder
的資料夾中,因此其URI為"/testFolder/testResource"
。 URI儲存為java.lang.String
對象。
鎖定資源
叫用ResourceRepositoryClient
物件的lockResource
方法並傳入下列參數:
com.adobe.repository.infomodel.bean.Lock.SCOPE_EXCLUSIVE
。Lock.DEPTH_ZERO
。需要四個參數的lockResource
方法的過載版本會引發異常。 請確定使用lockResource
方法,該方法需要三個參數,如本逐步說明所示。
檢索資源的鎖
調用ResourceRepositoryClient
物件的getLocks
方法,並將資源的URI作為參數傳遞。 該方法返回可循環使用的鎖定對象清單。 在此範例中,會針對每個物件分別呼叫每個Lock物件的getOwnerUserId
、getDepth
和getType
方法,以列印鎖定擁有者、深度和範圍。
解除鎖定資源
調用ResourceRepositoryClient
物件的unlockResource
方法,並將資源的URI作為參數傳遞。 如需詳細資訊,請參閱AEM Forms API參考。
另請參閱
使用Repository服務API(web service)鎖定資源:
包含專案檔案
建立服務客戶端
使用Microsoft .NET客戶端元件,通過調用其預設建構子建立RepositoryServiceService
對象。 使用包含用戶名和口令的System.Net.NetworkCredential
對象設定其Credentials
屬性。
指定要鎖定的資源的URI
指定包含要鎖定的資源URI的字串。 在這種情況下,由於名為testResource
的資源位於testFolder
資料夾中,其URI為"/testFolder/testResource"
。 使用與Microsoft .NET Framework(例如C#)相容的語言時,將URI儲存在System.String
對象中。
鎖定資源
叫用RepositoryServiceService
物件的lockResource
方法並傳入下列參數:
11
。2
。int
值,指示鎖過期前的秒數。 在此示例中,使用1000
的值。null
作為最後一個參數。檢索資源的鎖
調用RepositoryServiceService
物件的getLocks
方法,並將資源的URI傳遞為第一個參數,而將null
傳遞為第二個參數。 該方法返回包含Lock
對象的object
陣列,可通過該陣列進行迭代。 在此示例中,通過分別訪問每個Lock
對象的ownerUserId
、depth
和type
欄位,可打印每個對象的鎖所有者、深度和範圍。
解除鎖定資源
調用RepositoryServiceService
物件的unlockResource
方法,並將資源的URI傳遞為第一個參數,而將null
傳遞為第二個參數。
另請參閱
可以使用Repository服務Java API(SOAP)從儲存庫中的給定位置以寫程式方式刪除資源。
刪除資源時,刪除通常是永久的,但在某些情況下,ECM儲存庫可能會根據其歷史記錄機制儲存資源的版本。 因此,刪除資源時,務必確保您不再需要該資源。 刪除資源的常見原因包括需要增加資料庫中的可用空間。 您可以刪除資源的版本,但是,如果這樣做,則必須指定資源標識符,而不是其邏輯標識符(LID)或路徑。 如果您刪除資料夾,該資料夾中的所有項目(包括子資料夾和資源)都會自動刪除。
相關資源不會刪除。 例如,如果您有使用logo.gif檔案的表單,而您刪除logo.gif,則關係會儲存在待定關係表格中。 另外,若要取代版本,請將最新版本的物件狀態設定為不再提倡。
刪除操作在ECM系統中不是事務安全的。 例如,如果您嘗試刪除100個資源,而第50個資源上的操作失敗,則前49個實例將被刪除,但其餘實例將不刪除。 否則,預設行為是回滾(非承諾)。
將com.adobe.repository.bindings.dsc.client.ResourceRepositoryClient.deleteResources()
方法與ECM儲存庫(EMC Documentum Content Server和IBM FileNet P8 Content Manager)一起使用時,如果某個指定資源的刪除失敗,則不會回退事務,這意味著無法刪除那些已刪除的檔案。
有關Repository服務的詳細資訊,請參閱 Services Reference for AEM Forms。
要刪除資源,請執行以下步驟:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請加入proxy檔案。
建立服務客戶端
在以寫程式方式讀取資源之前,必須建立連接並提供憑據。 這是通過建立服務客戶端來實現的。
指定要刪除的資源的URI
建立包含要刪除的資源的URI的字串。 語法包含正斜線,如本例所示:"/path/resource"。 如果要刪除的資源是資料夾,則刪除將是遞歸的。
刪除資源
調用Repository服務方法以刪除資源,指定URI。
另請參閱
使用儲存庫API(Java)刪除資源:
包含專案檔案
在Java專案的類別路徑中加入用戶端JAR檔案。
建立服務客戶端
使用其建構子並傳遞包含連接屬性的ServiceClientFactory
對象,建立ResourceRepositoryClient
對象。
指定要刪除的資源的URI
指定要檢索的資源的URI。 在這種情況下,由於名為testResourceToBeDeleted的資源位於名為testFolder的資料夾中,因此其URI為/testFolder/testResourceToBeDeleted
。 URI儲存為java.lang.String
對象。 在此示例中,資源首先寫入儲存庫,並檢索其URI。 有關編寫資源的詳細資訊,請參閱編寫資源。
刪除資源
調用ResourceRepositoryClient
物件的deleteResource
方法,並將資源的URI作為參數傳遞。
另請參閱
使用儲存庫API(web服務)刪除資源:
包含專案檔案
建立服務客戶端
使用Microsoft .NET客戶端元件,通過調用其預設建構子建立RepositoryServiceService
對象。 使用包含用戶名和口令的System.Net.NetworkCredential
對象設定其Credentials
屬性。
指定要刪除的資源的URI
指定要檢索的資源的URI。 在這種情況下,由於名為testResourceToBeDeleted
的資源位於名為testFolder
的資料夾中,因此其URI為"/testFolder/testResourceToBeDeleted"
。 在此示例中,資源首先寫入儲存庫,並檢索其URI。 有關編寫資源的詳細資訊,請參閱編寫資源。
刪除資源
調用RepositoryServiceService
物件的deleteResources
方法,並傳遞包含資源URI作為第一個參數的System.String
陣列。 傳遞null
作為第二個參數。
另請參閱