在使用Anylogic時我們有時需要讓它訪問管理信息系統(tǒng)或者進行網(wǎng)絡(luò)通信,這是我們可以考慮使用服務(wù)器或文件系統(tǒng)的方式讓Anylogic對特定鏈接或者文件進行訪問,本文就來說明如何完成這一目標。
個人站點:https://whl1207.github.io/,記錄一些學(xué)習(xí)筆記,主要寫點基于anylogic的仿真和web開發(fā)方面的知識點。有興趣的同學(xué)可以探討一下!
在學(xué)習(xí)本文前需要對Anylogic和WEB開發(fā)有一定的了解。關(guān)于WEB開發(fā)可以參考《使用thinkphp建立一個簡單的站點》。
一、訪問特定鏈接
1、在Anylogic的智能體面板中拖入一個函數(shù)元素,將其命名為getHtml。
2、在getHtml元素的屬性面板中選擇“返回值”,并設(shè)置返回類型為String。
3、在參數(shù)中設(shè)置名稱為urlString,類型為String。
4、在函數(shù)體中輸入如下代碼:
try {
StringBuffer html = new StringBuffer();
java.net.URL url = new java.net.URL(urlString); //根據(jù) String 表示形式創(chuàng)建 URL 對象。
java.net.HttpURLConnection conn = (java.net.HttpURLConnection) url.openConnection();// 返回一個 URLConnection 對象,它表示到 URL 所引用的遠程對象的連接。
java.io.InputStreamReader isr = new java.io.InputStreamReader(conn.getInputStream());//返回從此打開的連接讀取的輸入流。
java.io.BufferedReader br = new java.io.BufferedReader(isr);//創(chuàng)建一個使用默認大小輸入緩沖區(qū)的緩沖字符輸入流。
String temp;
while ((temp = br.readLine()) != null) { //按行讀取輸出流
if(!temp.trim().equals("")){
html.append(temp).append("\n"); //讀完每行后換行
}
}
br.close(); //關(guān)閉
isr.close(); //關(guān)閉
return html.toString(); //返回此序列中數(shù)據(jù)的字符串表示形式。
} catch (Exception e) {
e.printStackTrace();
return null;
}
5、點擊Anylogic的空白處,在Main智能體的屬性中的啟動時中輸入以下代碼:
System.out.print(getHtml("https://www.baidu.com"));
這樣我們就能返回百度里的代碼,并將其在控制臺中輸出。如果將其與自建的服務(wù)器鏈接,服務(wù)器中創(chuàng)建相關(guān)接口就能夠完成與服務(wù)其的通信,將Anylogic對接到信息系統(tǒng)中。
二、訪問特定文件
1、在Anylogic的智能體面板中拖入一個函數(shù)元素,將其命名為getFile。
2、在getHtml元素的屬性面板中選擇“返回值”,并設(shè)置返回類型為String。
3、在參數(shù)中設(shè)置名稱為fileName,類型為String。
4、在函數(shù)體中輸入如下代碼:
java.io.File file = new java.io.File(fileName);
java.io.BufferedReader reader = null;
java.lang.StringBuffer sbf = new java.lang.StringBuffer();
try {
reader = new java.io.BufferedReader(new java.io.FileReader(file));
String tempStr;
while ((tempStr = reader.readLine()) != null) {
sbf.append(tempStr);
}
reader.close();
return sbf.toString();
} catch (java.io.IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (java.io.IOException e1) {
e1.printStackTrace();
}
}
}
return sbf.toString();
5、在D盤新建一個文本文檔,命名為1.txt,并在其中輸入任何字符。
6、點擊Anylogic編輯器的空白處,在Main智能體的屬性中的啟動時中輸入以下代碼:
System.out.print(getFile("D:/1.txt"));
這樣我們就能返回D盤中1.txt中的文本,并將其在控制臺中輸出。如果將其與其他軟件鏈接,或使用scoket網(wǎng)絡(luò)通信實時修改文件就能將Anylogic對接到其他系統(tǒng)中。