/// <inheritdoc /> protected override bool InternalExecute(ProcessExecutingContext context) { bool isRedo = (Status == ProcessStatus.Error && CurrentActivityId == Guid.Empty && !ProcessUserTaskUtilities.GetIsActivityCreated(UserConnection, UId)); bool isRunning = !CurrentActivityId.Equals(Guid.Empty) && !IsActivityCompleted; if (!isRunning || isRedo) { var editMode = (RecordEditMode)Enum.ToObject(typeof(RecordEditMode), EditMode); bool isActivityEntitySchema = GetIsActivityEntitySchema(); Entity activity = null; IProcessEngine processEngine = UserConnection.ProcessEngine; if (isActivityEntitySchema) { if (editMode == RecordEditMode.New) { activity = CreateActivity(); RecordId = CurrentActivityId; } else { CurrentActivityId = RecordId; } } else { Entity accompaningActivity = CreateAccompaningActivity(); CoreEntitySchema activityEntitySchema = GetActivityEntitySchema(); Guid resultColumnUId = activityEntitySchema.Columns.GetByName("Status").UId; processEngine.AddProcessListener(accompaningActivity, UId, GetConditionData(resultColumnUId, accompaningActivity)); if (editMode == RecordEditMode.New) { RecordId = Guid.NewGuid(); } } string serializedFilters = IsMatchConditions && DataSourceFilters.IsNotNullOrEmpty() ? ConvertToProcessDataSourceFilters(ObjectSchemaId, DataSourceFilters) : null; if (activity == null) { if (editMode != RecordEditMode.New) { processEngine.AddProcessListener(RecordId, ObjectSchemaId, UId, serializedFilters); } else { processEngine.AddProcessListener(RecordId, ObjectSchemaId, UId, null, null, EntityChangeType.Inserted); } } else { processEngine.AddProcessListener(activity, UId, serializedFilters); } } InteractWithUser(context, isRunning, ShowExecutionPage); return(false); }
protected override bool InternalExecute(ProcessExecutingContext context) { if (Status == ProcessStatus.Error) { if (CurrentActivityId == Guid.Empty && !ProcessUserTaskUtilities.GetIsActivityCreated(UserConnection, UId)) { Activity activity = CreateActivity(); AfterActivitySaveScriptExecute(activity); } } bool isRunning = CurrentActivityId.IsNotEmpty() && !IsActivityCompleted; if (!isRunning) { Activity activity = CreateActivity(); AfterActivitySaveScriptExecute(activity); } InteractWithUser(context, isRunning, ShowExecutionPage); return(false); }
public bool Execute(IEmailUserTaskMessageProvider messageProvider, ProcessExecutingContext context) { var userTask = messageProvider.EmailUserTask; Guid activityId = userTask.ActivityId; bool showExecutionPage = userTask.ShowExecutionPage; bool isActivityCompleted = userTask.IsActivityCompleted; bool isRunning = activityId.IsNotEmpty() && !isActivityCompleted; if (userTask.Status == ProcessStatus.Error) { bool isActivityCreated = ProcessUserTaskUtilities.GetIsActivityCreated(UserConnection, userTask.UId); if (activityId.IsEmpty() && !isActivityCreated) { InternalExecute(messageProvider); } } if (!isRunning) { InternalExecute(messageProvider); } userTask.InteractWithUser(context, isRunning, showExecutionPage); return(false); }