EBMIDE——服务脚本IOS(三):IOS语言

39 篇文章 6 订阅
37 篇文章 0 订阅

IOS简介

IOS是In/Out Script(输入/输出脚本)的简称,在我的设计中,用in,out,script3个节点来描述一个服务调用。

 

目前的问题

目前的IOS脚本部分是用XML节点来描述的,这样做降低了脚本语法的解析难度。但是,带来的问题是,要遵循xml文档语法,在属性里编写表达式时要避开双引号,语法不够简便等导致编写服务时不方便。所以,需要抛开XML的约束,让IOS成为一种轻量级的脚本语言,编写起来要更方便。

 

XML脚本的问题,编写不方便…

<script>

  <!--io: 输入/输出脚本,i:invoke执行,o: out输出-->

  <io i="" o=""/>

  <!--if: 条件脚本,i: invoke执行-->

  <if i="">

    <!--成功则执行if/io里的脚本-->

    <io i="" o=""/>

    <!--elseif: 条件脚本中的分支判断,i: invoke执行-->

    <elseif i="">

      <io i="" o=""/>

    </elseif>

    <!--else: 条件脚本中的否定-->

    <else>

      <io i="" o=""/>

    </else>

  </if>

  <!--foreach: 遍历脚本,i:invoke执行获取父项,o:out输出子项-->

  <foreach i="" o="">

    <io i="" o=""/>

  </foreach>

  <!--invoke: 调用子服务,service:子服务名称-->

  <invoke service="">

    <in>

      <!-- i:当前服务的参数,o:子服务的输入参数-->

      <io i="" o=""/>

    </in>

    <out>

      <!-- i:子服务的输出参数,o:当前服务的参数-->

      <io i="" o=""/>

    </out>

  </invoke>

  <!--throwerror: 引发异常,i:invoke执行异常信息-->

  <throwerror i=""/>

  <!--error: 错误处理脚本-->

  <error>

    <io i="" o=""/>

  </error>

</script>

 

IOS语言的设计

【语言的命名】

输入/输出脚本语言:In/Out Script Language,简称IOSL

 

【语句的划分】

每个语句以换行结束,对于双引号""、单引号''、小括号()和中括号[]内的换行不算作语句结束

 

【注释】

双斜线//注释内容,,对于双引号""、单引号''、小括号()和中括号[]内的双斜线不算作注释

例子:

//注释...

代替XML节点:

<!---->

 

【赋值语句:=】

等号=分隔,执行表达式expression并把结果赋值到变量var。var为空时则不设置任何变量。var为空时可缺省等号。

例子:

var = expression

= expression

expression

代替XML节点:

<io i=""o=""/>

 

【条件语句:if...elseif...else...】

if关键字后面表达式expression为真时执行内部子语句,否则执行后面的else if或else语句;

else if关键字后面表达式expression为真时执行内部子语句,否则执行后面的else if或else语句;

在if和else if的判断都为假时才执行else的内部子语句;

if后允许出现0个或多个else if和0个或1个else。

例子:

if expression

  //子语句

  elseif expression

    //子语句

  end

  else

    //子语句

  end

end

代替XML节点:

<if i="">

  <--子节点-->

  <elseifi="">

    <--子节点-->

  </elseif>

  <else>

    <--子节点-->

  </else>

</if>

 

【遍历语句:foreach...in...】

遍历表达式expression的执行结果,遍历时的子项赋值到变量var

例子:

foreach var in expression

  //子语句

end

代替XML节点:

<foreach i="" o="">

  <--子节点-->

</foreach>

 

【异常语句:throwerror】

引发异常,异常消息是表达式expression的执行值。

例子:

throwerror expression

代替XML节点:

<throwerrori=""/>

 

【调用语句:invoke...】

调用invoke关键字后面的子服务脚本service。in子语句内部声明输入参数,out子语句内部声明输出参数

例子:

invoke service

  in

    //赋值子语句

  end

  out

    //赋值子语句

  end

end

代替XML节点:

<invoke service="">

  <in>

    <--赋值子节点-->

  </in>

  <out>

    <--赋值子节点-->

  </out>

</invoke>

 

【错误处理语句:error...】

当脚本发生异常时执行error内的子语句。只允许出现0个或1个error语句。

例子:

error

  //子语句

end

代替XML节点:

<error>

  <--子节点-->

</error>

 

【循环语句:while...】

当表达式expression值为真时执行内部子语句。

例子:

while expression

  //子语句

end

 

新的IOS编辑器

支持新版本的IOSL编辑,关键字高亮显示,服务参数移到左边,增加表达式选择模块。

编写脚本时可选择或查看表达式,使用更方便。

服务脚本的script节点则改成CDATA括住的脚本语句。

 

相关文章

EBM专栏

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值