private void requireRecovery() {
if (__log.isDebugEnabled())
__log.debug("ActivityRecovery: Activity " + _self.aId + " requires recovery");
sendEvent(new ActivityFailureEvent(_failure.reason));
final ActivityRecovery recoveryChannel = newChannel(ActivityRecovery.class);
getBpelRuntimeContext().registerActivityForRecovery(
recoveryChannel, _self.aId, _failure.reason, _failure.dateTime, _failure.data,
new String[] { "retry", "cancel", "fault" }, _failure.retryCount);
object(false, compose(new ReceiveProcess() {
private static final long serialVersionUID = 8397883882810521685L;
}.setChannel(recoveryChannel).setReceiver(new ActivityRecovery() {
public void retry() {
if (__log.isDebugEnabled())
__log.debug("ActivityRecovery: Retrying activity " + _self.aId + " (user initiated)");
sendEvent(new ActivityRecoveryEvent("retry"));
getBpelRuntimeContext().unregisterActivityForRecovery(recoveryChannel);