private void SaveExecute() { if (SelectType == null) { MessageHelper.ShowMessageBox("请选择类型!"); return; } NSTemplateInfo template = new NSTemplateInfo(); template.Id = Guid.NewGuid(); template.TemplateName = TemplateName; template.TemplateText = TemplateXML; template.TemplateType = SelectType.TemplateType; string msg = _client.NewTemplate(template); if (string.IsNullOrEmpty(msg)) { MessageHelper.ShowMessageBox("保存成功!"); if (WindowAction != null) { WindowAction(); } } else { MessageHelper.ShowMessageBox(msg); } }
public string NewTemplate(NSTemplateInfo nsTemplateInfo) { if (string.IsNullOrEmpty(nsTemplateInfo.TemplateName) || string.IsNullOrWhiteSpace(nsTemplateInfo.TemplateText) || string.IsNullOrWhiteSpace(nsTemplateInfo.TemplateType)) { return("模板名称/模板内容/模板类型不能为空!"); } TemplateRepository templateRespository = new TemplateRepository(Context); string version = templateRespository.GetTemplateVersion(nsTemplateInfo.TemplateName, nsTemplateInfo.TemplateType); int tempateVersion = -1; int.TryParse(version, out tempateVersion); nsTemplateInfo.Version = "1.0.0.1";// (++tempateVersion).ToString(); if (templateRespository != null) { templateRespository.Add(nsTemplateInfo); templateRespository.SaveChage(); } return(string.Empty); }
private void btnSelectTemplate_Click(object sender, RoutedEventArgs e) { var templateInfo = grdTemplates.SelectedItem as EntityCheckedHelperGeneric <NSTemplateInfo>; if (templateInfo != null) { this.SelectTemplateInfo = templateInfo.TEntity; DialogResultExt = true; this.Close(); } else { MessageHelper.ShowMessageBox("请选择要调试的模板!"); } }
protected override void Seed(MainWorkflowUnitOfWork unitOfWork) { // {"列名 'Id' 无效。\r\n列名 'TemplteName' 无效。\r\n列名 'TemplateType' 无效。"} var book = new NSTemplateInfo(Guid.NewGuid(), "测试", "<xml ?>"); unitOfWork.NSTemplateInfos.Add(book); unitOfWork.Database.CompatibleWithModel(false); unitOfWork.NSTemplateTypes.Add(new NSTemplateType() { Id = Guid.NewGuid(), TemplateType = "Test", TemplateDes = "Test Des", Version = "1.0.0.1" }); unitOfWork.NSNodeInfos.Add(new NSNodeInfo() { Id = Guid.NewGuid() }); unitOfWork.SaveChanges(); }
public override void EndBuiness(TransInfoDto transInfoDto) { // 启动新流程,记录到流程的ID,任务ID等信息 IPersistence p = transInfoDto.Persistence; // 结束当前点状态 NSNodeInfo nsNodeInfo = p.GetActivityByID(transInfoDto.InstanceNodeId); NSInstanceInfo nsInstance = p.GetInsanceInfo(nsNodeInfo.InstanceId); NSTemplateInfo nsTemplate = p.GetTemplateInfo(nsInstance.TemplateId); p.FinishActivity(nsNodeInfo); //TODO: 产生新的节点,如果在回归之后继续执行逻辑,则要有全局的传递,以后在进行添加 var nextActivities = XmlHelper.GetAllNextActivities(nsTemplate.TemplateText, nsNodeInfo.NodeId); if (nextActivities != null) { new RoutingHost().RoutingFactory(nextActivities.ToList(), transInfoDto); } base.EndBuiness(transInfoDto); }
public Guid StartWorkflowInfo(StartInfo_DTO startInfo, ref string errorInfos) { try { HashSet <Guid> newActivities = new HashSet <Guid>(); NSTaskInfo nsTaskInfo = new NSTaskInfo(); nsTaskInfo.Id = Guid.NewGuid(); nsTaskInfo.TaskName = startInfo.TaskName; nsTaskInfo.TaskType = startInfo.TaskType; nsTaskInfo.RunState = RunStateConst.RUNNING; nsTaskInfo.CreateTime = DateTime.Now; NSInstanceInfo nsIntanceInfo = new NSInstanceInfo(); nsIntanceInfo.Id = Guid.NewGuid(); nsIntanceInfo.TaskId = nsTaskInfo.Id; nsIntanceInfo.StartTime = DateTime.Now; nsIntanceInfo.TemplateId = startInfo.TemplateId; nsIntanceInfo.TemplateName = startInfo.TemplateName; nsIntanceInfo.RunState = RunStateConst.RUNNING; // StartWorkflow TemplateRepository t = new TemplateRepository(Context); NSTemplateInfo templateInfo = t.Get(startInfo.TemplateId); if (templateInfo == null) { errorInfos = "模板不能为空!"; return(Guid.Empty); } string templateXML = templateInfo.TemplateText; XElement doc = XElement.Parse(templateInfo.TemplateText); var nodeInfos = from c in doc.Elements("DesignerItems").Elements("DesignerItem") where c.Element("BType").Value == "Start" select c; // start node var startNode = nodeInfos.First(); // start node id string id = startNode.Element("ID").Value; // start node next nodes var custs = from c in doc.Elements("Connections").First().Elements("Connection") where c.Element("SourceID").Value == id select c.Element("SinkID").Value; // get all nodes startnode link foreach (var item in custs) { // get nodeinfo var nodeInfo = from c in doc.Elements("DesignerItems").Elements("DesignerItem") where c.Element("ID").Value == item select c; // create node info if need if (TransRouting.CreateNodeInfo(nodeInfo.First())) { NSNodeInfo nsNodeInfo = new NSNodeInfo(); nsNodeInfo.Id = Guid.NewGuid(); nsNodeInfo.InstanceId = nsIntanceInfo.Id; nsNodeInfo.TaskId = nsTaskInfo.Id; nsNodeInfo.NodeId = Guid.Parse(item.ToString()); nsNodeInfo.NodeName = nodeInfo.First().Element("Name").Value; nsNodeInfo.NodeId = Guid.Parse(nodeInfo.First().Element("ID").Value); nsNodeInfo.RunState = RunStateConst.RUNNING; nsNodeInfo.CreateTime = DateTime.Now; Context.NSNodeInfos.Add(nsNodeInfo); } else { // only prepare taskid and instanceid NSNodeInfo nsNodeInfo = new NSNodeInfo(); nsNodeInfo.Id = Guid.NewGuid(); nsNodeInfo.InstanceId = nsIntanceInfo.Id; nsNodeInfo.TaskId = nsTaskInfo.Id; // running routting TransRouting.Routing(doc, nodeInfo.First(), nsNodeInfo, Context, newActivities); } } Context.NsInstanceInfos.Add(nsIntanceInfo); Context.NsTaskInfos.Add(nsTaskInfo); Context.SaveChanges(); errorInfos = string.Empty; return(nsTaskInfo.Id); } catch (Exception e) { errorInfos = e.ToString(); return(Guid.Empty); } return(Guid.Empty); }