Exemplo n.º 1
0
        private void InsertDB_Transitions(WorkflowContext ctx, ParallelInfo parallelInfo, Dictionary <string, Guid> nodes)
        {
            InsertDB_Transitions(ctx, parallelInfo as NodeInfo, nodes);
            //平行节点默认跳转到每个执行线上的第一个节点

            foreach (var line in parallelInfo.ExecuteLines)
            {
                var fistNodeInLine = nodes[line.Units[0].Name];
                var transition     = new Sys_Transition(Guid.NewGuid());
                transition.FromNodeId = nodes[parallelInfo.Name.ToLower().Trim()];
                transition.ToNodeId   = fistNodeInLine;
                transition.Condition  = "true";
                transition.CreateTime = DateTime.Now;
                ctx.Sys_Transitions.Add(transition);

                InsertDB_Transitions(ctx, line, nodes);
            }
        }
Exemplo n.º 2
0
        private void InsertDB_Transitions(WorkflowContext ctx, NodeInfo nodeInfo, Dictionary <string, Guid> nodes)
        {
            if (nodeInfo.Translation == null ||
                nodeInfo.Translation.Statments == null)
            {
                return;
            }

            foreach (var tr in nodeInfo.Translation.Statments)
            {
                var transition = new Sys_Transition(Guid.NewGuid());
                transition.FromNodeId = nodes[nodeInfo.Name.ToLower().Trim()];
                transition.ToNodeId   = nodes[tr.Target.ToLower().Trim()];
                var builder = new IndentStringBuilder();
                tr.Expression.Render(builder);
                transition.Condition  = builder.ToString();
                transition.CreateTime = DateTime.Now;
                ctx.Sys_Transitions.Add(transition);
            }
        }