protected override void Execute(NativeActivityContext context) { DesignService designService = new DesignService(); //启动事务 using (TransactionScope trans = new TransactionScope()) { //添加工作流活动实例 DynEntity workflowfActivityInstance = new DynEntity("WorkflowActivityInstance"); workflowfActivityInstance["WorkflowActivityInstanceID"] = designService.GetNextID("WorkflowActivityInstance"); workflowfActivityInstance["WorkflowInstanceID"] = context.GetValue(WorkflowInstanceID); workflowfActivityInstance["WorkflowActivityID"] = WorkflowActivityID; workflowfActivityInstance["WorkflowActivityInstanceName"] = DisplayName; workflowfActivityInstance["State"] = "已退回"; workflowfActivityInstance["StartTime"] = DateTime.Now; designService.AddDynEntity(workflowfActivityInstance); //获取工作流实例 DynEntity workflowInstance = designService.GetDynEntityByID("WorkflowInstance", context.GetValue(WorkflowInstanceID)); int workflowID; if (workflowInstance != null) { workflowID = Convert.ToInt32(workflowInstance["WorkflowID"]); } else { throw new ApplicationException(string.Format("{0}实例下的活动{1},根据工作流实例ID获取工作流实例不正常", context.GetValue(WorkflowInstanceID), DisplayName)); } //添加待做任务清单 DynEntity task = new DynEntity("WorkflowToDoList"); task["WorkflowToDoListID"] = designService.GetNextID("WorkflowToDoList"); task["Type"] = context.GetValue(Type).ToString(); task["Item"] = context.GetValue(Item).ToString(); task["Position"] = context.GetValue(Position).ToString(); task["FirstActor"] = context.GetValue(FirstActor); task["LastActor"] = context.GetValue(LastActor); string command = context.GetValue(Command); Dictionary <string, object> inParams = this.ExchangeParams.Get(context) as Dictionary <string, object>; foreach (string key in inParams.Keys) { if (inParams[key] != null) { command = command.Replace("@" + key + "@", inParams[key].ToString()); } } task["WorkflowToDoListName"] = DisplayName; task["WorkflowID"] = workflowID; task["WorkflowInstanceID"] = context.GetValue(WorkflowInstanceID); task["WorkflowActivityInstanceID"] = workflowfActivityInstance["WorkflowActivityInstanceID"]; task["Expression"] = context.GetValue(Expression); task["BookmarkName"] = workflowfActivityInstance["WorkflowActivityInstanceID"].ToString(); task["Command"] = command; task["Comment"] = context.GetValue(Description); task["State"] = "已退回"; if (inParams.ContainsKey("TableName")) { task["TableName"] = inParams["TableName"].ToString(); } if (inParams.ContainsKey("TableKey")) { task["TableKey"] = inParams["TableKey"].ToString(); } designService.AddDynEntity(task); if (inParams.ContainsKey("TableName") && inParams.ContainsKey("TableKey")) { designService.TerminateWorkflow(inParams["TableName"].ToString(), inParams["TableKey"].ToString()); } workflowInstance["EndTime"] = DateTime.Now; workflowInstance["State"] = "已结束"; designService.ModifyDynEntity(workflowInstance); trans.Complete(); } }
protected override void Execute(NativeActivityContext context) { DesignService designService = new DesignService(); //启动事务 using (TransactionScope trans = new TransactionScope()) { //获取传入的参数集合 Dictionary <string, object> inParams = this.ExchangeParams.Get(context) as Dictionary <string, object>; //添加工作流活动实例 DynEntity workflowfActivityInstance = new DynEntity("WorkflowActivityInstance"); workflowfActivityInstance["WorkflowActivityInstanceID"] = designService.GetNextID("WorkflowActivityInstance"); workflowfActivityInstance["WorkflowInstanceID"] = context.GetValue(WorkflowInstanceID); workflowfActivityInstance["WorkflowActivityID"] = WorkflowActivityID; workflowfActivityInstance["WorkflowActivityInstanceName"] = DisplayName; if (inParams.ContainsKey("ObjType")) { workflowfActivityInstance["ObjType"] = inParams["ObjType"].ToString(); } if (inParams.ContainsKey("ObjID")) { workflowfActivityInstance["ObjID"] = inParams["ObjID"].ToString(); } workflowfActivityInstance["State"] = "正在执行"; workflowfActivityInstance["StartTime"] = DateTime.Now; designService.AddDynEntity(workflowfActivityInstance); //获取工作流实例 DynEntity workflowInstance = designService.GetDynEntityByID("WorkflowInstance", context.GetValue(WorkflowInstanceID)); int workflowID; if (workflowInstance != null) { workflowID = Convert.ToInt32(workflowInstance["WorkflowID"]); } else { throw new ApplicationException(string.Format("{0}实例下的活动{1},根据工作流实例ID获取工作流实例不正常", context.GetValue(WorkflowInstanceID), DisplayName)); } //添加待做任务清单 DynEntity task = new DynEntity("WorkflowToDoList"); task["WorkflowToDoListID"] = designService.GetNextID("WorkflowToDoList"); //task["Actor"] = context.GetValue(Actor); task["WorkflowToDoListName"] = DisplayName; task["WorkflowID"] = workflowID; task["WorkflowInstanceID"] = context.GetValue(WorkflowInstanceID); task["WorkflowActivityInstanceID"] = workflowfActivityInstance["WorkflowActivityInstanceID"]; task["BookmarkName"] = workflowfActivityInstance["WorkflowActivityInstanceID"].ToString(); task["State"] = "待处理"; if (inParams.ContainsKey("ObjType")) { task["ObjType"] = inParams["ObjType"].ToString(); } if (inParams.ContainsKey("ObjID")) { task["ObjID"] = inParams["ObjID"].ToString(); } designService.AddDynEntity(task); context.CreateBookmark(workflowfActivityInstance["WorkflowActivityInstanceID"].ToString(), new BookmarkCallback(BookmarkCallbackMethod)); trans.Complete(); } }