行为参数

行为可能具有参数(参见9.4),它们为行为的执行提供了传递值的能力。

当行为被调用时,具有“in”或“inou”方向的参数值按照multiplicity约束提供给它们相应的参数。如果某个输入参数有缺省值同时没有给它一个显示的值,那么其缺省值用作该参数的值(即使该参数的multiplicity下限为0,此时没有值也是可以的)。参数值可以影响被调用行为的执行进程。

当行为执行结束,它可能按照参数的multiplicity产生对应于“inout”、“out”和“return”方向的参数的结果值。如果某个输出参数有缺省值并且没有为它产生结果值,那么该缺省值用作该参数的结果值(即使该参数的multiplicity下限为0,此时没有值也是可以的)。如果行为是被同步调用的,那么结果值返回给调用者。然而,如果行为是被异步调用的,那么当行为执行结束后所有的结果值都会丢失。

参数还可能被标记为流(streaming,即isStreaming属性为真)。这种参数允许在行为执行的任意时刻传入或从行为传出值,而不只是在调用和结束的时候。

如果一个输入参数是流,那么可以在行为执行的任意时刻为该参数提供值,而不只是调用的时刻。一个或多个值可以在行为调用之后结束之前的任意时刻提交给一个流输入参数。这些参数值可以用于影响行为执行中(从值提交时刻起)的下一步进程。

如果一个输出参数是流,那么行为执行可以在执行过程的任意时刻提供该参数的结果值,而不仅是在结束的时候。在行为调用之后直到行为结束的任意时刻行为可以产生一个或多个对应流输出参数的结果值。这些值从获取的时刻起可以影响调用行为的下一步执行过程。

注意. 为了使调用者能够从流输出参数获得值,被调用的行为应该被同步调用,即使流输出可能会异步地对调用者触发响应。(参见16.3.3中CallAction在流参数时的语义,包括这类参数的multiplicity的影响。)

一个可重入行为不应该有流参数,因为同时可能有行为的多个执行在进行,这会对哪个执行来接收或产生流值产生模糊。

行为可能有一个或多个标记为isException=true的输出参数。此种情况下,当行为的一个执行结束时,这些参数中至多只能一个有值。

注意.15.5.3所描述的角度上,在异常参数上返回一个值不被认为是“抛出一个异常”。

带有输入参数集的行为每次执行只能接收来自其中某个集合的输入参数。带有输出参数集的行为每次执行职能输出到某个输出集合的参数上。输入和输出参数集的条件语义分别与行为的前置条件和后置条件相同,但只应用于规定的参数集。

results matching ""

    No results matching ""