目录
前言
本来上周计划写静态交通管制算法的,但是由于管制算法涉及的知识面太广,结果是越写越复杂,所以最后便决定找一个富裕时间来完成它,所以这周先讲点逻辑组织上的东西。
关于ESI(外部系统接口组件)的设计。它的简要介绍在前面已经说过----用于AGVS和外部主机系统(MES,WCS,ERP等)的数据交互,今天是对它更详细的讲解。
正文
ESI主要由以下几部分组成:
1、轮询数据库通讯线程1
ESI应该具备一个继承自通讯线程(CommunicationThread)的数据库轮询线程—PolledDatabaseCommunicationThread(简称PDCT)。
ESI使用该线程对中间数据库表进行相关操作(增删改查)。
在前面我们提到,在国内大多数AGVS和MES使用的是中间数据库表来进行数据交互的方式(协议)。
轮询线程的数据库连接,使用通用数据库工厂模式:DbProviderFactory,所以你需要建立一个DatabaseConnection类来进行通用(sql、mysql、Oracle)数据库连接、关闭、资源释放。
2、通用数据库连接工厂
DatabaseConnection类的建立很简单,所以这里不详细介绍。
算了,还是说一下吧:
一个DatabaseConnection类应该包括:
- 通用数据库工厂DbProviderFactory;
- 连接数据库字符串Connection用于连接到数据库;
- 数据库连接DbConnection;
- 数据库事务DbTransaction;
- 释放资源方法Dispose();
- 连接数据库Connect(建立工厂数据库实例(sql或者oracle),con.Open());
- 添加指令参数AddCommandParameter(用于数据库增删改的存储过程,cmd.CreateParameter);
- CreateDataAdapter来获取数据库table;
- BeginTransaction和EndTransaction(Rollback、Commit);
- ToString()等等
这个通用数据库操作工厂将适用于大多数数据库的连接,相当于SqlHelper+OracleHelper+。。。Helper的DbHelper集合。其实它本身也没有什么可说的&#x