前言
之前,想到這樣乙個情景,用乙個指令碼來描述乙個服務的操作,這樣做的好處是,業務邏輯落到了配置檔案。業務變化時只需通過修改配置,而不需要重新編譯系統。
最近幾天,由於工作需要,轉到了伺服器的研發,剛好碰上這一應用場合,終於有機會完成這一指令碼的設計。
ios
簡介
ios是in/out script(
輸入/輸出指令碼)
的簡稱,在我的設計中,用in
,out
,script3
個節點來描述乙個服務呼叫。
設計目標
採用xml
作為服務的描述語言,因為目前xml
解析的庫已非常完善,採用xml
能夠省去大量的語法解析工作;
乙個服務對外界的元素是輸入引數和輸出引數,所以定義了in
,out
兩個節點分別描述;
乙個服務應該包含多個操作,這些操作有先後關係,賦值關係;
服務的多個操作應該支援順序,分支,迴圈3
個基本的執行方式;
服務執行過程中會產生臨時變數,要支援臨時變數的存放;
必須保證服務的多個操作的事務性;
服務的內部錯誤處理。
服務指令碼節點定義
set
節點
定義輸入/
輸出引數:name
引數名稱
io
節點
定義invoke/out
操作:i
執行指令碼,o
輸出變數
if/elseif/else
節點
定義條件執行節點:i
執行判斷指令碼
foreach
節點
定義迴圈遍歷執行節點:i
獲取父項指令碼,o
輸出子項變數
throwerror
節點
定義引發異常節點:i
獲取異常資訊指令碼
error
節點
定義錯誤處理節點
完整的服務指令碼
<servicename="">------【服務節點】name:服務名稱
<in>------【輸入引數】
/>
<out>------【輸出引數】
/>
<scriptt="false">------【服務指令碼】t:transaction事務控制
o=""/> o
=""/>
<ifi=""> o
=""/>------if結果為true時執行
o=""/>
<elseifi=""> o
=""/>------elseif結果為true時執行
o=""/>
<else>
o=""/>------if/elseif所有結果為false時執行
o=""/>
<foreachi=""
o=""> o
=""/>------i值必須是可遍歷的資料型別,o值是遍歷時的子項
o=""/>
<throwerrori=""/>------引發異常能控制事務回滾
<error>
o=""/> o
=""/>
服務指令碼引擎
用來解析執行服務指令碼,是伺服器的乙個子模組。
服務指令碼例子
例子1
:建立實體物件服務
newentity">
type"/>
new"/>
例子2
:帶檔案操作和資料庫操作,並且有事務控制的例子
createsheet">
template"
type
="string"/>
items"
type
="manifest"/>
dts"/>
error"/>
ebm專欄
EBMIDE 服務呼叫
前言 ebmide 服務指令碼 ios 前篇文章介紹了服務指令碼的定義,下面介紹如何進行服務的呼叫。服務已經定義了所需要的輸入引數in 和輸出引數out 服務呼叫則需要向服務傳輸正確的輸入資料,服務呼叫完成後以相同的資料格式返回輸出。服務呼叫資料報的定義 servicename type strin...
ios 執行shell指令碼
一 由於ios中沒有 cocoa的nstask 所以要在cocoa touch sdk中執行shell 只能用系統呼叫 int system const char string 例如 system ls 注意system是系統c函式 所以引數不要使用nsstring 函式庫 include syst...
ios重簽名指令碼
get the root path rootpath cd dirname 0 pwd 可變引數區域 mobileprovision cert.mobileprovision ipapath 1.ipa 固定引數區域 outputdir output 解析描述檔案 certteamname usr ...