公開オブジェクトの操作
パブリッシング関連のオブジェクトの作成と操作や、Document オブジェクトにおけるパブリッシング関連のメソッドの使用についての例をいくつか示します。
PublishTemplate オブジェクトの作成
以下の例では、Document クラスの createInstance メソッドを呼び出すことにより、新規のパブリッシュ・テンプレートを作成し、そのテンプレートを Content Engine オブジェクト・ストアに永続化します。PublishTemplate オブジェクトに対して設定するコンテンツは有効なパブリッシュ・テンプレート XML ファイルでなければならず (例えば、Publishing Designer アプリケーションで作成したパブリッシュ・テンプレート)、ファイルに指定するすべての GUID は現在のオブジェクト・ストアの有効なオブジェクトを参照する必要があります。XML ファイル内で参照される GUID には、出力フォルダー、ドキュメント・クラス、スタイル・テンプレート、およびイベント・アクションが含まれます。
次の例で、新規パブリッシュ・テンプレートは PublishTemplate クラスに属し、このクラスからプロパティーと権限を継承します。PublishTemplate クラスが Content Engine レベルでサブクラス化された場合、パブリッシュ・テンプレートをサブクラスに所属させることができます。サブクラスへの参照を取得して createInstance メソッドに渡す方法を示す例については、「ClassDescription オブジェクトの取得」を参照してください。
PublishTemplate クラスのプロパティーは、いずれも作成時に設定する必要はありません。ただし、オブジェクトを作成する前にクラスのカスタム・プロパティーのいずれかに設定が必要なものがあるかどうかを確認する必要がある場合があります。一例として、プロパティーの操作の『プロパティー・フィルターの使用』を参照してください。必要に応じて、新規オブジェクトの作成時にそのオブジェクトの権限を設定できます。コード例については、「アクセス権限の設定」を参照してください。
Java™ の例
// パブリッシュ・テンプレート・オブジェクトを作成する
PublishTemplate pt = Factory.PublishTemplate.createInstance(objectStore);
// パブリッシュ・テンプレートのドキュメント・タイトルを設定する
pt.getProperties().putValue("DocumentTitle", "My New Publish Template");
// Is there a cascade delete dependency between source document and publication?
boolean isSourceDependency = true;
// isSourceDependency は、ソースの削除時に発行を自動的に削除するかどうかを表す
// ブール変数です。It is whichever value
// いずれかです。
String VALUE_ISSOURCEDEPENDENCY = isSourceDependency? "true" : "false";
// パブリッシュ・テンプレートのコンテンツ
String PT_CONTENT =
"<?xml version=¥"1.0¥" ?>" +
"<publishtemplatecontent>" +
"<version>2.0.1</version>" +
"<newinstructions>" +
"<issourcedependent>" +
VALUE_ISSOURCEDEPENDENCY + "<issourcedependent>" +
"<outputfoldername>/" +
"<applyproperties>" +
"<from>source</from> " + //ソース・ドキュメントからプロパティーを適用する
"</applyproperties>" +
"<applysecurity>" +
"<from>default</from>" + // クラス定義からセキュリティーを適用する
"</applysecurity>" +
"</newinstructions>" +
"<republishinstructions>" +
"<versionablerepublishtype>versionandkeep</versionablerepublishtype>" +
"<nonversionablerepublishtype>addandkeep</nonversionablerepublishtype>" +
"<applypropertiesfrom>destination</applypropertiesfrom>" +
"<applysecurityfrom>destination</applysecurityfrom>" +
"</republishinstructions>" +
"<publishtemplatecontent>";
String[] PT_DATA = {"myNewPublishTemplate.xml", "application/x-filenet-publishtemplate", PT_CONTENT};
// コンテンツ・エレメントを作成する
ContentElementList cel = Factory.ContentElement.createList();
ContentTransfer ctNew = Factory.ContentTransfer.createInstance();
ByteArrayInputStream is = new ByteArrayInputStream(PT_CONTENT.getBytes());
ctNew.setCaptureSource(is);
ctNew.set_RetrievalName(PT_DATA [0]);
ctNew.set_ContentType(PT_DATA [1]);
cel.add(ctNew);
pt.set_ContentElements(cel);
// パブリッシュ・テンプレートにメジャー・バージョンとしてチェックインする
pt.checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY, CheckinType.MAJOR_VERSION);
pt.save(RefreshMode.REFRESH);
C# の例
// パブリッシュ・テンプレート・オブジェクトを作成する
IPublishTemplate pt = Factory.PublishTemplate.CreateInstance(objectStore);
// パブリッシュ・テンプレートのドキュメント・タイトルを設定する
pt.Properties.GetProperty("DocumentTitle").SetObjectValue("My New Publish Template");
// ソース・ドキュメントと公開の間にカスケード削除の依存関係があるか
bool isSourceDependency = true;
// isSourceDependency は、ソースの削除時に発行を自動的に削除するかどうかを表す
// ブール変数です。It is whichever value
// いずれかです。
string VALUE_ISSOURCEDEPENDENCY = isSourceDependency ? "true" : "false";
// パブリッシュ・テンプレートのコンテンツ
string PT_CONTENT =
"<?xml version=¥"1.0¥" ?>" +
"<publishtemplatecontent>" +
"<version>2.0.1</version>" +
"<newinstructions>" +
"<issourcedependent>" +
VALUE_ISSOURCEDEPENDENCY + "<issourcedependent>" +
"<outputfoldername>/" +
"<applyproperties>" +
"<from>source</from> " + //ソース・ドキュメントからプロパティーを適用する
"</applyproperties>" +
"<applysecurity>" +
"<from>default</from>" + // クラス定義からセキュリティーを適用する
"</applysecurity>" +
"</newinstructions>" +
"<republishinstructions>" +
"<versionablerepublishtype>versionandkeep</versionablerepublishtype>" +
"<nonversionablerepublishtype>addandkeep</nonversionablerepublishtype>" +
"<applypropertiesfrom>destination</applypropertiesfrom>" +
"<applysecurityfrom>destination</applysecurityfrom>" +
"</republishinstructions>" +
"<publishtemplatecontent>";
string[] PT_DATA = {"myNewPublishTemplate.xml", "application/x-filenet-publishtemplate", PT_CONTENT};
// コンテンツ・エレメントを作成する
IContentElementList cel = Factory.ContentElement.CreateList();
IContentTransfer ctNew = Factory.ContentTransfer.CreateInstance();
System.IO.MemoryStream iS = new System.IO.MemoryStream(PT_CONTENT.Length);
ctNew.SetCaptureSource(iS);
ctNew.RetrievalName = PT_DATA[0];
ctNew.ContentType = PT_DATA[1];
cel.Add(ctNew);
pt.ContentElements = cel;
// パブリッシュ・テンプレートにメジャー・バージョンとしてチェックインする
pt.Checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY, CheckinType.MAJOR_VERSION);
pt.Save(RefreshMode.REFRESH);
PublishTemplate オブジェクトの取得
オブジェクト・ストアから特定の PublishTemplate オブジェクトを取得するには、Factory.PublishTemplate.fetchInstance を呼び出します。オブジェクト・ストアで使用可能なパブリッシュ・テンプレートの全部または指定した一部のサブセットが含まれた PublishTemplates コレクションを取得するには、SearchScope.fetchObjects を呼び出します。
Java の例
// PublishTemplate オブジェクトを取得する
PublishTemplate pt = Factory.PublishTemplate.fetchInstance(objectStore, new Id("{02639B6E-52B9-46EB-A590-0D76164BA2D6}"), null);
// PDF のパブリッシュにスタイル・テンプレートを使用するパブリッシュ・テンプレートをすべて取得する
String sqlStr = "Select pt.Id, pt.DateCreated, pt.StyleTemplate from PublishTemplate AS pt WITH INCLUDESUBCLASSES LEFT OUTER JOIN PublishStyleTemplate AS st WITH INCLUDESUBCLASSES ON pt.StyleTemplate = st.This WHERE (pt.IsCurrentVersion = true) AND (st.OutputFormat = 'application/pdf') ORDER BY pt.DateCreated";
SearchSQL sql = new SearchSQL(sqlStr);
SearchScope ss = new com.filenet.api.query.SearchScope(objectStore);
EngineCollection ec = ss.fetchObjects(sql, null, null, Boolean.TRUE);
C# の例
// PublishTemplate オブジェクトを取得する
IPublishTemplate pt = Factory.PublishTemplate.FetchInstance(objectStore, new Id("{02639B6E-52B9-46EB-A590-0D76164BA2D6}"), null);
// PDF のパブリッシュにスタイル・テンプレートを使用するパブリッシュ・テンプレートをすべて取得する
string sqlStr = "Select pt.Id, pt.DateCreated, pt.StyleTemplate from PublishTemplate AS pt WITH INCLUDESUBCLASSES LEFT OUTER JOIN
PublishStyleTemplate AS st WITH INCLUDESUBCLASSES ON pt.StyleTemplate = st.This WHERE (pt.IsCurrentVersion = true)
AND (st.OutputFormat = 'application/pdf') ORDER BY pt.DateCreated";
SearchSQL sql = new SearchSQL(sqlStr);
SearchScope ss = new SearchScope(objectStore);
IEngineCollection ec = ss.FetchObjects(sql, null, null, true);
PublishTemplate プロパティーの操作
PublishTemplate クラスは、Document クラスからプロパティーを継承し、Description と PublishStyleTemplate という 2 つのプロパティーを追加します。PublishStyleTemplate プロパティーは、ソース・ドキュメントのコンテンツ変換 (PDF 形式または HTML 形式へのパブリッシュなど) に使用する PublishStyleTemplate オブジェクトを参照します。PublishStyleTemplate プロパティー値を設定しない場合、コンテンツ変換は行われません。すなわち、コンテンツは指定されたプロパティーとパブリッシュ・テンプレートのコンテンツに定義されたセキュリティーとともに、宛先にコピーされるだけになります。
PublishStyleTemplate オブジェクトの作成
以下の例では、パブリッシュ・スタイル・テンプレートの新規インスタンスが作成され、それが Content Engine オブジェクト・ストアに保存されます。
Java の例
PublishStyleTemplate pst = Factory.PublishStyleTemplate.createInstance(objectStore);
pst.set_Title("My New Publish Style Template");
StringList formats = Factory.StringList.createList();
formats.add("application/msword");
formats.add("application/vnd.ms-excel");
formats.add("application/vnd.ms-powerpoint");
pst.set_InputFormats(formats);
// Description は必須プロパティーではありませんが、設定すると便利です
pst.set_Description("This is the HTML publish style template.");
// ProviderID には既知のハンドラー名を使用する必要があります
String HTML_HANDLER = "PublishRequestHTMLHandler";
pst.set_ProviderID(HTML_HANDLER);
pst.set_OutputFormat("text/html"); //HTML transformation
pst.save(RefreshMode.NO_REFRESH);
C# の例
IPublishStyleTemplate pst = Factory.PublishStyleTemplate.CreateInstance(objectStore);
pst.Title = ("My New Publish Style Template");
IStringList formats = Factory.StringList.CreateList();
formats.Add("application/msword");
formats.Add("application/vnd.ms-excel");
formats.Add("application/vnd.ms-powerpoint");
pst.InputFormats = formats;
// Description は必須プロパティーではありませんが、設定すると便利です
pst.Description = ("This is the HTML publish style template.");
// ProviderID には既知のハンドラー名を使用する必要があります
string HTML_HANDLER = "PublishRequestHTMLHandler";
pst.ProviderID=(HTML_HANDLER);
pst.OutputFormat=("text/html"); //HTML 変換
pst.Save(RefreshMode.NO_REFRESH);
PublishStyleTemplate オブジェクトの取得
オブジェクト・ストアから特定の PublishStyleTemplate オブジェクトを取得するには、以下の例に示すように、パブリッシュ・スタイル・テンプレートの ID を使用してインスタンスをフェッチします。また、SearchScope.fetchObjects を呼び出して、オブジェクト・ストアで使用可能なスタイル・テンプレートが含まれた PublishStyleTemplates コレクションを取得することもできます。以下の例に、オブジェクト・ストア内のすべてのパブリッシュ・スタイル・テンプレートを取得する方法を示します。
Java の例
PublishStyleTemplate pst = Factory.PublishStyleTemplate.fetchInstance(objectStore, new Id("{83BE27ED-9688-4522-B78C-01B6A2EB51A6}"), null);
String sqlStr = "Select * from PublishStyleTemplate";
SearchSQL sql = new SearchSQL(sqlStr);
SearchScope ss = new com.filenet.api.query.SearchScope(objectStore);
EngineCollection ec = ss.fetchObjects(sql, null, null, Boolean.TRUE);
C# の例
IPublishStyleTemplate pst = Factory.PublishStyleTemplate.FetchInstance(objectStore, new Id("{83BE27ED-9688-4522-B78C-01B6A2EB51A6}"), null);
string sqlStr = "Select * from PublishStyleTemplate";
SearchSQL sql = new SearchSQL(sqlStr);
SearchScope ss = new SearchScope(objectStore);
IEngineCollection ec = ss.FetchObjects(sql, null, null, true);
PublishStyleTemplate プロパティーの操作
PublishStyleTemplate クラスは、CustomObject クラスからプロパティーを継承し、その他の多数のプロパティーを追加します。それらのプロパティーを以下の表にまとめます。PublishStyleTemplate オブジェクトの各プロパティーについて詳しくは、PublishStyleTemplate Properties を参照してください。
プロパティー | Settability | 説明 |
---|---|---|
説明 | 読み取り/書き込み | パブリッシュ・スタイル・テンプレートの説明である文字列。 |
InputFormats | 読み取り/書き込み | パブリッシュ・スタイル・テンプレートが有効である入力ドキュメントの MIME タイプを指定する文字列のコレクション。形式「*/*」は、スタイル・テンプレートがあらゆる入力フォーマットに適用されることを示します。 |
OutputFormat | 読み取り/書き込み | このパブリッシュ・スタイル・テンプレートの使用時に、変換エンジンによって生成される出力ドキュメントの MIME タイプである文字列 (例えば「text/html」)。 |
PDFMasterPassword | 読み取り専用 | PDF 解析用のマスター・パスワードを表す暗号化文字列。 |
PDFUserPassword | 読み取り専用 | PDF 解析用のユーザー・パスワードを表す暗号化文字列。 |
ProviderID | 作成時にのみ設定可能 | パブリッシュ・スタイル・テンプレートの作成時に指定された既知のプロバイダー ID である文字列。デフォルトは、PDF スタイル・テンプレートの場合は「PublishRequestPDFHandler」で、HTML スタイル・テンプレートの場合は「PublishRequestHTMLHandler」です。 |
Title | 読み取り/書き込み | パブリッシュ・スタイル・テンプレートのタイトルである文字列。 |
TransformationOptions | 読み取り/書き込み | このテンプレートに対して行われる変換のエンジン固有の説明を含むバイナリー・プロパティー。現在、PDF でウォーターマーク、セキュリティー、およびその他のパラメーターを変換エンジンに渡す場合にのみ使用します。このフィールドで渡されるデータの形式は、変換エンジン固有のスキーマを持つ XML 文字列です。 |
ドキュメントのパブリッシュと再パブリッシュ
ドキュメントをパブリッシュおよび再パブリッシュするには、Document オブジェクトの publish および republish メソッドを呼び出します。どちらの操作でも、キューに入れられた要求を表す PublishRequest オブジェクトが返されます。キュー入れられた要求に関する状況情報を取得するには、PublishRequest オブジェクトのプロパティーの照会を行います。ただし、PublishRequest オブジェクトはパブリッシュ操作の完了後すぐに削除されるため、操作が完了した場合は照会が「要求されたアイテムが見つかりません」という例外を受け取ることがあります。
Document オブジェクトを使用したパブリッシュ
ドキュメントをパブリッシュするときは、ソース・ドキュメントから新規パブリッシュを作成します。パブリッシュ操作が完了すると、新規パブリッシュが新規バージョン・シリーズ内の唯一のバージョンになり、ソース・ドキュメントから派生した他のどのパブリッシュとも関連がなくなります。 また、新規パブリッシュはメジャー・ドキュメント・バージョンであり、1 つの例外のほかは公開のマイナー・バージョンが存在しません。例外は一時予約オブジェクトの場合であり、このオブジェクトはパブリッシュ操作の完了時に自動的にメジャー・バージョンに変換されるまではマイナー・バージョンです。新規パブリッシュに適用されるセキュリティーは、パブリッシュ・テンプレートに、デフォルトのセキュリティー、ソース・ドキュメントのセキュリティー、宛先フォルダーのセキュリティー、またはパブリッシュ・テンプレートが指定するセキュリティーのいずれかとして指定されます。
ドキュメントをパブリッシュするには、ソース・ドキュメントを表す Document オブジェクトの publish メソッドを呼び出します。publish メソッドは、パブリッシュ・テンプレートを入力として使用します。指定するパブリッシュ・テンプレートと、パブリッシュ・テンプレートのコンテンツに指定するすべてのオブジェクトは、ソース Document オブジェクトと同じオブジェクト・ストア内になければなりません。
publish メソッドには、オプションの publishOptions パラメーターもあります。関連するパブリッシュ・テンプレートに指定された公開名、出力フォルダー、およびイベント・アクションをオーバーライドする XML (パブリッシュ・オプションを表します) を渡すことができます。パラメーターが null である場合、名前、出力フォルダー、およびイベント・アクションの値は、関連するパブリッシュ・テンプレートに指定された値にデフォルトで設定されます。XML のサンプルについては、「パブリッシュ・オプションの XML」を参照してください。以下のリストに、各オプションについて説明します。
- 新規パブリッシュの名前。<publicationname> エレメントに指定します。
- パブリッシュされたドキュメントをファイリングする出力フォルダー。フォルダー名 (<outputfoldername> エレメントに指定) またはフォルダーの ID (<outputfolderid> エレメントに指定) のいずれかとして指定します。複数の名前または ID は指定できません。文字列に出力フォルダー名または ID を組み込むと、パブリッシュ・テンプレートに指定された出力フォルダーがオーバーライドされます。
- パブリッシュ操作の完了時にトリガーされるイベント・アクション。イベント・アクション名 (<eventactionname> エレメントに指定) またはイベント・アクションの ID (<eventactionid> エレメントに指定) のいずれかとして指定します。複数の名前または ID は指定できません。文字列にイベント・アクション名または ID を組み込むと、パブリッシュ・テンプレートに指定されたイベント・アクション (存在する場合) がオーバーライドされます。パブリッシュ・テンプレートにイベント・アクションが指定されたが、どのイベント・アクションも必要としない場合、publishOptions パラメーターに名前を指定せずに eventactionname ノードを組み込みます。詳しくは、イベント・アクションを参照してください。
ドキュメントを正常にパブリッシュするには、ユーザーに AccessRight.PUBLISH 権限がなければなりません。また、必須のバイナリーすなわちオブジェクト値プロパティーを含むドキュメント・クラスへのパブリッシュはサポートされません。これは、パブリッシュ時にこれらのプロパティー値を設定する方法がないためです。
以下のコード・サンプルは、パブリッシュ操作を示しています。
Java の例
// パブリッシュ名を XML 形式で定義する
String publishOpts = new String("<publishoptions><publicationname>My New Title</publicationname><publishoptions>");
// パブリッシュするソース・ドキュメントへの参照を取得する
String path = "/someFolder/My Source Document";
Document sourceDoc = Factory.Document.fetchInstance(objectStore, path, null);
// 一連のパブリッシュ・テンプレートを取得する
// (通常のシナリオでは、適用可能なパブリッシュ・テンプレートをパブリッシュ・テンプレート照会で取得できます。)
String sqlStr = "Select * from PublishTemplate";
SearchSQL sql = new SearchSQL(sqlStr);
SearchScope ss = new com.filenet.api.query.SearchScope(objectStore);
EngineCollection ec = ss.fetchObjects(sql, null, null, Boolean.TRUE);
Iterator iter = ec.iterator();
if (iter.hasNext())
{
PublishTemplate pt = (PublishTemplate) iter.next();
// この例では、最初のパブリッシュ・テンプレートを使用します。
// パブリッシュ要求を送信し、このパブリッシュ操作に対する PublishRequest オブジェクトを取得します。
PublishRequest pubReq = sourceDoc.publish(pt, publishOpts);
pubReq.save(RefreshMode.REFRESH);
}
C# の例
// パブリッシュ名を XML 形式で定義する
string publishOpts = ("My New Title");
// パブリッシュするソース・ドキュメントへの参照を取得する
string path = "/someFolder/My Source Document";
IDocument sourceDoc = Factory.Document.FetchInstance(objectStore, path, null);
// 一連のパブリッシュ・テンプレートを取得する
// (通常のシナリオでは、適用可能なパブリッシュ・テンプレートをパブリッシュ・テンプレート照会で取得できます。)
String sqlStr = "Select * from PublishTemplate";
SearchSQL sql = new SearchSQL(sqlStr);
SearchScope ss = new SearchScope(objectStore);
IEngineCollection ec = ss.FetchObjects(sql, null, null, true);
foreach (IPublishTemplate pt in ec)
{
// この例では、最初のパブリッシュ・テンプレートを使用します。
// パブリッシュ要求を送信し、このパブリッシュ操作に対する PublishRequest オブジェクトを取得します。
IPublishRequest pubReq = sourceDoc.Publish(pt, publishOpts);
pubReq.Save(RefreshMode.REFRESH);
}
PublishRequest オブジェクトを使用したパブリッシュ
Document オブジェクトの publish メソッドを使用する代わりに、PublishRequest オブジェクトを直接作成して、パブリッシュ要求を送信することもできます。一例として、上の例の sourceDoc.publish 呼び出しを以下のコードで置き換えることができます。
Java の例
PublishRequest pubReq = Factory.PublishRequest.createInstance(objectStore);
pubReq.set_InputDocument(sourceDoc);
pubReq.set_PublishTemplate(pt);
pubReq.setPublishOptions(publishOpts);
C# の例
IPublishRequest pubReq = Factory.PublishRequest.CreateInstance(objectStore);
pubReq.InputDocument = sourceDoc;
pubReq.PublishTemplate = pt;
pubReq.SetPublishOptions(publishOpts);
Document オブジェクトを使用した再公開
再パブリッシュ機能は、既存の公開を再処理します。パブリッシュの生成に以前使用されたパブリッシュ・テンプレートが再利用されます。パブリッシュ・テンプレートでは、以下のことを指定します。
- 既存のパブリッシュをバージョン管理する (既存のパブリッシュのバージョン・シリーズ内の新規バージョンになる) か、新規パブリッシュを作成する (独自のバージョン・シリーズを持つ完全に新規のパブリッシュ) か。
- 既存のパブリッシュ・バージョンを削除するか、保持するか。
- 5 つのセキュリティー適用オプション、すなわち、再パブリッシュ対象の既存のパブリッシュのセキュリティー、あるいはパブリッシュ操作に前に指定したオプション (デフォルトのセキュリティー、ソース・ドキュメントのセキュリティー、宛先フォルダーのセキュリティー、またはパブリッシュ・テンプレートが指定するセキュリティー) のいずれを使用するか。
ドキュメントを再パブリッシュするには、ソース・ドキュメントを表す Document オブジェクトの republish メソッドを呼び出します。republish メソッドへの入力は、既存のパブリッシュ識別子であり、publish メソッドの場合と同様、オプションでパブリッシュ・オプションの XML を指定して、関連するパブリッシュ・テンプレート内のパブリッシュ名、出力フォルダー、およびイベント・アクションをオーバーライドできます。publishOptions パラメーターに null を指定する場合、パブリッシュ名、出力フォルダー、およびイベント・アクションの値は、関連するパブリッシュ・テンプレートに指定された値にデフォルトで設定されます。 XML のサンプルについては、パブリッシュ・オプションの XML のトピックを参照してください。以下のリストに、各オプションについて説明します。
- 再パブリッシュされたドキュメントの名前。<publicationname> エレメントに指定します。
- 再パブリッシュされたドキュメントをファイリングする出力フォルダー。フォルダー名 (<outputfoldername> エレメントに指定) またはフォルダーの ID (outputfolderid エレメントに指定) のいずれかとして指定します。複数の名前または ID は指定できません。文字列に出力フォルダー名または ID を組み込むと、パブリッシュ・テンプレートに指定された出力フォルダーがオーバーライドされます。この値は、既存の公開がバージョン管理されている場合には無視されます。新しいバージョンは既存のバージョンと同じフォルダーにファイリングされます。
- 再パブリッシュ操作の完了時にトリガーされるイベント・アクション。イベント・アクション名 (<eventactionname> エレメントに指定) またはイベント・アクションの ID (<eventactionid> エレメントに指定) のいずれかとして指定します。イベント・アクションは、ドキュメントが最初にパブリッシュされたときに指定されたイベント・アクション (ある場合) と同じである必要はありません。複数の名前または ID は指定できません。文字列にイベント・アクション名または ID を組み込むと、パブリッシュ・テンプレートに指定されたイベント・アクション (存在する場合) がオーバーライドされます。パブリッシュ・テンプレートにイベント・アクションが指定されたが、どのイベント・アクションも必要としない場合、publishOptions パラメーターに名前を指定せずに eventactionname ノードを組み込みます。詳しくは、イベント・アクションを参照してください。
以下のコード・サンプルは、再パブリッシュ操作を示しています。
Java の例
// 再パブリッシュするソース・ドキュメントへの参照を取得する
String path = "/SomeFolder/My Source Document";
Document sourceDoc = Factory.Document.fetchInstance(objectStore, path, null);
// ソース・ドキュメントの現在の公開ドキュメントのリストを取得する
DocumentSet pubDocs = sourceDoc.get_DestinationDocuments();
// パブリッシュ・ドキュメントの処理を繰り返す
// (通常のシナリオでは、パブリッシュを調べて、再パブリッシュする対象を選択できます)
Iterator iter = pubDocs.iterator();
if (iter.hasNext())
{
// Get the next publication document.
Document pubDoc = (Document)iter.next();
// 再パブリッシュ・ドキュメント名を定義する
String publishOpts = new String("<publishoptions><publicationname>Republished Doc</publicationname></publishoptions>");
// 再パブリッシュ要求を送信し、この操作に対する PublishRequest オブジェクトを返す
PublishRequest pubReq = sourceDoc.republish(pubDoc, publishOpts);
pubReq.save(RefreshMode.REFRESH);
}
C# の例
// 再パブリッシュするソース・ドキュメントへの参照を取得する
string path = "/SomeFolder/My Source Document";
IDocument sourceDoc = Factory.Document.FetchInstance(objectStore, path, null);
// ソース・ドキュメントの現在のパブリッシュ・ドキュメントのリストを取得する
IDocumentSet pubDocs = sourceDoc.DestinationDocuments;
// パブリッシュ・ドキュメントの処理を繰り返す
// (通常のシナリオでは、パブリッシュを調べて、再パブリッシュする対象を選択できます)
foreach (IDocument pubDoc in pubDocs)
{
// 再公開ドキュメント名を定義する
string publishOpts = ("<publishoptions><publicationname>Republished Doc</publicationname></publishoptions>");
// 再公開要求を送信し、この操作に対する PublishRequest オブジェクトを返す
IPublishRequest pubReq = sourceDoc.Republish(pubDoc, publishOpts);
pubReq.Save(RefreshMode.REFRESH);
}
PublishRequest オブジェクトを使用した再パブリッシュ
前述のパブリッシュ操作と同様に、sourceDoc.republish メソッドを呼び出す代わりに、PublishRequest オブジェクトを直接作成することにより再パブリッシュできます。
Java の例
PublishRequest pubReq = Factory.PublishRequest.createInstance(objectStore);
pubReq.set_InputDocument(sourceDoc);
pubReq.set_PublicationDocument(publication);
pubReq.setPublishOptions(publishOpts);
C# の例
IPublishRequest pubReq = Factory.PublishRequest.CreateInstance(objectStore);
pubReq.InputDocument = sourceDoc;
pubReq.PublicationDocument= publication;
pubReq.SetPublishOptions(publishOpts);
PublishRequest オブジェクトの取得
オブジェクト・ストアから特定の PublishRequest オブジェクトを取得するには、パブリッシュ要求の ID を使用してインスタンスをフェッチします。
Java の例
PublishRequest pubReq = Factory.PublishRequest.fetchInstance(objectStore, new Id("{0048AE3D-0AE3-478B-B5BC-2256292EE2AE}"), null);
C# の例
IPublishRequest pubReq = Factory.PublishRequest.FetchInstance(objectStore, new Id("{0048AE3D-0AE3-478B-B5BC-2256292EE2AE}"), null);
PublishRequest コレクションの取得
オブジェクト・ストアで入手できるパブリッシュ要求を含む PublishRequests コレクションを取得するには、SearchScope.fetchObjects を呼び出します。例えば、以下のコードはまずオブジェクト・ストアにあるパブリッシュ要求をすべて取得した後、特定のタイプのパブリッシュ要求を取得します。
Java の例
// パブリッシュ要求のコレクションを取得する
public static void retrieveRequestCollections(
ObjectStore objectStore)
{
// Retrieve all publish requests.
String sqlStr = "Select * from PublishRequest";
getPublishRequests(objectStore, sqlStr);
// 現在エラー状態になっている PDF ハンドラーに対するパブリッシュ要求をすべて取得する
sqlStr = "Select pr.Id from PublishRequest AS pr " +
"INNER JOIN PublishStyleTemplate AS st ON pr.PublishStyleTemplate = st.This WHERE " +
"st.ProviderID = 'PublishRequestPDFHandler' AND pr.PublishingStatus = 3";
getPublishRequests(objectStore, sqlStr);
}
// パブリッシュ要求を取得する
public static void getPublishRequests(
ObjectStore objectStore,
String sqlStr)
{
// Retrieve publish requests.
SearchSQL sql = new SearchSQL(sqlStr);
SearchScope ss = new com.filenet.api.query.SearchScope(objectStore);
EngineCollection ec = ss.fetchObjects(sql, null, null, Boolean.TRUE);
// パブリッシュ要求の処理を繰り返す
Iterator iter = ec.iterator();
if (iter.hasNext())
{
// Get next publish request.
PublishRequest pubReq = (PublishRequest) iter.next();
// Get source document.
pubReq.fetchProperties(new String[] {PropertyNames.ID, PropertyNames.INPUT_DOCUMENT});
Document srcDoc = Factory.Document.fetchInstance(objectStore, pubReq.get_Id(), null);
// ソース・ドキュメントのタイトルとエラーの説明を表示する
System.out.println("The publish request for " + srcDoc.get_Name() + "has the error: " +
pubReq.get_ErrorCode() + " and is caused by " + pubReq.get_ErrorDescription() + "¥n");
}
}
C# の例
// パブリッシュ要求のコレクションを取得する
public static void RetrieveRequestCollections(
IObjectStore objectStore)
{
// Retrieve all publish requests.
string sqlStr = "Select * from PublishRequest";
GetPublishRequests(objectStore, sqlStr);
// 現在エラー状態になっている PDF ハンドラーに対するパブリッシュ要求をすべて取得する
sqlStr = "Select pr.Id from PublishRequest AS pr INNER JOIN PublishStyleTemplate AS st
ON pr.PublishStyleTemplate = st.This
WHERE st.ProviderID = 'PublishRequestPDFHandler' AND pr.PublishingStatus = 3";
GetPublishRequests(objectStore, sqlStr);
}
// パブリッシュ要求を取得する
public static void GetPublishRequests(
IObjectStore objectStore,
String sqlStr)
{
// Retrieve publish requests.
SearchSQL sql = new SearchSQL(sqlStr);
SearchScope ss = new SearchScope(objectStore);
IEngineCollection ec = ss.FetchObjects(sql, null, null, true);
// パブリッシュ要求の処理を繰り返す
foreach (IPublishRequest pubReq in ec)
{
// Get source document.
string[] pn = { PropertyNames.ID, PropertyNames.INPUT_DOCUMENT };
pubReq.FetchProperties(pn);
IDocument srcDoc = Factory.Document.FetchInstance(objectStore, pubReq.Id, null);
// ソース・ドキュメントのタイトルとエラーの説明を表示する
Console.WriteLine("The publish request for " + srcDoc.Name + " has the error: "
+ pubReq.ErrorCode + " and is caused by " + pubReq.ErrorDescription + "¥n");
}
}
PublishRequest プロパティーの操作
PublishRequest に関する情報を取得するには、そのプロパティーの照会を行います。PublishRequest クラスは、他のクラスからいくつかのプロパティーを継承し、その他のプロパティーを追加します。それらのプロパティーを以下の表にまとめます。PublishRequest オブジェクトのプロパティーについて詳しくは、PublishRequest Properties を参照してください。
プロパティー | Settability | 説明 |
---|---|---|
ErrorCode | 読み取り専用 | パブリッシュ要求のエラー状態を示す値。 |
ErrorDescription | 読み取り専用 | パブリッシュ要求エラーの原因を示す文字列。 |
InputDocument | 読み取り/書き込み | パブリッシュ操作への入力として使用するドキュメントを示す文字列。 |
OutputFolder | 読み取り/書き込み | パブリッシュ操作の出力 (パブリッシュ・ドキュメント) を格納するフォルダーを示す文字列。 |
PublicationDocument | 読み取り/書き込み | 既存のドキュメントを再パブリッシュする場合で、現在のドキュメントをバージョン管理するオプションを設定してある場合に使用するドキュメントを示す文字列。 |
PublishingStatus | 読み取り専用 | パブリッシュ要求の状況を示す文字列。 |
PublishRequestType | 読み取り専用 | パブリッシュ要求のタイプを示す整数。 |
PublishStyleTemplate | 読み取り専用 | このパブリッシュ要求に関連する PublishStyleTemplate オブジェクトへの参照を含むオブジェクト値プロパティー。 |
PublishTemplate | 読み取り/書き込み | このパブリッシュ要求に関連する PublishTemplate オブジェクトへの参照を含むオブジェクト値プロパティー。(再パブリッシュ操作の場合、値は null です。) |
StatusDescription | 読み取り専用 | このパブリッシュ要求の状況を示す文字列。 |