internal void CreateBackwardActivityTaskRepateSignForwardMainNodeOnly(ProcessInstanceEntity processInstance,
ActivityEntity backwardToTaskActvity,
ActivityInstanceEntity fromActivityInstance,
BackwardTypeEnum backwardType,
ActivityInstanceEntity previousMainInstance,
string transitionGUID,
TransitionTypeEnum transitionType,
TransitionFlyingTypeEnum flyingType,
ActivityResource activityResource,
IDbSession session)
{
// 退回是加签情况下的处理:
// 要退回的节点是加签节点
// 只实例化当初的加签主节点
//重新封装任务办理人为AssignedToUsers, AssignedToUsernames
var performerList = AntiGenerateActivityPerformerList(previousMainInstance);
activityResource.NextActivityPerformers.Clear();
activityResource.NextActivityPerformers = new Dictionary<string, PerformerList>();
activityResource.NextActivityPerformers.Add(backwardToTaskActvity.ActivityGUID, performerList);
//实例化Activity
var toActivityInstance = base.CreateBackwardToActivityInstanceObject(processInstance,
backwardType,
previousMainInstance.ID,
activityResource.AppRunner);
//进入准备运行状态
toActivityInstance.ActivityState = (short)ActivityStateEnum.Ready;
toActivityInstance.AssignedToUserIDs = previousMainInstance.AssignedToUserIDs;
toActivityInstance.AssignedToUserNames = previousMainInstance.AssignedToUserNames;
toActivityInstance.ComplexType = previousMainInstance.ComplexType;
toActivityInstance.CompleteOrder = previousMainInstance.CompleteOrder;
toActivityInstance.SignForwardType = previousMainInstance.SignForwardType;
//插入活动实例数据
base.ActivityInstanceManager.Insert(toActivityInstance,
session);
//插入任务数据
base.CreateNewTask(toActivityInstance, activityResource, session);
//插入转移数据
base.InsertTransitionInstance(processInstance,
transitionGUID,
fromActivityInstance,
toActivityInstance,
transitionType,
flyingType,
activityResource.AppRunner,
session);
}