Изменение сценариев

Для внедрения новой веб-службы нужно изменить сценарии.

Нужно внедрить новую веб-службу. В следующем примере веб-служба называется ITEM_RECATEGORIZE. Эта веб-служба принимает первичный ключ и новый путь категории в качестве входных значений и возвращает состояние (успешно или неудачно). Входной XML описан в разделе Изменение кода категоризации.

В продукте предусмотрено несколько расширений на языке WSDL и поддерживающие библиотеки сценариев, так что веб-службы интеграции портала можно расширить, не изменяя исходные файлы и пакета продукта.

Инкрементная разработка сценариев

В приведенном ниже примере веб-служба wpc_integrated_dev расширена для обработки запросов повторной категоризации элемента. WSDL уже приспособлен для запросов такого типа.

<xs:complexType name="wpcCommandType">
	<xs:sequence>
		<xs:element name="wpcCatalogName" type="xs:string"
minOccurs="0"/>
	</xs:sequence>
	<xs:attribute name="type" use="required">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value=" ITEM_RECATEGORIZE "/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
<xs:attribute name="mode" use="optional">
	<xs:simpleType>
		<xs:restriction base="xs:string">
			<xs:enumeration value="SYNC"/>
		</xs:restriction>
	</xs:simpleType>
</xs:attribute>
</xs:complexType>
В примере эту обработку выполняет метод запроса в сценарии расширения. Возможная реализация этого метода:
//------------------------------------------------------
//Global variable declaration
//------------------------------------------------------
function processRequest(infoMap)
{
..................
	if(sExtCmd == " ITEM_RECATEGORIZE")
	{
.......................................................
//fetch the parameter etc
}
else
{
		log.invoke("DEBUG", "-- ITEM_RECATEGORIZE -- function
processRequest(infoMap) didn't find sExtCmd[" + sExtCmd + "]");
}
}
Веб-служба ITEM_RECATEGORIZE должна указывать на эту функцию.

Ниже ответ на эту команду:

function constructResponseForReCategorize (infoMap)
{
		var XML_ RECATEGORIZE = "";
		var err;
	var libraryResponse = getScriptByPath("scripts/triggers/WPC-Portal-
ResponseUtil.wpcs");
	var getNotificationInfoPartMethod =
libraryResponse.getFunctionByName("getNotificationInfoPart");
		catchError(err)
{
...........................................................
	// Retrieve the catalog
	var ctg = getCtgByName(infoMap["CATALOGNAME"]);
	var parentCategory = infoMap["PARENTCATEGORY"];
...........................................................
	// Prepare the response xml
	if(XML_RECATEGORIZE!= "")
	{
		result = "<wpc:wpcTradeCategory ID=\""
		+ infoMap["PARENTCATEGORY"] + "\"><wpc:wpcParentCategory>"
		+ infoMap["PARENTCATEGORY"]
	+"</wpc:wpcParentCategory><wpc:wpcCatalogName>"
		+ infoMap["CATALOGNAME"] +
"</wpc:wpcCatalogName><wpc:attribute-list>"
		+ XML_RECATEGORIZE + "</wpc:attributelist></
wpc:wpcTradeCategory>";
	}
	}
	}
function getResponse(infoMap)
{
		var result = "";
		//Retrieve the command
		var sCmdType =
	checkString(parseXMLNode("wpc:wpcBody/wpc:wpcCommand/wpc:extension/wpc
:wpcCommand@type"),"");
		if (sCmdType == " ITEM_RECATEGORIZE ")
		{
		result = constructResponseForReCategorize (infoMap);
		}
		else
		{
			// soapFaultCode
		}
	}
В этом примере для записи для Portal_Config с ключом EXT_RESPONSE нужно задать getResponse.


Последнее изменение: 12 Mar 2019