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专栏

 

你可能感兴趣的:(ios,IO,String,脚本,service,File)