如何在SAP产品配置或SAP解决方案配置中查找用于SAP商务的运行时引擎版本

323 阅读3分钟

如果您在内部运行SAP产品配置或SAP商务的SAP解决方案配置,您很可能需要在某一天检查已安装的SAP产品/解决方案配置运行时引擎的版本,以确保其为最新版本或验证其已正确更新。您可能还需要验证您的所有SAP Commerce服务器节点是否运行相同版本的SAP Product/Solution Configuration Runtime Engine。例如,我曾多次遇到这样的情况,SAP Commerce运行多个版本的SAP Product/Solution Configuration Runtime Engine,导致产品配置器出现奇怪的问题。然而,检查SAP产品/解决方案配置运行时引擎的安装和版本可能很繁琐。它需要文件系统的访问权限,而出于安全原因,SAP Commerce的管理员并不总是被授予这种权限。

解决方案

我建立了这个小的Groovy脚本,可以通过hAC执行,检查SAP Product/Solution Configuration Runtime Engine是否正确安装,其次是显示其版本。

import com.sap.custdev.projects.fbs.slc.cfg.IConfigSession

Collection<URL> findSscMavenPomProperties() {
    return IConfigSession.class.getClassLoader().getResources("META-INF/maven/com.sap.custdev.projects.fbs.slc/com.sap.custdev.projects.fbs.slc.ssc/pom.properties").collect()
}

Set<String> findSscVersions() {
    return findSscMavenPomProperties().collect {
        it.withInputStream {
            final Properties pomProperties = new Properties()
            pomProperties.load(it)
            return pomProperties.getProperty("version")
        }
    }.unique()
}

List<URL> findSscJars() {
    return findSscMavenPomProperties().findAll { "jar".equalsIgnoreCase(it.protocol) }.collect { new URL(it.path.substring(0, it.path.indexOf('!'))) }
}

def sscVersions = findSscVersions()
if (sscVersions.size() > 1) {
    println "Multiple versions of SAP Product/Solution Configuration Runtime Engine found: ${sscVersions.join(", ")}"
    println "Mutliple SAP Product/Solution Configuration Runtime Engine JARs found:"
    findSscJars().each {
        println " - ${it.toExternalForm()}"
    }
} else if (sscVersions.size() == 1) {
    println "SAP Product/Solution Configuration Runtime Engine version is ${sscVersions.iterator().next()}"
} else {
    println "No SAP Product/Solution Configuration Runtime Engine found"
}

hAC > Console > Scripting Languages中运行它,然后点击Output标签查看结果。如果你的SAP商务服务器节点配置正确,该脚本将返回与此类似的输出。

SAP Product/Solution Configuration Runtime Engine version is 3.2.21

另一方面,如果你的SAP Commerce节点运行多个版本的SAP Product/Solution Configuration Runtime Engine,该脚本将返回类似这样的输出。

Multiple versions of SAP Product/Solution Configuration Runtime Engine found: 3.2.24, 3.2.21
Mutliple SAP Product/Solution Configuration Runtime Engine JARs found:
 - file:/[...]/hybris/bin/modules/sap-product-configuration-on-premise-edition/sapproductconfigruntimessc/lib/com.sap.custdev.projects.fbs.slc.ssc-3.2.24.jar
 - file:/[...]/hybris/bin/modules/sap-product-configuration-on-premise-edition/sapproductconfigruntimessc/lib/com.sap.custdev.projects.fbs.slc.ssc-3.2.21.jar

这时你必须决定保留哪个版本,并删除其他版本的JAR。

限制条件

SAP Product/Solution Configuration Runtime Engine 3.x版本被打包在一个独特的JAR中,包括Data Loader。然而,2.x版本被打包在三个不同的JAR中,不包括Data Loader。脚本只会检测到其中一个,即包装了IConfigSession 接口的那个。因此,如果脚本检测到2.x版本的多个版本,请确保删除所有JAR的不需要的版本,而不仅仅是脚本所返回的JAR。

此外,该脚本只检查运行SAP Commerce服务器节点上安装的SAP Product/Solution Configuration Runtime Engine的安装和版本。如果你有一个多节点的集群,你将不得不在每个服务器节点上执行它。

总结

这个小脚本是运行SAP产品配置或SAP解决方案配置的SAP商务管理员的一个好帮手。它可以帮助快速验证在整个SAP商务系统中是否正确安装了正确的版本,特别是在更新或修补了SAP产品/解决方案配置运行时引擎之后,它的作用尤为重要。