Servigistics InService の導入 > 高度な設定 > ブック印刷 URL の設定
  
ブック印刷 URL の設定
使用している環境に外部 URL と内部 URL がある場合、ブック印刷機能で問題が発生することがあります。この状況で設定可能なコンフィギュレーションプロパティが用意されています。
プロパティ: com.ptc.sc.sce.util.SCEBulkPrintUtility.remotePrintServiceExtUrl
例: $(wt.webserver.protocol)://<サーバーの外部ホスト名>:サーバーの外部 http ポート>/PrintMS/rest/PrintService
* 
このプロパティは、サーバーの外部アドレスが内部アドレスと異なる場合にのみ修正する必要があります。
クラスタ環境における bookPrint 機能のダウンロード URL の設定
クラスタ環境で bookPrint 機能のダウンロード URL を設定するには、以下の手順を実行します。
* 
これらの手順は、クラスタ環境で設定された Viewer が外部ドメインから Servigistics InService ユーザーにアクセスできず、これらの Viewer がロードバランサー URL を使用してのみ Servigistics InService 送信サイトにアクセスできる場合に必要です。
1. デフォルトの com.ptc.sc.sce.services.SCEBulkPrintService を延長し、次のメソッドをオーバーライドします。
getBulkPrintsStatus
printBulk
これらの 2 つの方法は、「ブック印刷」機能のダウンロード URL が含まれているクライアントによって使用される URL を構築します。
2. site.xconf の新しいプロパティのエントリを追加します:
<Property name="com.custom.sc.sce.util.CustomSCEBulkPrintUtility.
webAliasPrintServiceUrl"
default="<load balance protocol>://<load balancer host name>:< load balancer
port>/PrintMS/rest/PrintService"
overridable="true"/>
3. 以下のカスタム JAVA クラスを作成します。
CustomSCEBulkPrintService.java
package com.custom.sc.sce.services;
import java.util.List;
import javax.ws.rs.core.MultivaluedMap;
import com.custom.sc.sce.util.CustomSCEBulkPrintUtility;
import com.ptc.sc.conceptualmodel.SCItem;
import com.ptc.sc.conceptualmodel.SCList;
import com.ptc.sc.sce.services.SCEBulkPrintService;
import com.ptc.sc.servicecommon.BulkPrintService;
public class CustomSCEBulkPrintService extends SCEBulkPrintService {
private static final long serialVersionUID = 1L;
/**
* Create a new instance of the
<code>CustomSCEBulkPrintService</code>.
* This factory method is required in order for the method server
process to start successfully.
*/
public static CustomSCEBulkPrintService newCustomSCEBulkPrintService() {
CustomSCEBulkPrintService bulkPrintService = new CustomSCEBulkPrintService();
return bulkPrintService;
}
@Override
public SCList getBulkPrintsStatus(List<String> statusList) throws Exception {
SCList bulkPrintsStatus = super.getBulkPrintsStatus(statusList);
List<SCItem> bulkPrintStatusItems = bulkPrintsStatus.getItems();
for(SCItem bulkPrintStatusItem : bulkPrintStatusItems) {
if(bulkPrintStatusItem.containsAttribute(BulkPrintService.BULK_PRINT_URL)) {
bulkPrintStatusItem.removeAttribute(BulkPrintService.BULK_PRINT_URL);
String printJobId = bulkPrintStatusItem.getAttribute(BulkPrintService.BULK_PRINT_JOB_ID);
bulkPrintStatusItem.addAttribute(BulkPrintService.BULK_PRINT_URL,
getWebAliasPrintJobUrl(printJobId));
}
}
return bulkPrintsStatus;
}
public SCItem printBulk(String bulkPrintId, MultivaluedMap<String, String> headersMap) throws
Exception {
SCItem printBulkItem = super.printBulk(bulkPrintId, headersMap);
if(printBulkItem.containsAttribute(BulkPrintService.BULK_PRINT_URL)) {
String printJobId = printBulkItem.getAttribute(BulkPrintService.BULK_PRINT_JOB_ID);
printBulkItem.removeAttribute(BulkPrintService.BULK_PRINT_URL);
printBulkItem.addAttribute(BulkPrintService.BULK_PRINT_URL,
getWebAliasPrintJobUrl(printJobId));

return printBulkItem;
} }
private String getWebAliasPrintJobUrl(String printJobId) {
String url = CustomSCEBulkPrintUtility.getWebAliasPrintServerUrl() + "/pdf?id=" + printJobId;
return url;
}
}
CustomSCEBulkPrintUtility.java
package com.custom.sc.sce.util;

import wt.util.WTProperties;

public class CustomSCEBulkPrintUtility {
private static final String WEB_ALIAS_PRINT_SERVICE_URL;

static {
try {
WEB_ALIAS_PRINT_SERVICE_URL =
WTProperties.getLocalProperties().
getProperty(CustomSCEBulkPrintUtility.class.getName() +
".webAliasPrintServiceUrl", "http://localhost:8080/webrest/rest/PrintService");
} catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}
public static String getWebAliasPrintServerUrl() {
return WEB_ALIAS_PRINT_SERVICE_URL;
}
}
4. これらの JAVA クラスをコンパイルするには、次の手順を実行します。
a. <WT_HOME>/codebase.war/ ディレクトリに新規カスタムフォルダを作成します。
b. com.custom.sc.sce.services および com.custom.sc.sce.util にパッケージ構造を作成します。
c. パッケージ com.custom.sc.sce.servicesCustomSCEBulkPrintService.java ファイルを配置します。
d. パッケージ com.custom.sc.sce.utilCustomSCEBulkPrintUtility.java ファイルを配置します。
e. コマンドプロンプトを開き、<WT_HOME>/bin ディレクトリに移動します。
f. Windchill シェルを実行します。これにより、JAVA ファイルをコンパイルするために必要な Windchill シェルが開きます。
g. ディレクトリを <WT_HOME> に変更します。
h. javac codebase.war/custom/com/custom/sc/sce/services/CustomSCEBulkPrintService.java コマンドを実行します。
i. javac codebase.war/custom/com/custom/sc/sce/util/CustomSCEBulkPrintUtility.java コマンドを実行します。
j. <WT_HOME>/codebase.war/WEB-INF/classes/ フォルダ内に、com/custom/sc/sce/services/ および com/custom/sc/sce/util/ のようなパッケージ構造を作成します。
k. それぞれの場所にコンパイル済みの JAVA クラスを配置します。
l. 次のエントリを site.xconf ファイルに追加します。
<Property name="wt.services.service.24440"
targetFile="codebase.war/sc.properties"
default="com.ptc.sc.servicecommon.BulkPrintService
/com.custom.ptc.sc.sce.services.CustomSCEBulkPrintService"
overridable="true"
/>
m. Windchill シェルから xconfmanager -pF を実行します。
n. Servigistics InService を再起動します。