cancel
Showing results for 
Search instead for 
Did you mean: 

execution.take() creates a new activity instance

eransinger
Champ in-the-making
Champ in-the-making
Hello,
I have a flow with an external agent doing a job triggered by an activiti service task.
I want to be able to model the signals sent by this agent as exception or successe in the activiti.

i do not want to wrap my service task with boundery events, or proccess or sequence flows.

I tried implementing my own TaskActivityBehavior in a way that when the signal received is a failed one- i am calling execution.take()

Problem is each time it creates a new activity instance so retries are not decreasing and there is a loop.
Do you have any idea of how can i go back from the signal to the execution without creating a new activity?

Thanks in advance
———————————–

public void execute(ActivityExecution execution) throws Exception {
        try {
            if(ActivityLocalContext.getProperty('jobStatus').equals('fail')){
                throw new FailedException("job failed");
            }
            String jobId = submitAction(migrationRule, titleId, execution.getId());
            ActivityLocalContext.setProperty(execution, "jobStatus", "Running");
            ActivityLocalContext.setProperty(execution, "jobId", jobId);
        } catch (Exception e) {
            if(failedAndNoMoreRetries()){
                 ActivityLocalContext.setProperty(execution, "jobStatus", "New");
            }
            logger.error("ApplyMigrationPolicy->notifiy() failed: " + e.getMessage(), e);
            throw new FailedException("ApplyMigrationPolicy->notifiy() failed: " + e.getMessage());
        }
    }

    public void signal(ActivityExecution execution, String signalName, Object data) throws Exception {
        PvmTransition inTransition = execution.getActivity().getIncomingTransitions().get(0);
        if(signaledException()) {
            ActivityLocalContext.setProperty(execution, "jobStatus", "Failed");
                execution.take(inTransition);
        }else {
            ActivityLocalContext.setProperty(execution, "jobStatus", "complete");
            this.leave(execution);
        }
    }
1 REPLY 1

jbarrez
Star Contributor
Star Contributor
I'm not following what you are trying to do here, can you elaborate a bit?

execution.take() normally simply follows the transition you select.
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.