活动的实现是他们想要使用的执行结构。假设在执行之前必须完成多个任务。活动行为可以为此生成一系列子执行。或者,任务组件可以支持任务组,并被分配单独执行。在这种情况下,任务组件成为同步任务的响应,从而将这一职责移出了执行树结构的范围。
7.7。异常处理器
在分配给流程的所有代码中,活动、事件侦听器和条件可以分配给异常处理程序。这可以被认为是将这些实现的方法实现包含在try-catch块中。但是,为了构建更多可重用的构建块、委托类和异常处理逻辑,可以将异常处理程序添加到核心流程模型中。
异常处理程序可以分配给任何流程元素。当委托类中出现异常时,会找到匹配的异常处理程序。如果找到这样的异常处理程序,它将有机会处理该异常。
如果异常处理程序完成处理没有问题,那么该异常将被视为已处理,并将在委托代码调用后继续。例如,一个分支有三个动作,第二个抛出异常,由异常处理程序处理,然后
编写自动活动和异常处理程序提醒很容易。默认是任意执行。执行过程中不需要调用任何方法。因此,如果自动活动抛出异常并由异常处理程序处理,执行将在执行后继续。这将使控制流向更加困难。他们可能需要包含一个try-finally块,以便在执行中调用相应的方法,并获得在异常处理程序中处理异常的机会。例如,如果活动处于等待状态,然后出现异常,则存在线程跳出调用执行的风险。等待信号(),使执行在活动后继续。
TODO:exceptionhandler . IsreStrowMassed
TODO:事务性异常处理程序
托多:我们从不抓错误
7.8。过程修改
待办事项:流程修改
7.9。锁定和进程状态
执行状态为激活或锁定。激活的执行要么执行,要么等待外部触发。如果执行不是STATE_ACTIVE,则它被锁定。锁的执行是只读的,不能接受任何外部触发器。
创建新的执行时,它是状态_活动的。要将状态更改为锁定状态,请使用锁定(字符串)。提供了一些STATE_*常量,演示了最常用的锁定状态。但在照片中& # 39;……39。状态表明任何字符串都可以作为锁方法的状态提供。
执行状况
如果执行被锁定,修改执行方法将引发PvmException,并且信息将引用实际的锁定状态。触发事件、更新变量、更新优先级和添加注释不会被视为修改。不会检测到子节点的创建和删除,这意味着即使执行处于锁定状态,外部API客户端和活动行为也可以调用这些方法。
在比较getState()和STATE_*常量时,请务必使用。等于,不使用& # 39;= = & # 39;因为如果从永久存储器加载。创建一个新字符串,而不是使用常量。
执行实现被锁定:
*当它结束时
*暂停时
*在异步延续过程中
此外,活动实现可以使用锁定,在等待时将执行设为只读,然后为该执行传递外部实例,如下所示:
*一项人员任务
*服务电话
*当检测器检测到文件存在时,等待状态结束
在这些情况下,策略是外部实例应该完全控制执行,因为它想要控制什么应该被允许,什么不应该被允许。为了获得这种控制,它们锁定执行,所以所有内部交互必须通过外部实例传递。
创建外部实例的主要原因之一是,它们在被执行后仍然可以存在。例如,在服务调用的情况下,定时器可以使执行获得超时转换。当响应在超时后到达时,服务调用实例应该确认它没有信号执行。因此,服务调用可以被视为活动实例(activity instance),它是为每个活动执行的唯一实例。
外部实例本身负责管理锁的执行。如果计时器和客户端应用程序的结果是选择一个外部实例,而不是直接选择执行,那么理论上没有必要。它是执行活动实现,无论它希望执行锁定还是解锁。