public void Reboot(string instanceID, string categoryCode, string id)
        {
            WorkflowInstance wfInstance  = WorkflowInstance.GetInstance(instanceID);
            string           resourceXml = wfInstance.Resource;

            CommandBus.Dispatch(new DeleteWFRecord(), instanceID);
            string newInstanceID = WorkflowEngine.Instance.Start(resourceXml);

            Bridge bridge = _bridgeService.GetBridge(id);

            bridge.InstanceID = newInstanceID;
            CommandBus.Dispatch(new UpdateBridge(), bridge);

            var user = _actorService.GetUserByID(bridge.Creator);
            WorkflowInstance instance = WorkflowInstance.GetInstance(newInstanceID);
            var current = GetCurrent(instance, bridge.Creator);

            string serialObject = GetAuditNext(current, categoryCode, bridge.Creator, user.Name, out string selectTransitionID);

            WorkflowEngine.Instance.Jump(new WorkflowContext()
            {
                Instance     = instance,
                ActorID      = bridge.Creator,
                Message      = String.Empty,
                TransitionID = selectTransitionID,
                Current      = GetCurrent(instance, bridge.Creator),
                Data         = Newtonsoft.Json.JsonConvert.DeserializeObject(serialObject)
            });
        }
        public void Reboot(WorkflowDeleteDto dto)
        {
            WorkflowInstance wfInstance  = WorkflowInstance.GetInstance(dto.InstanceID);
            string           resourceXml = wfInstance.Resource;

            CommandBus.Dispatch <string>(new DeleteWFRecord(), dto.InstanceID);

            string instanceID = WorkflowEngine.Instance.Start(resourceXml);
            Bridge bridge     = _bridgeService.GetBridge(dto.Key);

            bridge.InstanceID = instanceID;
            CommandBus.Dispatch <Bridge>(new UpdateBridge(), bridge);

            WorkflowInstance instance = WorkflowInstance.GetInstance(instanceID);
            var current = GetCurrent(instance, bridge.Creator);
            List <Transition> transitions      = NodeService.GetExecuteTransition(current);
            Transition        transitionSelect = transitions.FirstOrDefault();

            Node nextNode = NodeService.FindNodeByID(transitionSelect.Destination, instanceID);
            var  node     = NodeService.GetNode(nextNode);

            List <string> groupIDs        = new List <string>();
            List <string> actorIDs        = new List <string>();
            List <string> carbonIDs       = new List <string>();
            List <string> organizationIDs = new List <string>();

            foreach (Group g in node.Groups)
            {
                groupIDs.Add(g.ID.ToString());
            }
            foreach (Carbon c in node.Carbons)
            {
                carbonIDs.Add(c.ID.ToString());
            }
            foreach (Actor item in node.Actors)
            {
                actorIDs.Add(item.ID);
            }
            foreach (Smartflow.Elements.Organization item in node.Organizations)
            {
                organizationIDs.Add(item.ID);
            }

            var serialObject = Newtonsoft.Json.JsonConvert.SerializeObject(new
            {
                CategoryCode = dto.CategoryCode,
                UUID         = bridge.Creator,
                bridge.Name,
                Group        = string.Join(",", groupIDs),
                Actor        = string.Join(",", actorIDs),
                Carbon       = string.Join(",", carbonIDs),
                Organization = string.Join(",", organizationIDs)
            });

            WorkflowEngine.Instance.Jump(new WorkflowContext()
            {
                Instance     = instance,
                ActorID      = bridge.Creator,
                Message      = String.Empty,
                TransitionID = transitionSelect.NID,
                Current      = GetCurrent(instance, bridge.Creator),
                Data         = Newtonsoft.Json.JsonConvert.DeserializeObject(serialObject)
            });
        }
 public BridgeDto GetBridge(string id)
 {
     return(_mapper.Map <Bridge, BridgeDto>(_bridgeService.GetBridge(id)));
 }
Example #4
0
 public BridgeDto GetBridge(string id)
 {
     return(EmitCore.Convert <Bridge, BridgeDto>(_bridgeService.GetBridge(id)));
 }