我是Acumatica集成的新手,需要有关如何在用户在Acumatica上创建相同数据后立即在其他系统上自动触发供应商创建的建议。我一直在尝试理解I210_ContractBasedWebServices_6培训材料,据我所知,为了触发数据创建,我需要在VendorMaint图上覆盖Persist方法并添加一些线来调用API控制器,但仍然不知道它是否是最好的的方式与否。
我还需要知道如何配置两个系统之间的连接。另一个系统基于Java构建,使用Enterprise Service Bus(ESB)和Service Adapter与外部系统进行通信。 Web服务也可用但不经常使用。如果我要在C#上开发API控制器,我如何与该ESB和服务适配器通信,以便我可以在其他系统上触发供应商创建?请在这里提出建议。
答案 0 :(得分:1)
是的,您可以使用BLC Persist方法或Vendor DAC RowPersisted事件处理程序来完成此任务。
Acumatica中的供应商屏幕允许用户插入供应商基本信息并在以后填写详细信息。要在两个系统之间正确同步,您需要自定义此屏幕以使所需的所有字段都已填写供应商创建,或者您也可以在用户更新供应商而不是插入
由于我们可以预测Web Service调用可能需要一些时间来执行,因此我们可以将其包装在PXLongOperation委托中。这将在长时间操作中在网页的右上角显示一个等待指示器。
public class VendorMaint_Extension : PXGraphExtension<VendorMaint>
{
public virtual void Vendor_RowPersisted(PXCache sender, PXRowPersistedEventArgs e)
{
Vendor vendor = e.Row as Vendor;
if (vendor != null &&
e.Operation == PXDBOperation.Insert &&
e.TranStatus == PXTranStatus.Completed)
{
PXLongOperation.StartOperation(Base, delegate()
{
// Add your webservice call here
});
}
}
}
从这个回答: How to call web service interface by ESB way 它看起来像ESB Web Service一样,因此您可以使用.Net Framework HttpClient Class来使用它们。您想编写C#ESB Web服务客户端。 Acumatica在撰写Web服务客户端时没有什么特别之处,因此您可以在C#中遵循一般性建议。