EBMIDE 服務指令碼IOS

2021-08-25 21:59:49 字數 2413 閱讀 8261

前言

之前,想到這樣乙個情景,用乙個指令碼來描述乙個服務的操作,這樣做的好處是,業務邏輯落到了配置檔案。業務變化時只需通過修改配置,而不需要重新編譯系統。

最近幾天,由於工作需要,轉到了伺服器的研發,剛好碰上這一應用場合,終於有機會完成這一指令碼的設計。

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 ...