/// <inheritdoc />
        public override bool CompleteExecuting(params object[] parameters)
        {
            bool isActivityEntitySchema = GetIsActivityEntitySchema();
            Guid activityStatusId       = isActivityEntitySchema
                                ? Guid.Empty
                                : ProcessUserTaskUtilities.GetActivityStatus(UserConnection, CurrentActivityId);
            IProcessEngine processEngine = UserConnection.ProcessEngine;

            if (GetIsMatchedConditions())
            {
                if (!isActivityEntitySchema && activityStatusId != ActivityConsts.CanceledStatusUId)
                {
                    activityStatusId = ActivityConsts.CompletedStatusUId;
                }
                processEngine.RemoveActivityProcessListener(CurrentActivityId, UId, activityStatusId);
                if (!GetIsActivityEntitySchema())
                {
                    var editMode = (RecordEditMode)Enum.ToObject(typeof(RecordEditMode), EditMode);
                    EntityChangeType entityChangeType = editMode == RecordEditMode.New
                                                ? EntityChangeType.Inserted
                                                : EntityChangeType.Updated;
                    processEngine.RemoveProcessListener(RecordId, ObjectSchemaId, UId, entityChangeType);
                }
                if (GenerateDecisionsFromColumn)
                {
                    ResultParameter = GetResultParameter();
                }
                return(base.CompleteExecuting(parameters));
            }
            if ((RecordEditMode)Enum.ToObject(typeof(RecordEditMode), EditMode) == RecordEditMode.New)
            {
                string serializedFilters = IsMatchConditions && DataSourceFilters.IsNotNullOrEmpty()
                                        ? ConvertToProcessDataSourceFilters(ObjectSchemaId, DataSourceFilters)
                                        : null;
                processEngine.AddProcessListener(RecordId, ObjectSchemaId, UId, serializedFilters);
                EditMode = (int)RecordEditMode.Existing;
            }
            if (activityStatusId == ActivityConsts.NewStatusUId)
            {
                ProcessUserTaskUtilities.SetActivityStatus(UserConnection, CurrentActivityId,
                                                           ActivityConsts.InProgressUId);
            }
            return(false);
        }