U9-mes插件开发
新建项目
下载Visual studio
可以选择拷贝一份标准的U9插件项目进行修改,或者如下图新建项目,选择类库,输入项目名称,选择项目位置,点击创建即可。




现有标准项目以及各个项目的U9插件全部存放在主机名称为U9DEV,IP为192.168.0.64这台机器中,具体存放位置为D:\std,可以 通过公司网络用远程桌面连接,或者用向日葵以及todesk等。
打开现有项目,以std为例,进入D:\std\std\std\UFIDA.U9.Cust.Std.BEPlugin,打开UFIDA.U9.Cust.Std.BEPlugin.sln文件即可。
项目开发
- 项目结构一般包括两个文件夹Entity和Util,Entity包主要是进行不同实体的具体插件开发,Util包则是对配置信息进行读取,以及连接mes服务等。

DataPush.cs主要包含获取mes连接,推送数据的方法,其中包括请求工匠接口postRequest()方法、校验token方法checkToken()、获取token方法getGJToken()、获取ApiCode方法getApiCode()。

ReadXML.cs主要是用来读取applicationServer/libs下的配置文件,也就是从BE文件夹复制过去的gjzzConfig 和gjzzApiConfig。(下文有详细介绍)
编写代码时用到现有方法或工具类时,可以导入依赖,根据需要引用不同的包。根据不同的需求,有些单据要求新增同步,有些要求审核同步,这是根据单据的SysState来判断的,主要是新增删除修改三个状态,U9具体单据的字段可以从实体查询–华科芯创增强版,输入对应U9单据名称查询到。(需要在启动了U9服务的环境才能打开此网址)

不满足条件就需要直接return,避免建单的时候触发单据的生命周期。
以下是U9新增同步到mes(修改删除同理)。

以下是U9审核同步到mes新增。

开发步骤:先在Entity文件夹添加一个新建项,选择类并且修改名称为需要同步的实体名称加上Sync后缀,这个名称是在后面的UFIDA.U9.Cust.Std.Sub文件中用到。点击添加即可。

新建完之后,按照基本流程校验接收入口参数,得到单据对应的数据,再进行格式转换,之后根据状态判定同步时机,然后调用DataPush.postRequest()方法同步数据即可。



如果有需要将U9和mes对应起来的枚举字段,可以在这里完成转换。

代码书写完毕后,右键点击右侧解决方案资源管理器中的解决方案XXX,重新生成解决方案。重新生成的文件位置在下方显示。找到相应位置重新生成的两个文件,复制粘贴到配置文件夹BE中,替换原来的文件。



debug调试:点击调试下的附加到进程,搜索w3wp.exe,点击附加即可开始debug调试。需要先重启U9完毕,进行同步操作之后,断点才会到这里来。

项目部署
1.项目部署文件夹第一层包括一个BE文件夹以及一个启动脚本文件,文件位置D:\std\std,名称为标准同步插件启动脚本。

- bebuild文件为启动文件,运行会将生成的代码文件以及配置文件等写入到U9对应文件中,并且重启U9环境,具体操作在文件中有体现。

- BE文件夹中的gjzzApiConfig文件,主要是配置mes在系统集成/功能接口页面下的apicode,用来连接到mes的同步接口。

- BE文件夹中的gjzzConfig文件,主要是配置mes的地址,根据不同组织不同租户 等判断是否同步,其中GJUser是根据mes不同的用户所属的组织来判断是否同步,GJUser为默认用户,。U9Org则是对应同步的组织,U9EnterpriseID则是帐套即租户对应编号,MultiOrg则代表最多可以在几个组织内使用同步插件。

- UFIDA.U9.Cust.Std.Sub文件主要是对U9的实体生命周期配置,主要是增删改操作,新增一个实体也需要在这里进行配置,如果不再需要同步的话也可以在这里注释,即可使同步失效。

配置完毕,双击bebuild即可 重启U9,重启U9服务时,如果复制这两个文件失败,需要打开任务管理器关闭ApplicationServer服务再进行复制。