因为生产订单状态机的复杂性和特殊性,所以订单的状态机是针对订单分录来执行的,并且Cloud系统内部调用是已经封装了订单状态机的调用接口的,第三方系统利用WebApi调用生产订单的状态机操作,只需要去封装Webapi的实现类,实现类里面主要是调用订单的状态机代码
如何封装Webapi实现类示例如下:
using Kingdee.BOS.JSON;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Util;
using Kingdee.BOS.ServiceFacade.KDServiceFx;
using Kingdee.BOS.WebApi.ServicesStub;
using Kingdee.K3.MFG.App;
using Kingdee.K3.MFG.Contracts.PRD;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kingdee.EK.K3.MFG.WebApi.ServicesStub
{
public class MoTransfer : AbstractWebApiBusinessService
{
public MoTransfer(KDServiceContext context)
: base(context)
{
}
public JSONArray ExecuteService(KeyValuePair<string, List
}
catch (Exception ex)
{
jsonArray.Add(ex.Message);
}
finally
{
}
return jsonArray;
}
}
}
第三方系统调用WebApi实现类如下:
// 使用webapi引用组件Kingdee.BOS.WebApi.Client.dll
//http://localhost:1400/ 本地部署的Cloud站点地址
ApiClient client = new ApiClient("http://localhost:1400/");
//参数:数据中心ID,用户名,密码,语言
bool result = client.Login("59c9f8153bb26a", "demo", "888888", 2052);
// 登陆成功
object responseOut = null;
if (result)
{
//状态机操作码,打开BOS设计器操作列表里面可以找到相应的操作码
string operation = "ToStart";
//生产订单分录内码集合
List
3、代码实现后,如何调试到WebApi的接口类,首先保证Kingdee.EK.K3.MFG.WebApi.ServicesStub这个组件要在本地Cloud的安装目录下面WebSite\Bin下面,调试采用附加IIS进程的方式就可以调试到这个实现类里面了
推荐阅读