/// <summary>
 /// Handle task completion notification.
 /// Override this method to implement external
 /// notification about task completion.
 /// </summary>
 /// <param name="tci"></param>
 protected virtual void OnTaskCompleted(TaskCompletionInfo tci)
 {
 }
 /// <summary>
 /// Pass task completion information to active transition.
 /// As a result, task internal data is updated and
 /// OnTaskCompleted is invoked. Then the transition is marked
 /// as completed and TransitionCompleted callback is invoked.
 /// </summary>
 /// <param name="tci"></param>
 public void NotifyTaskCompleted(TaskCompletionInfo tci)
 {
     ActivationRequired(true);
     if (Status != TransitionStatus.STARTED &&
         Status != TransitionStatus.COMPLETED)
         throw new ApplicationException("Invalid transition status");
     if (tci.CorrelationId != this.CorrelationId)
         throw new ApplicationException("Invalid correlation id");
     if (tci.ResultXml != null)
     {
         DataObject dob = DataObject.ParseXml(tci.ResultXml);
         this.UpdateTaskData(dob);
     }
     OnTaskCompleted(tci);
     this.Status = TransitionStatus.COMPLETED;
     _containerCallback.TransitionCompleted(CorrelationId);
 }
Beispiel #3
0
 public void ProcessTaskCompleted(TaskCompletionInfo info)
 {
     log.Info("Task completed in process {0}. Id: {1}", info.ProcessInstance, info.CorrelationId);
     TaskCompletedNotification tcn = new TaskCompletedNotification();
     tcn.CorrelationId = info.CorrelationId;
     tcn.ProcessInstanceId = info.ProcessInstance;
     XmlReader xr = XmlReader.Create(new StringReader(info.ResultXml));
     xr.MoveToContent();
     tcn.TaskData = DataObject.ParseXmlElement(xr);
     this.MessageBus.Notify("NGEnvironment", "NGinn.ProcessTaskCompleted", tcn, false);
 }
 /// <summary>
 /// Report that a process task has completed
 /// </summary>
 /// <param name="tci"></param>
 public void NotifyTaskCompleted(TaskCompletionInfo tci)
 {
     throw new NotImplementedException();
     if (tci.ProcessInstance != this.InstanceId) throw new Exception("Invalid instance id");
     TaskShell at = GetActiveTransition(tci.CorrelationId);
     if (at == null)
     {
         MultiTaskShell mti = FindMultiInstanceTransitionWithSubtask(tci.CorrelationId);
         if (mti != null) at = mti.GetChildTransition(tci.CorrelationId);
     }
     if (at == null) throw new Exception("Invalid correlation id");
     if (at.Status != TransitionStatus.ENABLED && at.Status != TransitionStatus.STARTED) throw new Exception("Invalid transition status");
     //at will callback us when the task is completed
     at.NotifyTaskCompleted(tci);
 }
Beispiel #5
0
 static void TestTaskCompleted(string processId, string taskCorrelationId)
 {
     INGEnvironmentProcessCommunication env = (INGEnvironmentProcessCommunication)_ctx.GetObject("NGEnvironment");
     TaskCompletionInfo tci = new TaskCompletionInfo();
     tci.ProcessInstance = processId;
     tci.CorrelationId = taskCorrelationId;
     tci.ResultXml = "<results><decision>Accept</decision><managerComment>I don't know why</managerComment><managerId>132</managerId></results>";
     tci.CompletedBy = "me";
     env.ProcessTaskCompleted(tci);
 }