EBMIDE——服务脚本IOS(二)

服务的嵌套调用

把通用的服务脚本抽出来配置成独立的子服务,然后提供给其他服务内部进行调用,这样能够避免相同逻辑的脚本重复编写。

服务嵌套调用需要注意的地方:

* 服务的上下文:子服务参数的传入/传输

*  服务嵌套调用时的异常处理和事务处理

* 避免互相嵌套调用产生死循环

 

服务嵌套调用定义

<!--service: 服务定义,name: 服务名称,debug:调试,publish:发布,transaction:事务控制-->

<service name="" debug="false" publish="false" transaction="false">

  <in>

    <!--set: 输入输出定义,name: 参数名称-->

    <set name=""/>

  </in>

  <out>

    <set name=""/>

  </out>

  <script>

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

    <invoke service="">

      <in>

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

        <ioi="" o=""/>

      </in>

      <out>

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

        <ioi="" o=""/>

      </out>

    </invoke>

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

    <error>

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

    </error>

  </script>

</service>

 

服务嵌套调用例子

原子服务CreateFile

<service name="CreateFile" debug="true" publish="true" transaction="false">

  <comment/>

  <!--输入参数-->

  <in>

    <set name="Name" type="string" label="文件名称"/>

  </in>

  <!--输出参数-->

  <out>

    <set name="File" type="entity" label="文件对象"/>

    <set name="Error" type="string" label="错误信息"/>

  </out>

  <!--服务脚本-->

  <script>

    <io i="CreateEntity('EBM.Data.File')" o="File"/>

    <io i="CreateDTS()" o="File.DTS"/>

    <io i="FormatDate(Date(),'yyyyMMdd')" o="File.Folder"/>

    <io i="@Name" o="File.Name"/>

    <io i="'.fxl'" o="File.Ext"/>

    <io i="GetDriver()" o="File.Driver"/>

    <!--异常处理-->

    <error>

      <io i="Error()" o="Error"/>

    </error>

  </script>

</service>

嵌套服务调用

<service name="服务嵌套测试" debug="true" publish="true" transaction="false">

  <comment/>

  <!--输入参数-->

  <in>

    <set name="Name" type="string" label="文件名称"/>

  </in>

  <!--输出参数-->

  <out>

    <set name="File" type="entity" label="文件对象"/>

    <set name="Error" type="string" label="错误信息"/>

  </out>

  <!--服务脚本-->

  <script>

    <invoke service="CreateFile">

      <in>

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

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

      </in>

      <out>

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

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

      </out>

    </invoke>

    <!--异常处理-->

    <error>

      <io i="Error()" o="Error"/>

    </error>

  </script>

</service>

 

相关文章

EBM专栏

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值