IBM Support

Supply Chain Apps/MCF and GIS Integration via Standard Adapters

Question & Answer


Question

Supply Chain Apps/MCF and GIS Integration via Standard Adapters

Answer

Backrgound:

The Yantra Supply Chain Apps/Sterling Multi-Channel Fulfillment (MCF) Service Definition Framework (SDF) provides hooks to connect to external systems like Sterling GIS through custom adapters. MCF currently provides the following standard adapter: Sterling GIS.

This adapter is used for communicating with the Sterling Gentran Integration Suite (GIS) product over the HTTP protocol. It is capable of streaming XML over HTTP connection as opposed to sending name-value pairs resulting in better performance. However, if you want to use name-value pairs you need to be on a specific GIS fix pack.

1. How did Yantra Supply Chain Apps/Sterling Multi-Channel Fulfillment (MCF) API's integrate with GIS before MCF 8.0 version?

Sterling provided two jars, which exposed the standard API's to GIS. The two jars are yfcbe.jar and yfsclient.jar and were available in the <YFS_HOME>/lib folder.

2. Is there any change in MCF 8.0 version with respect to the standard adapters?

Yes, there is a change in the architecture. We no longer require the above jars (yfcbe.jar, yfsclient.jar) from MCF side to support the integration.

3. How do we expose the standard API's if there are no jars provided in MCF 8.0?

GIS version 4.3, patch 4312 supports the integration without any jars. It also details the changes regarding the integration of the standard adapters. Please contact GIS support for further queries regarding the patch.

4. How do we expose the standard and custom APIs in GIS?

On application of patch 4312, standard adapters get access to the standard MCF APIs. However for custom APIs, this patch does not help. As of MCF 8.0, we do not have a way to call custom APIs using the standard adapters.

5. How does customer get access to custom API's if there are no standard adapters?

Customers can either use the Web services or create a custom service via the MCF 8.0 SDF.

a. For Web services approach, reference the appropriate "Preparing to Build Web Services" section (by Application Server) in the MCF Installation Guide.

b. For custom service approach, the service will be comprised of Start -> API -> End, with the API being a custom API and name of the code. Reference the MCF Platform Configuration Guide and Customization Guide.

If, after the custom service has been created, the system gives the following error, what is the cause of this error and how can we resolve it?

15:48:36,366 INFO [STDOUT] 2008-10-29 15:48:36,366:ERROR :http-0.0.0.0-8080-4: Api Name HrzProcessOrderService should exist in the map []: DefaultApiRepository 15:48:36,591 INFO [STDOUT] 2008-10-29 15:48:36,591:ERROR :http-0.0.0.0-8080-4: YFS Exception while invoking api HrzProcessOrderService []: InteropHttpServlet 15:48:36,592 INFO [STDOUT] 2008-10-29 15:48:36,592:ERROR :http-0.0.0.0-8080-4: 1225309716591] Could not resolve the API name. [anonymous]: InteropHttpServlet 15:48:36,592 INFO [STDOUT] 2008-10-29 5:48:36,592:ERRORDTL:http-0.0.0.0-8080-4 : [1225309716591] <Errors> <Error ErrorCode="YCP0229" ErrorDescription="Could not resolve the API name." ErrorRelatedMoreInfo="HrzProcessOrderService"> <Attribute Name="ErrorCode" Value="YCP0229"/> <Attribute Name="ErrorDescription" Value="Could not resolve the API name"/> <Attribute Name="ErrorRelatedMoreInfo" Value="HrzProcessOrderService"/> <Stack>com.yantra.yfc.util.YFCException at com.yantra.interop.services.api.DefaultApiRepository.resolveClassName(DefaultApi Repository.java:722) at om.yantra.integration.adapter.DefaultIntegrationFlow.resolveClassNam e(DefaultIntegrationFlow.java:72) at com.yantra.interop.services.api.ApiSignatureResolver.<init>(Api SignatureResolver.java:49) at com.yantra.interop.services.api.ApiHelper.invoke(ApiHelper.java:439) at com.yantra.integration.adapter.DefaultIntegrationFlow.invoke(DefaultIntegrationF low.java:138) at com.yantra.interop.services.api.ApiRequestDispatcher.invoke ApiRequestDispatcher.java:80) at com.yantra.interop.client.InteropHttpServlet.handleApiRequest(InteropHttpServlet .java:273) at com.yantra.interop.client.InteropHttpServlet.processRequest(InteropHttpServlet.j ava:115) at com.yantra.interop.client.InteropHttpServlet.doPost(Inter

In MCF, we can call a service through the HTTP API tester by selecting the IsService checkbox. However in GIS, there is no facility to invoke an MCF service, since invoking a service was never really part of the standard adapters to GIS.

The issue here is that GIS is unable to resolve the passed service name as it still considers it as an API name, hence the error.

Possible work-around for this error:

1) Set URL in business process as InteropHttpSerlvet followed by ‘?IsFlow=Y’. For example, http:/ /<host>:<port>/<APPL_ID>/interop/InteropHttpServlet?IsFlow=Y. <host> and <port> should be completed with their static equivalents.

NOTE: <APPL_ID> refers to the keyword recognized by the standard adapters.

For MCF 8.2 and prior, including legacy Yantra Supply Chain Apps versions, use "yantra", e.g. http://<h ost>:<port>/yantra/interop/InteropHttpServlet?IsFlow=Y.

For MCF 8.5 and later, use "smcfs", e.g. http://<ho st>:<port>/smcfs/interop/InteropHttpServlet?IsFlow=Y.

2) This should be used only when invoking a service.

Following is a simple BP that GIS team has tested successfully in GIS 4.3 patch 4313 to invoke an MCF service created in 8.0 HF23:

<process name="getOrganizationListThroughService">
<operation name="YantraAPI">
<participant name="TestYantraAPI"/>
<output message="NewYantraApiInputMessage">
<assign to="apiName">ATestService</assign> <assign to="progId">GIS </assign> <assign to="protocol">HTTP</assign> <assign to="url">http://<host>:<port>/yantra/interop/InteropHttpServlet?IsFlow=Y</assign > <assign to="userId">GISUser</assign> <assign to="." from="*"></assign>
</output> <input message="inmsg">
<assign to="." from="*"></assign>
</input>
</operation>
</process>

Please contact GIS support for further queries.

6. Is it possible to use the template feature of the MCF API call with the standard adapters to GIS, and if so, how is this done?

This can be done by passing the template along with the input xml being passed to the adapter. While forming the input xml to the MCF API in the BP, add the template as another element and pass the required subset of attributes.

When using the template facility from within GIS, we always need to call the multiAPI API as below. For example:

<MultiApi>
<API Name="getOrderDetails">
<Input>
<Order EnterpriseCode="Enterprise1" OrderNo="Order1" DocumentType=”0001” />
</Input>
<Template>
<Order OrderHeaderKey="">
<OrderLines>
<OrderLine OrderLineKey="" ItemID="" />
</OrderLines>
</Order>
</Template>
</API>
</MultiApi>

[{"Product":{"code":"SS3JSW","label":"IBM Sterling B2B Integrator"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Component":"Extensions","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}},{"Product":{"code":"SS3JSW","label":"IBM Sterling B2B Integrator"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Component":"Adapters","Platform":[{"code":"","label":""}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}},{"Product":{"code":"SS3JSW","label":"IBM Sterling B2B Integrator"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Component":"Mapping and Translation","Platform":[{"code":"","label":""}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}},{"Product":{"code":"SS6PEW","label":"IBM Sterling Order Management"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Component":"Extensions","Platform":[{"code":"","label":""}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}},{"Product":{"code":"SS6PEW","label":"IBM Sterling Order Management"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Component":"Adapters","Platform":[{"code":"","label":""}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}},{"Product":{"code":"SS6PEW","label":"IBM Sterling Order Management"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Component":"Mapping and Translation","Platform":[{"code":"","label":""}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

Historical Number

FAQ2782

Document Information

Modified date:
16 June 2018

UID

swg21517376