2016-05-30 33 views
1

我想將一些UniData子例程包裝爲SOAP Web服務。我打算使用C#和UODOTNET庫(用於.NET的IBM U2數據管理接口)。另外我正在創建一個引擎,用於從數據服務器讀取所有可用的子例程,並讀取所有必需的參數並動態生成Web Service所需的代碼。UniData列出所有可用的子例程/所有參數

我的代碼將是這樣的:

var session = UniObjects.OpenSession(
     "192.168.0.1", 
     "user", 
     "password", 
     "account" 
     ); 

var cmd = session.CreateUniCommand(); 
cmd.Command = "LIST SUBURB.INDEX"; // ????? 
cmd.Execute(); 
var res = cmd.Response; 

問題1:有,我可以用它來檢索所有可用的子程序列表中的任何命令?

問題2:是否有任何命令可用於檢索特定子例程的所有參數列表?

乾杯

回答

4

簡短的答案是否定的。

較長的答案是肯定的,但有很多工作。

既然您提出這個問題,我會假設您錯過了很多關於平臺的知識。因此,爲了能夠做到這一點,您需要:

  • 瞭解VOC的工作原理,具體說明可執行代碼如何在此處編目。
  • 瞭解CATALOG,以及如何在全球範圍內進行本地和直接編目。
  • 瞭解您的系統是如何設計的。一些地方可以直接在VOC中編目,其他的則是混合。如果前者,你的問題會更容易。

一旦你瞭解了上述內容,你就會知道如何從VOC,本地目錄和全局目錄中獲得所有可執行程序的列表。例如,VOC的簡化示例是UniQuery命令LIST VOC WITH F1="C"

困難的部分是獲取參數列表,其中沒有任何系統命令。要做到這一點,你有2個選項。

  1. 反向工程的每個子程序的字節碼,並梳理出的參數個數
  2. 如果您有機會獲得相關的源代碼,分析它產生的列表。
+0

這是一個很好的答案。似乎應該很容易,但是對於編目程序的所有選項來說,它畢竟不是那麼簡單。 – JeffK

+0

謝謝@JeffK。我也忽略了'RUN

'變種,如果你正在嘗試編寫一個通用的跨安裝解決方案,那麼這個變種可能會讓你興奮不已。 –

2

只是想在這個上添加註釋,在UniData中有一個MAKE.MAP.FILE命令,它將標識將程序和子程序(以及參數的數量)放入'_MAP_'文件中。這並不能告訴你參數的用途,但它有幫助。