Configuración del URL de impresión de libros
Es posible que se encuentren problemas con la función de impresión del libro si se incluyen URL externos e internos en el entorno. Hay una propiedad de configuración que se puede definir en esta situación.
• Propiedad: com.ptc.sc.sce.util.SCEBulkPrintUtility.remotePrintServiceExtUrl
• Ejemplo: $(wt.webserver.protocol)://<nombre de host externo del servidor>:puerto http externo del servidor>/PrintMS/rest/PrintService
|
|
Esta propiedad se debe modificar solo cuando el servidor tiene una dirección externa diferente a la interna.
|
Configuración del URL de descarga para la funcionalidad bookPrint en un entorno de clúster
Para configurar el URL de descarga para la funcionalidad bookPrint en un entorno de clúster, siga estos pasos:
|
|
Estos pasos son obligatorios solo cuando los usuarios de Servigistics InService no pueden acceder desde un dominio exterior a las instancias de Viewer configuradas en un entorno de clúster, y pueden acceder al sitio de entrega de Servigistics InService solo a través del URL del equilibrador de la carga.
|
1. Extienda el valor por defecto com.ptc.sc.sce.services.SCEBulkPrintService y reemplace los siguientes métodos:
◦ getBulkPrintsStatus
◦ printBulk
Estos dos métodos se encargan de crear el URL que se envía al cliente y que contiene el URL de descarga del libro.
2. Añada una nueva entrada de propiedad en 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. Cree las siguientes clases JAVA personalizadas:
◦ 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. Para compilar estas clases JAVA, realice los siguientes pasos:
a. Cree una nueva carpeta personalizada en el directorio <WT_HOME>/codebase.war/.
b. Cree la estructura de paquete para com.custom.sc.sce.services y com.custom.sc.sce.util.
c. Coloque el fichero CustomSCEBulkPrintService.java en el paquete com.custom.sc.sce.services.
d. Coloque el fichero CustomSCEBulkPrintUtility.java en el paquete com.custom.sc.sce.util.
e. Abra un símbolo del sistema y vaya al directorio <WT_HOME>/bin.
f. Ejecute un shell de Windchill. Se abre un shell de Windchill necesario para compilar ficheros JAVA.
g. Cambie el directorio a <WT_HOME>.
h. Ejecute el comando javac codebase.war/custom/com/custom/sc/sce/services/CustomSCEBulkPrintService.java.
i. Ejecute el comando javac codebase.war/custom/com/custom/sc/sce/util/CustomSCEBulkPrintUtility.java.
j. Cree una estructura de paquete similar como com/custom/sc/sce/services/ y com/custom/sc/sce/util/ dentro de la carpeta <WT_HOME>/codebase.war/WEB-INF/classes/.
k. Coloque las clases JAVA compiladas en las ubicaciones correspondientes.
l. Añada la siguiente entrada al fichero 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. Ejecute xconfmanager -pF desde el shell de Windchill.
n. Reinicie Servigistics InService.