使用AEM Forms存放庫 working-with-aem-forms-repository
本檔案中的範例和範例僅適用於JEE環境上的AEM Forms 。
關於存放庫服務
存放庫服務提供給AEM Forms的資源儲存和管理服務。 當開發人員建立 AEM Forms 應用程式後,他們便可以部署存放庫中的資產,而非檔案系統。 資產可包括任何型別的附屬資料,包括XML表單、PDF forms(包括Acrobat表單)、表單片段、影像、設定檔、原則、SWF檔案、DDX檔案、XML結構描述、WSDL檔案和測試資料。
例如,考慮以下名為的Forms應用程式 Applications/FormsApplication:
請注意,FormsFolder中有一個名為Loan.xdp的檔案。 若要存取此表單設計,請指定完整路徑(包括版本): Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.
AEM Forms存放庫中的資源路徑為:
Applications/Application-name/Application-version/Folder.../Filename
下列值顯示一些URI值的範例:
- Applications/AppraisalReport/1.0/Forms/FullForm.xdp
- Applications/AnotherApp/1.1/Assets/picture.jpg
- Applications/SomeApp/2.0/Resources/Data/XSDs/MyData.xsd
https://[server name]:[server port]/repository
. 您可以使用網頁瀏覽器來驗證與「使用AEM Forms存放庫」區段關聯的快速入門結果。 例如,如果您將內容新增至AEM Forms存放庫,即可在網頁瀏覽器中檢視內容。 (請參閱 快速入門(SOAP模式):使用Java API編寫資源.)存放庫API提供數個操作,可用於儲存和擷取存放庫中的資訊。 例如,當處理應用程式時需要資源時,您可以取得資源清單或擷取儲存於儲存庫中的特定資源。
使用存放庫服務API,您可以完成下列工作:
建立資料夾 creating-folders
資料夾(資源集合)可用來將物件(檔案或資源)儲存在有組織的群組中。 資料夾可以包含資源和其他資料夾,也稱為子資料夾。 資源一次只能儲存在一個資料夾中。
檔案從資料夾繼承存取控制清單(ACL),子資料夾從其父資料夾繼承ACL。 因此,您必須先存在父資料夾,才能建立子資料夾。 IDE僅允許您逐個資料夾進行互動,而不是逐個檔案進行互動。 您無法設定資料夾的版本,因此不需要設定版本;資料夾本身並不包含資料。 相反地,它只是包含資料之資源的容器。 預設ACL是系統層級的許可權,這表示使用者必須具有系統層級的許可權(讀取、寫入、周遊、管理ACL),直到有人授予他們特定檔案夾的許可權為止。 ACL只能在IDE中運作。
步驟摘要 summary-of-steps
若要建立資料夾,請執行下列步驟:
- 包含專案檔案。
- 建立服務使用者端。
- 建立資料夾。
- 將資料夾寫入存放庫。
包含專案檔案
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請包含Proxy檔案。
建立服務使用者端
您必須先建立連線並提供認證,才能以程式設計方式建立資源集合。 這是透過建立服務使用者端來完成。
建立資料夾
叫用存放庫服務方法建立資源集合,並以識別資訊(包括其UUID、資料夾名稱和說明)填入資源集合。
將資料夾寫入存放庫
叫用存放庫服務方法來寫入資源集合,指定目標資料夾的URI。
另請參閱
使用Java API建立資料夾 create-folders-using-the-java-api
使用存放庫服務API (Java)建立資料夾:
-
包含專案檔案
將專案檔案包含在Java專案的類別路徑中。
-
建立服務使用者端
建立
ResourceRepositoryClient
物件,使用它的建構函式傳遞ServiceClientFactory
包含連線屬性的物件。 -
建立資料夾
若要建立資源集合,您必須先建立
com.adobe.repository.infomodel.bean.RepositoryInfomodelFactoryBean
物件。叫用
repositoryInfomodelFactoryBean
物件的newResourceCollection
方法,並傳入下列引數:- A
com.adobe.repository.infomodel.Id
要指派給資源的UUID識別碼。 - A
com.adobe.repository.infomodel.Lid
要指派給資源的UUID識別碼。 - A
java.lang.String
包含資源集合的名稱。 例如,FormsFolder
。
方法會傳回
com.adobe.repository.infomodel.bean.ResourceCollection
代表新資料夾的物件。使用設定資料夾的說明
setDescription
方法並傳遞下列引數:- A
String
描述資源集合。 在此範例中,"test Folder"
已使用.
- A
-
將資料夾寫入存放庫
叫用
ResourceRepositoryClient
物件的writeResource
方法並傳入資料夾的URI和ResourceCollection
物件。 例如,資料夾的URI可以是以下值/Applications/FormsApplication/1.0/
.方法會傳回新建立的例項
com.adobe.repository.infomodel.bean.Resource
物件。 例如,您可以透過叫用com.adobe.repository.infomodel.bean.Resource
物件的getId
方法。
另請參閱
使用Web服務API建立資料夾 create-folders-using-the-web-service-api
使用存放庫服務API (Web服務)建立資料夾:
-
包含專案檔案
- 使用base64建立使用存放庫WSDL的Microsoft .NET使用者端元件。
- 參考Microsoft .NET使用者端元件。
-
建立服務使用者端
使用Microsoft .NET使用者端元件,建立
RepositoryServiceService
物件(透過叫用其預設建構函式)。 設定其Credentials
屬性使用System.Net.NetworkCredential
包含使用者名稱和密碼的物件。 -
建立資料夾
使用預設建構函式建立資料夾
ResourceCollection
類別並傳遞下列引數:- 一個
Id
物件,其建立方式為叫用預設建構函式Id
類別並指派至Resource
物件的id
欄位。 - 一個
Lid
物件,其建立方式為叫用預設建構函式Lid
類別並指派至Resource
物件的lid
欄位。 - 包含資源集合名稱的字串,該資源集合會指派給
Resource
物件的name
欄位。 此範例中使用的名稱為"testfolder"
. - 包含資源集合說明的字串,該資源集合說明已指派給
Resource
物件的description
欄位。 此範例中使用的說明為"test folder"
.
- 一個
-
將資料夾寫入存放庫
叫用
RepositoryServiceService
物件的writeResource
方法並傳遞下列引數:- 要建立資料夾的路徑。
- 此
ResourceCollection
代表資料夾的物件。 - 通過
null
其他兩個引數的。
另請參閱
寫入資源 writing-resources
您可以在存放庫中的指定位置中建立資源。 自然檔案大小受資料庫限制和工作階段逾時的影響。 對於預設設定,檔案限製為25 MB。 若要提高或降低檔案大小上限,您必須變更資料庫組態。
寫入資源等同於將資料儲存在存放庫中。 將資源寫入存放庫後,存放庫生態系統中的所有使用者端都可以存取該資源。 將資源(例如XML結構描述、XDP檔案和XSD檔案)寫入存放庫時,會根據MIME型別來剖析內容。 如果支援MIME型別,剖析器會判斷是否與其他內容有隱含的關係。 例如,如果階層式樣式表(CSS)具有參照一般CSS的相對URL,您應該也會將一般CSS提交至存放庫。 兩個資源之間的關係會儲存為未決關係,為期30天的不可調整期間。 當您在30天內將通用CSS提交至存放庫時,就會建立關係。
當您建立資源時,存取控制清單(ACL)繼承自父資料夾。 在建立初始資源或資料夾之前,根資料夾具有系統層級的許可權,此時資源或資料夾會獲得預設ACL許可權。
您可以使用存放庫服務Java API或Web服務API,以程式設計方式編寫資源。
步驟摘要 summary_of_steps-1
若要寫入資源,請遵循下列步驟:
- 包含專案檔案。
- 建立存放庫服務使用者端。
- 指定要讀取的資源的URI。
- 讀取資源。
包含專案檔案
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請包含Proxy檔案。
建立服務使用者端
您必須先建立連線並提供認證,才能以程式設計方式讀取資源。 這是透過建立服務使用者端來完成。
指定資源目標資料夾的URI
建立包含要讀取之資源的URI的字串。 語法包括正斜線,如以下範例所示:「/路徑/資料夾「。
建立資源
叫用存放庫服務方法來建立資源,並將識別資訊(包括其UUID、資源名稱和說明)填入資源。
指定資源內容
叫用存放庫服務方法來建立資源內容,並將該內容儲存在資源中。
將資源寫入目標資料夾
叫用存放庫服務方法來寫入資源,指定目標資料夾的URI。
另請參閱
使用Java API寫入資源 write-resources-using-the-java-api
使用存放庫服務API (Java)編寫資源:
-
包含專案檔案
在您的Java專案的類別路徑中包含使用者端JAR檔案。
-
建立服務使用者端
建立
ResourceRepositoryClient
物件,使用它的建構函式傳遞ServiceClientFactory
包含連線屬性的物件。 -
指定資源目標資料夾的URI
指定資源之目標資料夾的URI。 在此案例中,因為指定的資源
testResource
將會儲存在名為的資料夾中testFolder
,資料夾的URI為"/testFolder"
. URI會儲存為java.lang.String
物件。 -
建立資源
若要建立資源,您必須先建立
com.adobe.repository.infomodel.bean.RepositoryInfomodelFactoryBean
物件。叫用
RepositoryInfomodelFactoryBean
物件的newResource
方法,會建立com.adobe.repository.infomodel.bean.Resource
物件。 此範例中提供下列引數:- A
com.adobe.repository.infomodel.Id
物件,其建立方式為叫用預設建構函式Id
類別。 - A
com.adobe.repository.infomodel.Lid
物件,其建立方式為叫用預設建構函式Lid
類別。 - A
java.lang.String
包含資源的檔案名稱。
若要指定資源的說明,請叫用
Resource
物件的setDescription
方法並傳遞包含說明的字串。 在此範例中,說明為"test resource"
. - A
-
指定資源內容
若要建立資源的內容,請叫用
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
物件。
另請參閱
使用網站服務API寫入資源 write-resources-using-the-web-service-api
使用存放庫服務API (Web服務)寫入資源:
-
包含專案檔案
- 使用base64建立使用存放庫WSDL的Microsoft .NET使用者端元件。
- 參考Microsoft .NET使用者端元件。
-
建立服務使用者端
使用Microsoft .NET使用者端元件,建立
RepositoryServiceService
物件(透過叫用其預設建構函式)。 設定其Credentials
屬性使用System.Net.NetworkCredential
包含使用者名稱和密碼的物件。 -
指定資源目標資料夾的URI
指定資源之目標資料夾的URI。 在此案例中,因為指定的資源
testResource
將會儲存在名為的資料夾中testFolder
,資料夾的URI為"/testFolder"
. 使用與Microsoft .NET Framework相容的語言時(例如C#),請將URI儲存在System.String
物件。 -
建立資源
若要建立資源,請叫用預設建構函式
Resource
類別。 在此範例中,下列資訊儲存在Resource
物件:- A
com.adobe.repository.infomodel.Id
物件,其建立方式為叫用預設建構函式Id
類別並指派至Resource
物件的id
欄位。 - A
com.adobe.repository.infomodel.Lid
物件,其建立方式為叫用預設建構函式Lid
類別並指派至Resource
物件的lid
欄位。 - 包含指派給之資源的檔案名稱的字串
Resource
物件的name
欄位。 此範例中使用的名稱為"testResource"
. - 包含資源說明(已指派給
Resource
物件的description
欄位。 此範例中使用的說明為"test resource"
.
- A
-
指定資源內容
若要建立資源的內容,請叫用的預設建構函式
ResourceContent
類別。 然後將內容新增至ResourceContent
物件。 在此範例中,這是透過執行下列工作來完成:- 指派
BLOB
包含檔案的物件ResourceContent
物件的dataDocument
欄位。 - 指派的大小(位元組)
BLOB
物件至ResourceContent
物件的size
欄位。
透過指派以下專案將內容新增到資源
ResourceContent
物件至Resource
物件的content
欄位。 - 指派
-
將資源寫入目標資料夾
叫用
RepositoryServiceService
物件的writeResource
方法,並在資料夾的URI中傳遞,以及Resource
物件。 通過null
其他兩個引數的。
另請參閱
列出資源 listing-resources
您可以透過列出資源來探索資源。 對存放庫執行查詢,以尋找與指定資源集合相關的所有資源。
組織資源後,您可以透過檢視結構的特定分支來檢查您建立的結構,就像在作業系統中一樣。
列出資源會依關係操作:資源是資料夾的成員。 成員資格由「成員」型別的關係表示。 當您在指定的資料夾中列出資源時,會透過關係「成員」查詢與指定資料夾相關的資源。 關係具有方向性:關係的成員具有作為目標成員的來源。 來源是資源;目標是父資料夾。
步驟摘要 summary_of_steps-2
若要列出資源,請遵循下列步驟:
- 包含專案檔案。
- 建立服務使用者端。
- 指定資料夾路徑。
- 擷取資源清單。
包含專案檔案
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請包含Proxy檔案。
建立服務使用者端
您必須先建立連線並提供認證,才能以程式設計方式建立資源集合。 這是透過建立服務使用者端來完成。
指定資料夾路徑
建立包含資源之資料夾路徑的字串。 語法包括正斜線,如以下範例所示:「/路徑/資料夾「。
擷取資源清單
叫用存放庫服務方法來擷取資源清單,指定目標資料夾的路徑。
另請參閱
使用Java API列出資源 list-resources-using-the-java-api
使用存放庫服務API (Java)列出資源:
-
包含專案檔案
在您的Java專案的類別路徑中包含使用者端JAR檔案。
-
建立服務使用者端
建立
ResourceRepositoryClient
物件,使用它的建構函式傳遞ServiceClientFactory
包含連線屬性的物件。 -
指定資料夾路徑
指定要查詢之資源集合的URI。 在此案例中,其URI為
"/testFolder"
. URI會儲存為java.lang.String
物件。 -
擷取資源清單
叫用
ResourceRepositoryClient
物件的listMembers
方法並傳入資料夾的URI。方法會傳回
java.util.List
之com.adobe.repository.infomodel.bean.Resource
物件,即來源物件com.adobe.repository.infomodel.bean.Relation
型別Relation.TYPE_MEMBER_OF
並將資源集合URI作為目標。 您可以逐一檢視此List
以擷取每個資源。 在此範例中,會顯示每個資源的名稱和說明。
另請參閱
列出資源.
使用網站服務API列出資源 list-resources-using-the-web-service-api
使用存放庫服務API (Web服務)列出資源:
-
包含專案檔案
- 建立使用存放庫WSDL的Microsoft .NET使用者端元件。
- 參考Microsoft .NET使用者端元件。
-
建立服務使用者端
使用Microsoft .NET使用者端元件,建立
RepositoryServiceService
物件(透過叫用其預設建構函式)。 設定其Credentials
屬性使用System.Net.NetworkCredential
包含使用者名稱和密碼的物件。 -
指定資料夾路徑
指定包含要查詢之資料夾URI的字串。 在此案例中,其URI為
"/testFolder"
. 使用與Microsoft .NET Framework相容的語言時(例如C#),請將URI儲存在System.String
物件。 -
擷取資源清單
叫用
RepositoryServiceService
物件的listMembers
方法,並傳入資料夾的URI作為第一個引數。 通過null
其他兩個引數的。方法會傳回可轉換為的物件陣列
Resource
物件。 您可以逐一檢視物件陣列,以擷取每個相關資源。 在此範例中,會顯示每個資源的名稱和說明。
另請參閱
列出資源.
正在讀取資源 reading-resources
您可以從儲存庫中的指定位置擷取資源,以讀取其內容和中繼資料。 工作流程會以初始化表單作為前端。 此程式具有讀取表單所需的所有許可權。 系統會擷取資料表單,並從存放庫讀取內容。 存放庫會授予內容和中繼資料的存取權(甚至知道資源存在的能力)。
存放庫有以下四種許可權型別:
- 周遊:可讓您列出資源;也就是說,可讀取資源中繼資料,而非資源內容
- 讀取:可讓您讀取資源內容
- 寫入:可讓您編寫資源內容
- 管理存取控制清單(ACL):可讓您操控資源上的ACL
使用者只有在其擁有執行流程的許可權時,才能執行流程。 IDE使用者需要周遊和讀取許可權,才能與存放庫同步。 ACL只會在設計時套用,因為執行階段發生在系統內容中。
您可以使用存放庫服務Java API或Web服務API,以程式設計方式讀取資源。
步驟摘要 summary_of_steps-3
若要讀取資源,請執行下列步驟:
- 包含專案檔案。
- 建立存放庫服務使用者端。
- 指定要讀取的資源的URI。
- 讀取資源。
包含專案檔案
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請包含Proxy檔案。
建立服務使用者端
您必須先建立連線並提供認證,才能以程式設計方式讀取資源。 這是透過建立服務使用者端來完成。
指定要讀取的資源的URI
建立包含要讀取之資源的URI的字串。 語法包括正斜線,如以下範例所示:「/路徑/resource「。
讀取資源
叫用存放庫服務方法來讀取資源,指定URI。
另請參閱
使用Java API讀取資源 read-resources-using-the-java-api
使用存放庫服務API (Java)讀取資源:
-
包含專案檔案
在您的Java專案的類別路徑中包含使用者端JAR檔案。
-
建立服務使用者端
建立
ResourceRepositoryClient
物件,使用它的建構函式傳遞ServiceClientFactory
包含連線屬性的物件。 -
指定要讀取的資源的URI
指定代表要擷取之資源URI的字串值。 例如,假設資源名為 testResource 位於名為的資料夾中 testFolder,指定
/testFolder/testResource
. -
讀取資源
叫用
ResourceRepositoryClient
物件的readResource
方法並傳遞資源的URI作為引數。 此方法會傳回Resource
代表資源的執行個體。
另請參閱
使用網站服務API讀取資源 reading-resources-using-the-web-service-api
使用存放庫服務API (Web服務)讀取資源:
-
包含專案檔案
- 建立使用存放庫WSDL的Microsoft .NET使用者端元件。 (請參閱 建立使用Base64編碼的.NET使用者端元件.)
- 參考Microsoft .NET使用者端元件。 (請參閱 建立使用Base64編碼的.NET使用者端元件.)
-
建立服務使用者端
使用Microsoft .NET使用者端元件,建立
RepositoryServiceService
物件(透過叫用其預設建構函式)。 設定其Credentials
屬性使用System.Net.NetworkCredential
包含使用者名稱和密碼的物件。 -
指定要讀取的資源的URI
指定包含要擷取之資源URI的字串。 在此案例中,因為指定的資源
testResource
在名為的資料夾中testFolder
,其URI為"/testFolder/testResource"
. 使用與Microsoft .NET Framework相容的語言時(例如C#),請將URI儲存在System.String
物件。 -
讀取資源
叫用
RepositoryServiceService
物件的readResource
方法並傳遞資源的URI作為第一個引數。 通過null
其他兩個引數的。
另請參閱
更新資源 updating-resources
您可以擷取並更新存放庫中的資源內容。 更新資源時,這些資源的存取控制在各版本之間保持不變。 執行更新時,您可以選擇增加主要版本。 如果您不選擇遞增主要版本,則會自動更新次要版本。
更新資源時,會根據指定的資源屬性建立新版本。 更新資源時,請指定兩個重要引數:目標URI和包含所有已更新中繼資料的資源執行個體。 請務必注意,如果您未變更特定屬性(例如名稱),則在您傳入的執行個體中仍需要該屬性。 剖析內容時建立的關係會新增至特定版本,除非另有指定,否則不會轉寄。
例如,如果您更新XDP檔案並且它包含對其他資源的參照,則也會記錄這些額外的參照。 假設form.xdp 1.0版有兩個外部參照:一個標誌和一個樣式表,而您之後更新了form.xdp,使其現在有三個參照:一個標誌、一個樣式表和一個結構描述檔案。 在更新期間,存放庫會將第三個關係(到結構描述檔案)新增到其暫止關係表中。 一旦結構描述檔案出現在存放庫中,關係就會自動形成。 不過,如果form.xdp 2.0版不再使用標誌,form.xdp 2.0版將不會與標誌有關係。
所有更新操作都是原子式且交易式。 例如,如果兩個使用者讀取相同的資源,並且都決定將1.0版更新為2.0版,則其中一個將成功,而其中一個將失敗,將維護存放庫的完整性,並且兩個使用者都將收到確認成功或失敗的訊息。 如果交易未認可,則會在資料庫失敗時回覆,並會逾時或回覆,視應用程式伺服器而定。
您可以使用存放庫服務Java API或網站服務API,以程式設計方式更新資源。
步驟摘要 summary_of_steps-4
若要更新資源,請遵循下列步驟:
- 包含專案檔案。
- 建立存放庫服務使用者端。
- 擷取要更新的資源。
- 更新資源。
包含專案檔案
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請包含Proxy檔案。
建立服務使用者端
您必須先建立連線並提供認證,才能以程式設計方式讀取資源。 這是透過建立服務使用者端來完成。
擷取要更新的資源
讀取資源。 如需詳細資訊,請參閱 正在讀取資源.
更新資源
在資源中設定新資訊,並叫用存放庫服務方法來更新資源,指定URI、更新的資源以及應該如何更新版本資訊。
另請參閱
使用Java API更新資源 update-resources-using-the-java-api
使用存放庫服務API (Java)更新資源:
-
包含專案檔案
在您的Java專案的類別路徑中包含使用者端JAR檔案。
-
建立服務使用者端
建立
ResourceRepositoryClient
物件,使用它的建構函式傳遞ServiceClientFactory
包含連線屬性的物件。 -
擷取要更新的資源
指定要擷取及讀取資源的資源URI。 在此範例中,資源的URI為
"/testFolder/testResource"
. -
更新資源
更新
Resource
物件的資訊。 在此範例中,若要更新說明,請叫用Resource
物件的setDescription
方法,並將新說明字串作為引數傳遞。然後叫用
ServiceClientFactory
物件的updateResource
方法,並傳入下列引數:- A
java.lang.String
包含資源URI的物件。 - 此
Resource
包含已更新資源資訊的物件。 - A
boolean
指示要更新主要版本或次要版本的值。 在此範例中,值為true
會傳入,指出主要版本要增加。
- A
另請參閱
使用網站服務API更新資源 update-resources-using-the-web-service-api
使用存放庫API (Web服務)更新資源:
-
包含專案檔案
- 建立使用存放庫WSDL的Microsoft .NET使用者端元件。
- 參考Microsoft .NET使用者端元件。
-
建立服務使用者端
使用Microsoft .NET使用者端元件,建立
RepositoryServiceService
物件(透過叫用其預設建構函式)。 設定其Credentials
屬性使用System.Net.NetworkCredential
包含使用者名稱和密碼的物件。 -
擷取要更新的資源
指定要擷取的資源URI並讀取資源。 在此範例中,資源的URI為
"/testFolder/testResource"
. 如需詳細資訊,請參閱 正在讀取資源. -
更新資源
更新
Resource
物件的資訊。 在此範例中,若要更新說明,請將新值指派給Resource
物件的description
欄位。 -
叫用
RepositoryServiceService
物件的updateResource
方法,並傳入下列引數:- A
System.String
包含資源URI的物件。 - 此
Resource
包含已更新資源資訊的物件。 - A
boolean
指示要更新主要版本或次要版本的值。 在此範例中,值為true
會傳入,指出主要版本要增加。 - 通過
null
其餘兩個引數。
- A
另請參閱
搜尋資源 searching-for-resources
您可以建構用來搜尋存放庫中資源(包括歷史記錄、相關資源和屬性)的查詢。
您可以擷取相關資源,以判斷表單與其片段之間的相依性。 例如,如果您有表單,您可以決定要使用哪些片段或外部資源。 如果您有影像,也可以找出使用影像的表單。 您也可以使用根據屬性的篩選功能來搜尋相關資源。 例如,您可以搜尋使用具有指定名稱之影像的所有表單,或尋找由具有指定名稱之表單使用的任何影像。 您也可以使用資源屬性來搜尋。 例如,您可以執行查詢來尋找其名稱以指定字串開頭的所有表單或資源,該字串可能包含'%'和'_'萬用字元。 請記住,根據屬性的搜尋不是根據關係;這類搜尋是根據您對特定資源具有特定知識的假設。
查詢陳述式
A 查詢 包含一或多個邏輯上以條件聯結的陳述式。 A 陳述式 由左運算元、運算元和右運算元組成。 此外,您可以指定要用於搜尋結果的排序順序。 此 排序順序 包含相當於SQL的資訊 ORDER BY
子句和由元素組成,這些元素包含搜尋所依據的屬性,以及一個指示是否要使用遞增或遞減順序的值。
您可以使用存放庫服務Java API,以程式設計方式搜尋資源。 目前無法使用網站服務API來搜尋資源。
排序行為
叫用時未遵循排序順序 ResourceRepositoryClient
物件的 searchProperties
方法並指定排序順序。 例如,假設您建立具有三個自訂屬性的資源,其中屬性名稱為 name
, secondName
、和 asecondName
. 接下來,您會在屬性名稱上建立排序順序元素,並設定 ascending
值至 true
.
接著您叫用 ResourceRepositoryClient
物件的 searchProperties
方法,並以排序順序傳遞。 搜尋會傳回正確的資源,包含三個屬性。 不過,屬性並未依屬性名稱排序。 它們會依新增的順序傳回: name
, secondName
、和 asecondName
.
步驟摘要 summary_of_steps-5
若要搜尋資源,請遵循下列步驟:
- 包含專案檔案。
- 建立存放庫服務使用者端。
- 指定搜尋的目標資料夾。
- 指定搜尋中使用的屬性。
- 建立用於搜尋的查詢。
- 建立搜尋結果的排序順序。
- 搜尋資源。
- 從搜尋結果擷取資源。
包含專案檔案
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請包含Proxy檔案。
建立服務使用者端
您必須先建立連線並提供認證,才能以程式設計方式讀取資源。 這是透過建立服務使用者端來完成。
指定搜尋的目標資料夾
建立字串,其中包含進行搜尋的基本路徑。 語法包括正斜線,如以下範例所示:「/路徑/資料夾「。
指定搜尋中使用的屬性
您可以根據資源中所包含的屬性進行搜尋。 指定要執行搜尋的屬性值。
建立用於搜尋的查詢
使用陳述式和條件來建構查詢。 每個陳述式都會指定搜尋所依據的屬性、要使用的條件,以及要在搜尋中使用的屬性值。
建立搜尋結果的排序順序
排序順序由元素組成,每個元素都包含搜尋中使用的其中一個屬性,以及一個指示要使用升序或降序的值。
搜尋資源
使用資料夾、查詢和排序順序來搜尋資源。 此外,指出搜尋的深度,以及要傳回的結果數目上限。
從搜尋結果擷取資源
逐一檢視傳回的資源清單,並擷取資訊以供進一步處理。
另請參閱
使用Java API搜尋資源 search-for-resources-using-the-java-api
使用存放庫服務API (Java)搜尋資源:
-
包含專案檔案
在您的Java專案的類別路徑中包含使用者端JAR檔案。
-
建立服務使用者端
建立
ResourceRepositoryClient
物件,使用它的建構函式傳遞ServiceClientFactory
包含連線屬性的物件。 -
指定搜尋的目標資料夾
指定要執行搜尋之基礎路徑的URI。 在此範例中,資源的URI為
/testFolder
. -
指定搜尋中使用的屬性
指定要執行搜尋的屬性值。 屬性存在於
com.adobe.repository.infomodel.bean.Resource
物件。 在此範例中,將會在name屬性上執行搜尋;因此,java.lang.String
包含Resource
使用物件名稱,也就是testResource
在此案例中。 -
建立用於搜尋的查詢
若要建立查詢,請建立
com.adobe.repository.query.Query
物件,方法為叫用預設建構函式Query
類別並新增陳述式至查詢。若要建立陳述式,請叫用
com.adobe.repository.query.Query.Statement
類別並傳遞下列引數:- 包含資源屬性常數的左運算元。 在此範例中,由於資源名稱會作為搜尋的基礎,因此靜態值
Resource.ATTRIBUTE_NAME
已使用。 - 包含用於搜尋屬性的條件的運運算元。 運運算元必須是中的靜態常數之一
Query.Statement
類別。 在此範例中,靜態值Query.Statement.OPERATOR_BEGINS_WITH
已使用。 - 包含進行搜尋之屬性值的右運算元。 在此範例中,name屬性,
String
包含值"testResource"
,則會使用。
請叫用「 」,指定左運算元的名稱空間
Query.Statement
物件的setNamespace
方法並傳入com.adobe.repository.infomodel.bean.ResourceProperty
類別。 這個例子使用ResourceProperty.RESERVED_NAMESPACE_REPOSITORY
。透過叫用
Query
物件的addStatement
方法並傳入Query.Statement
物件。 - 包含資源屬性常數的左運算元。 在此範例中,由於資源名稱會作為搜尋的基礎,因此靜態值
-
建立搜尋結果的排序順序
若要指定搜尋結果中使用的排序順序,請建立
com.adobe.repository.query.sort.SortOrder
物件,方法為叫用預設建構函式SortOrder
類別中,並將元素加入排序順序。若要建立排序順序的元素,請叫用
com.adobe.repository.query.sort.SortOrder.Element
類別。 在此範例中,由於資源名稱會作為搜尋的基礎,因此靜態值Resource.ATTRIBUTE_NAME
會作為第一個引數,並依遞增順序(aboolean
值true
)指定為第二個引數。透過叫用
SortOrder
物件的addSortElement
方法並傳入SortOrder.Element
物件。 -
搜尋資源
若要搜尋
resources
根據屬性屬性,叫用ResourceRepositoryClient
物件的searchProperties
方法並傳遞下列引數:- A
String
包含執行搜尋的來源基本路徑。 在這種情況下,"/testFolder"
已使用。 - 搜尋中使用的查詢。
- 搜尋的深度。 在這種情況下,
com.adobe.repository.infomodel.bean.ResourceCollection.DEPTH_INFINITE
用於表示要使用基本路徑及其所有資料夾。 - 一個
int
表示要從中選取未分頁結果集的第一個列的值。 在此範例中,0
已指定。 - 一個
int
表示要傳回結果的最大數量的值。 在此範例中,10
已指定。 - 搜尋中使用的排序順序。
方法會傳回
java.util.List
之Resource
物件,以指定的排序順序。 - A
-
從搜尋結果擷取資源
若要擷取搜尋結果中包含的資源,請逐一檢視
List
並將每個物件轉換為Resource
以擷取其資訊。 在此範例中,會顯示每個資源的名稱。
另請參閱
建立資源關係 creating-resource-relationships
您可以指定存放庫中資源之間的關係。 有三種關係:
- 相依性:資源相依於其他資源的關係,這表示存放庫需要所有相關資源。
- 成員資格(檔案系統):資源位於指定資料夾中的關係。
- 自訂:您指定的資源之間的關係。 例如,如果某個資源已棄用,而另一個資源已引入存放庫,則您可以指定自己的替代關係。
您可以建立自己的自訂關係。 例如,如果您將HTML檔案儲存在存放庫中,而且它使用影像,則可以指定自訂關係來將HTML檔案與影像相關聯(因為通常只有XML檔案會使用存放庫定義的相依關係與影像相關聯)。 另一個自訂關係的範例是,如果您想使用循環圖表結構而不是樹狀結構來建置存放庫的不同檢視。 您可以連同檢視器一起定義圓形圖形,以周遊這些關係。 最後,您可以指出一個資源會取代另一個資源,即使這兩個資源完全不同。 在這種情況下,您可以在預留範圍之外定義關係型別,並在這兩個資源之間建立關係。 您的應用程式將是唯一可偵測及處理該關係的使用者端,並且可用於搜尋該關係。
您可以使用存放庫服務Java API或Web服務API,以程式設計方式指定資源之間的關係。
步驟摘要 summary_of_steps-6
若要指定兩個資源之間的關係,請執行下列步驟:
- 包含專案檔案。
- 建立存放庫服務使用者端。
- 指定相關資源的URI。
- 建立關係。
包含專案檔案
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請包含Proxy檔案。
建立服務使用者端
您必須先建立連線並提供認證,才能以程式設計方式讀取資源。 這是透過建立服務使用者端來完成。
指定要關聯之資源的URI
建立包含相關資源URI的字串。 語法包括正斜線,如以下範例所示:「/路徑/resource「。
建立關係
叫用存放庫服務方法以建立並指定關係型別。
另請參閱
使用Java API建立關係資源 create-relationship-resources-using-the-java-api
使用存放庫服務Java API建立關係資源,執行以下工作:
-
包含專案檔案
在您的Java專案的類別路徑中包含使用者端JAR檔案。
-
建立服務使用者端
建立
ResourceRepositoryClient
物件,使用它的建構函式傳遞ServiceClientFactory
包含連線屬性的物件。 -
指定要關聯之資源的URI
指定相關資源的URI。 在此案例中,因為資源已命名
testResource1
和testResource2
和位於名為的資料夾中testFolder
,其URI為"/testFolder/testResource1"
和"/testFolder/testResource2"
. URI會儲存為java.lang.String
物件。 在此範例中,資源會先寫入存放庫,並擷取其URI。 如需有關寫入資源的詳細資訊,請參閱 寫入資源. -
建立關係
叫用
ResourceRepositoryClient
物件的createRelationship
方法並傳遞下列引數:- 來源資源的URI。
- 目標資源的URI。
- 關係的型別,這是中的靜態常數之一
com.adobe.repository.infomodel.bean.Relation
類別。 在此範例中,相依關係是透過指定值來建立的Relation.TYPE_DEPENDANT_OF
. - A
boolean
指示目標資源是否自動更新為com.adobe.repository.infomodel.Id
新head資源的 — based識別碼。 在此範例中,由於相依關係,值true
已指定。
您也可以透過叫用
ResourceRepositoryClient
物件的getRelated
方法並傳入下列引數:- 要擷取相關資源的資源URI。 在此範例中,來源資源(
"/testFolder/testResource1"
)已指定。 - A
boolean
指示指定的資源是否為關係中的來源資源的值。 在此範例中,值true
已指定,因為是這種情況。 - 關聯性型別,此型別為中的靜態常數之一。
Relation
類別。 在此範例中,相依關係是使用先前使用的相同值來指定:Relation.TYPE_DEPENDANT_OF
.
此
getRelated
方法傳回java.util.List
之Resource
物件可供您反複擷取每一個相關資源,轉換包含在List
至Resource
隨心所欲。 在此範例中,testResource2
預期會位於傳回資源的清單中。
另請參閱
快速入門(SOAP模式):使用Java API建立資源之間的關係
使用網站服務API建立關係資源 create-relationship-resources-using-the-web-service-api
使用存放庫API (Web服務)建立關係資源:
-
包含專案檔案
- 建立使用存放庫WSDL的Microsoft .NET使用者端元件。
- 參考Microsoft .NET使用者端元件。
-
建立服務使用者端
使用Microsoft .NET使用者端元件,建立
RepositoryServiceService
物件(透過叫用其預設建構函式)。 設定其Credentials
屬性使用System.Net.NetworkCredential
包含使用者名稱和密碼的物件。 -
指定要關聯之資源的URI
指定相關資源的URI。 在此案例中,因為資源已命名
testResource1
和testResource2
和位於名為的資料夾中testFolder
,其URI為"/testFolder/testResource1"
和"/testFolder/testResource2"
. 使用與Microsoft .NET Framework相容的語言時(例如C#),URI會儲存為System.String
物件。 在此範例中,資源會先寫入存放庫,並擷取其URI。 如需有關寫入資源的詳細資訊,請參閱 寫入資源. -
建立關係
叫用
RepositoryServiceService
物件的createRelationship
方法並傳遞下列引數:- 來源資源的URI。
- 目標資源的URI。
- 關係的型別。 在此範例中,相依關係是透過指定值來建立的
3
. - A
boolean
指示是否已指定關係型別的值。 在此範例中,值true
已指定。 - A
boolean
指示目標資源是否自動更新為Id
新head資源的 — based識別碼。 在此範例中,由於相依關係,值true
已指定。 - A
boolean
指示是否已指定目標標頭的值。 在此範例中,值true
已指定。 - 通過
null
最後一個引數。
您也可以透過叫用
RepositoryServiceService
物件的getRelated
方法並傳入下列引數:- 要擷取相關資源的資源URI。 在此範例中,來源資源(
"/testFolder/testResource1"
)已指定。 - A
boolean
指示指定的資源是否為關係中的來源資源的值。 在此範例中,值true
已指定,因為是這種情況。 - A
boolean
指示是否已指定來源資源的值。 在此範例中,值true
已提供。 - 包含關聯性型別的整數陣列。 在此範例中,相依關係透過在陣列中使用與先前使用的相同值來指定:
3
. - 通過
null
其餘兩個引數。
此
getRelated
方法會傳回可轉換為的物件陣列Resource
物件,您可以透過這些物件來反複擷取每一個相關資源。 在此範例中,testResource2
預期會位於傳回資源的清單中。
另請參閱
鎖定資源 locking-resources
您可以鎖定資源或資源集,以供特定使用者獨佔使用,或供多個使用者共用。 共用鎖定表示資源會發生狀況,但不會防止其他人員對該資源採取動作。 共用鎖定應視為訊號機制。 專屬鎖定表示鎖定資源的使用者將會變更資源,而鎖定可確保除非使用者不再需要存取資源且已解除鎖定,否則其他人都無法變更。 如果存放庫管理員解除鎖定資源,該資源的所有專屬和共用鎖定都會自動移除。 這類動作適用於使用者不再可用且尚未解除鎖定資源的情況。
鎖定資源時,當您在Workbench中檢視「資源」標籤時,會出現鎖定圖示,如下圖所示。
您可以使用存放庫服務Java API或Web服務API,以程式設計方式控制對資源的存取。
步驟摘要 summary_of_steps-7
若要鎖定和解鎖資源,請遵循下列步驟:
- 包含專案檔案。
- 建立存放庫服務使用者端。
- 指定要鎖定的資源的URI。
- 鎖定資源。
- 擷取資源的鎖定。
- 解除鎖定資源
包含專案檔案
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請包含Proxy檔案。
建立服務使用者端
您必須先建立連線並提供認證,才能以程式設計方式讀取資源。 這是透過建立服務使用者端來完成。
指定要鎖定的資源的URI
建立包含要鎖定之資源的URI的字串。 語法包括正斜線,如以下範例所示:「/路徑/resource「。
鎖定資源
叫用存放庫服務方法來鎖定資源,指定URI、鎖定型別和鎖定深度。
擷取資源的鎖定
叫用儲存庫服務方法以擷取資源的鎖定,並指定URI。
解除鎖定資源
叫用存放庫服務方法來解除鎖定資源,指定URI。
另請參閱
使用Java API鎖定資源 lock-resources-using-the-java-api
使用存放庫服務API (Java)鎖定資源:
-
包含專案檔案
在您的Java專案的類別路徑中包含使用者端JAR檔案。
-
建立服務使用者端
建立
ResourceRepositoryClient
物件,使用它的建構函式傳遞ServiceClientFactory
包含連線屬性的物件。 -
指定要鎖定的資源的URI
指定要鎖定的資源的URI。 在此案例中,因為指定的資源
testResource
在名為的資料夾中testFolder
,其URI為"/testFolder/testResource"
. URI會儲存為java.lang.String
物件。 -
鎖定資源
叫用
ResourceRepositoryClient
物件的lockResource
方法並傳遞下列引數:- 資源的URI。
- 鎖定範圍。 在此範例中,由於資源將被鎖定以供獨佔使用,因此鎖定範圍指定為
com.adobe.repository.infomodel.bean.Lock.SCOPE_EXCLUSIVE
. - 鎖定深度。 在此範例中,由於鎖定只會套用至特定資源,而不會套用至其任何成員或子系,因此鎖定深度會指定為
Lock.DEPTH_ZERO
.
note note NOTE 多載版本的 lockResource
需要四個引數的方法會擲回例外狀況。 確保使用lockResource
方法需要三個引數,如本逐步說明所示。 -
擷取資源的鎖定
叫用
ResourceRepositoryClient
物件的getLocks
方法並傳遞資源的URI作為引數。 此方法會傳回Lock物件清單,您可以透過該清單進行反複運算。 在此範例中,會透過叫用每個Lock物件的getOwnerUserId
,getDepth
、和getType
方法。 -
解除鎖定資源
叫用
ResourceRepositoryClient
物件的unlockResource
方法並傳遞資源的URI作為引數。 如需詳細資訊,請參閱 AEM Forms API參考.
另請參閱
使用Web服務API鎖定資源 lock-resources-using-the-web-service-api
使用存放庫服務API (Web服務)鎖定資源:
-
包含專案檔案
- 使用Base64建立使用存放庫WSDL的Microsoft .NET使用者端元件。
- 參考Microsoft .NET使用者端元件。
-
建立服務使用者端
使用Microsoft .NET使用者端元件,建立
RepositoryServiceService
物件(透過叫用其預設建構函式)。 設定其Credentials
屬性使用System.Net.NetworkCredential
包含使用者名稱和密碼的物件。 -
指定要鎖定的資源的URI
指定包含要鎖定之資源URI的字串。 在此案例中,因為指定的資源
testResource
在資料夾中testFolder
,其URI為"/testFolder/testResource"
. 使用與Microsoft .NET Framework相容的語言時(例如C#),請將URI儲存在System.String
物件。 -
鎖定資源
叫用
RepositoryServiceService
物件的lockResource
方法並傳遞下列引數:- 資源的URI。
- 鎖定範圍。 在此範例中,由於資源將被鎖定以供獨佔使用,因此鎖定範圍指定為
11
. - 鎖定深度。 在此範例中,由於鎖定只會套用至特定資源,而不會套用至其任何成員或子系,因此鎖定深度會指定為
2
. - 一個
int
表示鎖定到期前的秒數的值。 在此範例中,的值1000
已使用。 - 通過
null
最後一個引數。
-
擷取資源的鎖定
叫用
RepositoryServiceService
物件的getLocks
方法並傳遞資源的URI作為第一個引數,然後null
用於第二個引數。 方法會傳回object
陣列包含Lock
您可以反複處理的物件。 在此範例中,會透過存取每個物件來列印每個物件的鎖定擁有者、深度和範圍Lock
物件的ownerUserId
,depth
、和type
欄位。 -
解除鎖定資源
叫用
RepositoryServiceService
物件的unlockResource
方法並傳遞資源的URI作為第一個引數,然後null
用於第二個引數。
另請參閱
刪除資源 deleting-resources
您可以使用存放庫服務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),如果刪除其中一個指定資源失敗,則不會復原交易,這表示無法刪除已刪除的檔案。步驟摘要 summary_of_steps-8
若要刪除資源,請執行下列步驟:
- 包含專案檔案。
- 建立存放庫服務使用者端。
- 指定要刪除之資源的URI。
- 刪除資源。
包含專案檔案
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請包含Proxy檔案。
建立服務使用者端
您必須先建立連線並提供認證,才能以程式設計方式讀取資源。 這是透過建立服務使用者端來完成。
指定要刪除的資源的URI
建立包含要刪除之資源URI的字串。 語法包括正斜線,如以下範例所示:「/路徑/resource「。 如果要刪除的資源是資料夾,則會遞回刪除。
刪除資源
叫用存放庫服務方法以刪除資源,指定URI。
另請參閱
使用Java API(SOAP)刪除資源 delete-resources-using-the-java-api-soap
使用存放庫API (Java)刪除資源:
-
包含專案檔案
在您的Java專案的類別路徑中包含使用者端JAR檔案。
-
建立服務使用者端
建立
ResourceRepositoryClient
物件,使用它的建構函式傳遞ServiceClientFactory
包含連線屬性的物件。 -
指定要刪除的資源的URI
指定要擷取的資源URI。 在這種情況下,由於名為testResourceToBeDeleted的資源位於名為testFolder的資料夾中,其URI為
/testFolder/testResourceToBeDeleted
. URI會儲存為java.lang.String
物件。 在此範例中,資源會先寫入存放庫,並擷取其URI。 如需有關寫入資源的詳細資訊,請參閱 寫入資源. -
刪除資源
叫用
ResourceRepositoryClient
物件的deleteResource
方法並傳遞資源的URI作為引數。
另請參閱
使用網站服務API刪除資源 delete-resources-using-the-web-service-api
使用存放庫API (Web服務)刪除資源:
-
包含專案檔案
- 使用Base64建立使用存放庫WSDL的Microsoft .NET使用者端元件。
- 參考Microsoft .NET使用者端元件。
-
建立服務使用者端
使用Microsoft .NET使用者端元件,建立
RepositoryServiceService
物件(透過叫用其預設建構函式)。 設定其Credentials
屬性使用System.Net.NetworkCredential
包含使用者名稱和密碼的物件。 -
指定要刪除的資源的URI
指定要擷取的資源URI。 在此案例中,因為指定的資源
testResourceToBeDeleted
在名為的資料夾中testFolder
,其URI為"/testFolder/testResourceToBeDeleted"
. 在此範例中,資源會先寫入存放庫,並擷取其URI。 如需有關寫入資源的詳細資訊,請參閱 寫入資源. -
刪除資源
叫用
RepositoryServiceService
物件的deleteResources
方法並傳遞System.String
陣列,包含資源的URI作為第一個引數。 通過null
用於第二個引數。
另請參閱