为了让身处各地的专家们都能在接到通知后立即开展应急物资的筹运决策活动,应急物资筹运的决策支持平台的兼容性就是必须考虑的问题。因此,本节采用浏览器/服务器的网络结构模式(B/S模式)设计该决策支持平台。与传统的客户端/服务器的软件结构模式(C/S模式)相比,B/S模式具有更强的实用性。专家只需要有一台能上网的拥有网络浏览器的计算机即可登录决策支持平台,而无需对客户端进行安装和维护。
图6-7 决策支持平台功能模块
应急物资筹运的决策支持平台采用三层架构设计,包括表示层、业务逻辑层和数据访问层。表示层就是呈献给工作人员、专家和决策者的界面,亦即他们与决策支持平台直接交流的窗口。业务逻辑层就是针对具体问题的操作。工作人员在此决策支持平台中集成的所有算法、仿真方法等都属于业务逻辑层。例如工作人员在操作界面输入应急物资的预期需求量,提前订购单价,补充征购单价等参数,业务逻辑层会利用“重大突发事件应急物资预先准备模型”计算出应急物资最优的准备量;工作人员在操作界面上输入每条运输路线的预期耗时量,业务逻辑层会利用“重大突发事件应急物资运输调度的模型”计算出车辆的最优运输路线。数据访问层的主要功能是访问数据库,对数据库中的原始数据进行操作。例如工作人员在表示层,即其操作界面上添加、修改或删除专家信息,编辑事件应对经验等,数据访问层将这些操作作用在数据库上,从而实现对数据库中数据的管理。而在数据库中,包括三个子库:专家库、事件库和经验库。专家存放有各领域专家的基本信息,事件库存放有当前事件的各类具体信息,而经验库存放有以往所有重大突发事件的应急物资筹运工作的经验和教训。
综上所述,重大突发事件应急物资筹运决策支持平台的三层架构设计如图6-8所示。
图6-8 应急物资筹运决策支持平台的三层架构设计
在应急物资筹运决策支持平台中,共有三种用户类型,包括工作人员、专家和决策者。这三种用户所看到的界面是不一样的。根据图7-7所示的平台每个功能模块相关的用户类型可以下面的原则设计每类用户的操作界面:工作人员的操作界面包括该决策支持平台所有的功能模块,专家的操作界面包括专家评估平台和即时交流平台两个功能模块,而决策者的操作界面仅包括即时交流平台。但对于信息发布平台,专家和决策者两类用户虽然没有权限直接操作,但可以查看上面公布的所有灾情信息和决策信息等。而工作人员在进行完每一环节的工作后,都将相应的结果公布到信息发布平台上,例如实时更新的灾情信息、专家预测的应急物资需求种类和数量信息、专家评估的运输线路耗时量信息,以及计算机算出的应急物资需求预测结果和车辆最优运输路线结果等。图6-9显示了应急物资筹运决策支持平台中的工作人员操作界面。
图6-9 应急物资筹运决策支持平台的工作人员操作界面
在重大突发事件应急物资筹运的决策支持平台中,前端信息系统与后端数据库之间的通讯是频繁发生的。因此,就必须用到面向对象的类库ADO.NET去与数据库进行交流。运用ADO.NET与数据库通讯的第一步是用“connection”对象来提供数据库连接参数,例如服务器名、数据库名、用户名和密码等。第二步是运用“command”对象去进行数据添加、删除、修改和排序。“command”对象包括很多类函数,如“ExecuteReader()”,“ExecuteScalar()”,“ExecuteNonQuery()”等。第三步是运用“DataReader”去读取数据或者运用“DataAdapter”对象去修改数据。
例如对于一些固定的突发事件信息和经验信息,可以采取只读的方式访问数据库,具体代码如下:(www.xing528.com)
string connectionString=“Server=TestServer;Database=TestDatabase;Uid=sa;Pwd=000”;//get the connection string
SqlConnection conn=new SqlConnection(connectionString);//create connection object
SqlCommand comm=conn.CreateCommand();//create command object
comm.CommandType=CommandType.StoredProcedure;
comm.CommandText=”test_procedure”;
comm.Connection.Open();//open the connection of the command object
SqlDataReader reader=comm.ExecuteReader();//create DataReader object
DataTable table=new DataTable();//create DataTable object
table.Load(reader);//load the DataTable with the data in DataReader object
reader.Close();//close DataReader object
comm.Connection.Close();//close the connection of the command object
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。