如果ERP中有一個定價模塊爲每個用戶實時計算價格,我們是否有辦法在沒有性能折衷的情況下得到它?您如何設計Hybris與SAP ERP的B2B應用程序定價集成
回答
您可以維護緩存以避免多次調用ERP系統。
這裏是一個示例代碼,您可以嘗試實現緩存 -
CustomCache.java
public class CustomCache
{
@Resource(name = customCacheRegion)
protected CacheAccess customCacheAccess;
//Fetch result from cache
public ResultData readCachedData(final B2BUnitModel customer, final Date date)
{
return (ResultData) customCacheAccess.get(createCacheKey(customer, date));
}
//Update result to cache
public void cacheResult(final B2BUnitModel customer, final Date date,
final ResultData resultData)
{
try
{
customCacheAccess.put(createCacheKey(customer, date), resultData);
}
catch (final SAPHybrisCacheException e)
{
//error
}
}
protected CustomCacheKey createCacheKey(final B2BUnitModel customer, final Date date)
{
return new CustomCacheKey(customer, date);
}
}
緩存鍵 -
public class CustomCacheKey extends AbstractCacheKey
{
private final B2BUnitModel customer;
private final Date date;
@Override
public int hashCode()
{
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((customer == null) ? 0 : customer.hashCode());
return result;
}
@Override
public boolean equals(final Object obj)
{
if (obj == null)
{
return false;
}
if (!super.equals(obj))
{
return false;
}
final CustomCacheKey customCacheKey = (CustomCacheKey) obj;
if (customer == null)
{
if (customCacheKey.customer != null)
{
return false;
}
}
else if (!customer.equals(customCacheKey.customer))
{
return false;
}
if (date == null)
{
if (customCacheKey.date != null)
{
return false;
}
}
else if (!DateUtils.isSameDay(date, customCacheKey.date))
{
return false;
}
return true;
}
}
* -spring.xml -
<bean id="customCacheRegion" parent="sapCoreCacheRegion">
<constructor-arg name="name"
value="customCacheRegion" />
<constructor-arg name="maxEntries" value="10000" />
<constructor-arg name="evictionPolicy" value="FIFO" />
<constructor-arg name="statsEnabled" value="true" />
<constructor-arg name="exclusiveComputation" value="false" />
<constructor-arg name="ttlSeconds" value="300" />
</bean>
<bean
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="cacheRegionsList" />
<property name="targetMethod" value="add" />
<property name="arguments">
<ref bean="customCacheRegion" />
</property>
</bean>
所以緩存是一種地圖,您可以定義鍵值對,並獲取從密鑰本身的緩存值。
最後在您的服務層,在調用ERP系統之前,只需檢查是否針對特定客戶(或您的情況中的其他條件),數據是否在緩存中可用。如果可用,則直接從緩存中獲取它,否則調用ERP系統並將結果更新到緩存。
謝謝Shreshtt Bhatt。它真的幫助我。 – racha11
@ racha11如果它可行,請您接受這個答案:) –
如果同一個用戶會更改條目/產品,那麼應該如何區分是否應該返回上一個緩存價格或者應該調用ERP? –
- 1. SAP ERP 4.0集成
- 2. 如何使用Web服務將SAP應用程序與SAP集成?
- 3. 如何在hybris中啓用b2b請求報價按鈕6.3
- 4. Magento與ERP集成
- 5. Magento與ERP和動態定價的集成
- 6. 應用程序設計/集成
- 7. 與B2B應用程序的AppStore問題
- 8. 與SAP集成
- 9. Hybris SAP使用Spring?
- 10. ERP集成使用C#/ Windows應用程序
- 11. 分銷B2B應用程序
- 12. 與SAP集成Primavera
- 13. facebook應用程序如何與iPhone/Android應用程序集成?
- 14. Hybris SVG集成
- 15. CQ5 hybris集成
- 16. flex 4:如何正確地將Flash設計與Flex應用程序集成?
- 17. Azure AD,B2B和Shibboleth集成
- 18. 您如何(部分)隱藏您的XPages應用程序的設計?
- 19. 將我的RESTful Web應用程序與客戶的SAP安裝集成
- 20. magento與erp和crm的集成
- 21. B2B應用程序構建和維護成本
- 22. iOS B2B計劃:您是否可以使用您開發的同一業務「購買」該應用程序?
- 23. 您將如何在asp.net中設計BPM應用程序?
- 24. 如何將PHP應用程序與ERP系統連接起來?
- 25. 如何學習SAP ERP(無需購買)?
- 26. Hybris Sap CPQ獲取樣本數據
- 27. Grafana與SAP HANA集成
- 28. 將SAP Webdynpro集成到普通網站(Web應用程序)
- 29. 如何將新的應用程序與舊的現有應用程序集成
- 30. 貝寶與應用程序的集成
我會說只是實施一些緩存,以避免對您的ERP多次呼叫。 –