public override string Validation(string workflowId, string itemCode, WfResult wfResult)
        {
            StringBuilder sb = new StringBuilder();

            //验证决算信息。

            AppendErrorMessage(sb, MoneyValidation(itemCode, "实际投资信息", WorkFlowNode.JueSuan, 1));

            DataTable dtJsxx = new BusiItemManage_JS().QueryJsxx(itemCode);
            AppendErrorMessage(sb, dtOperation.RowNullCheck(dtJsxx, "决算信息", NotNullFormat));
            condition.Clear();
            condition.Add("SJZTZ", "资金总额");
            condition.Add("MJTZ", "亩均投资");
            condition.Add("SJGM", "建设规模");
            condition.Add("JSDW", "决算单位");
            condition.Add("SCDW", "决算审查单位");
            condition.Add("SCDASJ", "审查定案时间");
            condition.Add("SCDAWH", "审查定案文号");

            AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtJsxx, condition, NotNullFormat));

            //验证需要的文件是否都已经上传。
            if (wfResult == WfResult.Agree) AppendErrorMessage(sb, FileValidation(workflowId, itemCode, WorkFlowNode.JueSuan, null));
            return sb.ToString();
        }
        public override string Validation(string workflowId, string itemCode, WfResult wfResult)
        {
            StringBuilder sb = new StringBuilder();

            DataTable dtGh = new BusiItemManage_GHYS().QueryData(itemCode);
            AppendErrorMessage(sb, dtOperation.RowNullCheck(dtGh, "规划预算基本信息", NotNullFormat));

            DataTable dtGhdw = new BusiItemManage().QueryXmdw(itemCode, ItemCompanyType.GH);
            AppendErrorMessage(sb, dtOperation.RowNullCheck(dtGhdw, "规划设计单位", NotNullFormat));

            condition.Clear();
            condition.Add("NAME", "规划设计单位-单位名称");
            condition.Add("CODE", "规划设计单位-机构代码");
            condition.Add("LINKPHONE", "规划设计单位-联系电话");
            condition.Add("LINKMAN", "规划设计单位-联系人员");
            AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtGhdw, condition, NotNullFormat));

            AppendErrorMessage(sb, GcxxValidation(itemCode, ItemStage.GuiHua, 1));

            AppendErrorMessage(sb, MoneyValidation(itemCode, "项目预算", WorkFlowNode.GHSJYS, 1));

            AppendErrorMessage(sb, FileValidation(workflowId, itemCode, WorkFlowNode.GHSJYS, null));

            return sb.ToString();
        }
Exemple #3
0
        /// <summary>
        /// 线外控制流程
        /// </summary>
        /// <param name="itemCode"></param>
        /// <param name="result"></param>
        /// <returns></returns>
        public bool ContorlWf(string itemCode, WfResult result,string itemDesc)
        {
            bool succ = false;
            ItemState itemState = ItemState.Beginning;
            WfState wfState = WfState.Normal;

            if (result == WfResult.Stop) ////暂停
            {
                itemState = ItemState.Progressing;
                wfState = WfState.Stop;
            }

            if (result == WfResult.Start)///启动
            {
                itemState = ItemState.Progressing;
                wfState = WfState.Normal;
            }

            if (result == WfResult.Delete) ////终止
            {
                itemState = ItemState.Ending;
                wfState = WfState.Delete;
            }

            string strSql = "update xm_xmxx set ItemState = '{1}', WfState = '{2}',ItemDesc = '{3}' where ItemCode in ({0})";
            strSql = string.Format(strSql, itemCode, ((int)itemState).ToString(), ((int)wfState).ToString(), itemDesc);
            succ = OracleHelper.ExecuteCommand(strSql);
            return succ;
        }
        public override string Validation(string workflowId, string itemCode, WfResult wfResult)
        {
            StringBuilder sb = new StringBuilder();

            AppendErrorMessage(sb, GcxxValidation(itemCode, ItemStage.GuiHua, 1));

            AppendErrorMessage(sb, MoneyValidation(itemCode, "项目预算", WorkFlowNode.YSTZ, 1));

            return sb.ToString();
        }
        /// <summary>
        /// 验证方法。
        /// </summary>
        /// <param name="workflowId">流程Id。</param>
        /// <param name="itemCode">项目编号。</param>
        /// <returns>错误信息。</returns>
        public override string Validation(string workflowId, string itemCode, WfResult wfResult)
        {
            StringBuilder sb = new StringBuilder();

            //验证需要的文件是否都已经上传。
            AppendErrorMessage(sb, FileValidation(workflowId, itemCode, WorkFlowNode.JunGong, null));

            AppendErrorMessage(sb, ValidationYsxx(itemCode));

            return sb.ToString();
        }
Exemple #6
0
        public ActionResult Processinfo(string processId, string taskId)
        {
            WfParameter wfParameter = new WfParameter();
            UserInfo    userInfo    = LoginUserInfo.Get();

            wfParameter.companyId    = userInfo.companyId;
            wfParameter.departmentId = userInfo.departmentId;
            wfParameter.userId       = userInfo.userId;
            wfParameter.userName     = userInfo.realName;
            wfParameter.processId    = processId;
            wfParameter.taskId       = taskId;

            WfResult <WfContent> res = wfEngineIBLL.GetProcessInfo(wfParameter);

            return(Success(res));
        }
Exemple #7
0
        public WfResult Start(WorkflowAttributeCollection args, CancellationToken token)
        {
            WfResult result = WfResult.Succeeded;

            _args = args;

            Parameters parameters = new Parameters();

            try
            {
                Version v = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

                string inputXml;
                if (_args.ContainsKey(XML))
                {
                    inputXml = _args[XML];
                }
                else
                {
                    inputXml = DeParameters();
                }

                if (!inputXml.StartsWith("<?xml version="))
                {
                    byte[] base64ByteArr = Convert.FromBase64String(XML);
                    inputXml = System.Text.UnicodeEncoding.Unicode.GetString(base64ByteArr);
                }

                parameters = Parameters.DeSerializefromXml(inputXml);

                _logger.Information("Running DE v.{Version} ({Bit} bit)", v.ToString(), 8 * IntPtr.Size);
                _logger.Information("Executing as: {User}", WindowsIdentity.GetCurrent().Name.ToString());
                _logger.Debug("DE input parameter: {DeXml}", inputXml);

                //logger.WriteDebug("DE XML: " + inputXml);

                DEController controller = new DEController(_logger);
                controller.Execute(parameters, token);
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Exception: {Message}", ex.Message);
                result = WfResult.Failed;
            }

            return(result);
        }
        public void Test_Graph_Run_Ok()
        {
            DBController  db  = DBController.Create(connectionString);
            Workflow      wf  = db.WorkflowMetadataGet("Test100");
            WorkflowGraph wfg = WorkflowGraph.Create(wf, db);

            wfg.Start();

            BlockingCollection <string> step_set = new BlockingCollection <string>();

            Task t1 = Task.Factory.StartNew(() =>
            {
                WorkflowStep step = null;
                while (wfg.TryTake(out step, TimeSpan.FromMinutes(5)))
                {
                    wfg.SetNodeExecutionResult(step.Key, WfResult.Started);
                    Thread.Sleep(1000);
                    step_set.Add(step.Key);
                }

                step_set.CompleteAdding();
                Console.WriteLine(String.Format("Finishing Step Submitting thread"));
            });

            Task t2 = Task.Factory.StartNew(() =>
            {
                string Key = String.Empty;
                while (step_set.TryTake(out Key, -1))
                {
                    Console.WriteLine(String.Format("Processing step {0}", Key));
                    wfg.SetNodeExecutionResult(Key, WfResult.Succeeded);
                    //wfg.SetNodeExecutionResult(Key, WfResult.Failed);
                }

                Console.WriteLine(String.Format("Finishing Step Processing thread"));
            });

            Task.WaitAll(t1, t2);

            WfResult wr = wfg.WorkflowRunStatus;
            WfResult wc = wfg.WorkflowCompleteStatus;

            Console.WriteLine(String.Format("Run status {0}", wr.StatusCode.ToString()));
            Console.WriteLine(String.Format("Complete status {0}", wc.StatusCode.ToString()));
            Assert.IsTrue(wr.StatusCode == WfStatus.Succeeded);
        }
        /// <summary>
        /// 验证方法。
        /// </summary>
        /// <param name="workflowId">流程Id。</param>
        /// <param name="itemCode">项目编号。</param>
        /// <returns>错误信息。</returns>
        public override string Validation(string workflowId, string itemCode, WfResult wfResult)
        {
            StringBuilder sb = new StringBuilder();

            DataTable dtYsxx = new BusiItemManage_YS().QueryYsxx(itemCode);

            AppendErrorMessage(sb, dtOperation.RowNullCheck(dtYsxx, "终验信息", NotNullFormat));
            condition.Clear();
            condition.Add("ZYDW", "终验信息-终验单位");
            condition.Add("ZYSJ", "终验信息-终验时间");
            condition.Add("JSFHDW", "终验信息-复核单位");
            condition.Add("JSFHSJ", "终验信息-复核时间");
            AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtYsxx, condition, NotNullFormat));

            if (wfResult == WfResult.Agree)
            {
                if (string.IsNullOrEmpty(dtYsxx.Rows[0]["YSWH"].ToString()))
                {
                    AppendErrorMessage(sb, "\"终验信息-验收文号\"必须填写");
                }
                else
                {
                    string[] strAry = dtYsxx.Rows[0]["YSWH"].ToString().Split('|');
                    foreach (string s in strAry)
                    {
                        if (string.IsNullOrEmpty(s))
                        {
                            AppendErrorMessage(sb, "\"终验信息-验收文号\"填写不完整");
                            break;
                        }
                    }
                }
            }


            ////工程信息
            AppendErrorMessage(sb, GcxxValidation(itemCode, ItemStage.YanShou, 1));

            //验证需要的文件是否都已经上传。
            if (wfResult == WfResult.Agree)
            {
                AppendErrorMessage(sb, FileValidation(workflowId, itemCode, WorkFlowNode.ZhongYan, null));
            }

            return(sb.ToString());
        }
        public override string Validation(string workflowId, string itemCode, WfResult wfResult)
        {
            StringBuilder sb = new StringBuilder();

            DataTable dtKy = new BusiItemManage_KY().QueryData(itemCode);

            AppendErrorMessage(sb, dtOperation.RowNullCheck(dtKy, "可研基本信息", NotNullFormat));
            condition.Clear();
            condition.Add("ITEMNAME", "项目名称");
            condition.Add("XMLX", "项目类型");
            condition.Add("ZJND", "新增费使用年度");
            condition.Add("JSGQ", "建设工期");
            AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtKy, condition, NotNullFormat));

            DataTable dtGis = new BusiItemManage_Gis().QueryData(itemCode, (int)ItemStage.KeYan, 1);

            AppendErrorMessage(sb, dtOperation.RowNullCheck(dtGis, "Gis基本信息", NotNullFormat));

            condition.Clear();
            condition.Add("ADDRESS", "项目区行政位置");
            condition.Add("QSJD", "大地坐标-起始经度");
            condition.Add("JZJD", "大地坐标-截止经度");
            condition.Add("QSWD", "大地坐标-起始纬度");
            condition.Add("JZWD", "大地坐标-截止纬度");
            condition.Add("GM", "项目建设规模");
            condition.Add("XZGDMJ", "新增耕地面积");
            condition.Add("MONEY", "资金估算");

            condition.Add("TFTBH", "图幅号(图斑号)");
            condition.Add("DLMJ", "地类");
            condition.Add("QSXZMJ", "权属情况");

            AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtGis, condition, NotNullFormat));

            DataTable dtKydw = new BusiItemManage().QueryXmdw(itemCode, ItemCompanyType.KY);
            AppendErrorMessage(sb, dtOperation.RowNullCheck(dtKydw, "可研编制单位", NotNullFormat));
            condition.Clear();
            condition.Add("NAME", "可研编制单位-单位名称");
            condition.Add("CODE", "可研编制单位-机构代码");
            condition.Add("LINKPHONE", "可研编制单位-联系电话");
            condition.Add("LINKMAN", "可研编制单位-联系人员");
            AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtKydw, condition, NotNullFormat));

            AppendErrorMessage(sb, FileValidation(workflowId, itemCode, WorkFlowNode.KY, null));
            return sb.ToString();
        }
        public override WfResult Run(CancellationToken token)
        {
            WfResult result = WfResult.Unknown;
            //_logger.Write(String.Format("SqlServer: {0} query: {1}", _attributes[CONNECTION_STRING], _attributes[QUERY_STRING]));

            SqlConnection cn = new SqlConnection(base._attributes[CONNECTION_STRING]);

            try
            {
                cn.InfoMessage += new SqlInfoMessageEventHandler(OnInfoMessage);
                cn.FireInfoMessageEventOnUserErrors = false;
                cn.Open();
                using (SqlCommand cmd = new SqlCommand(_attributes[QUERY_STRING], cn))
                {
                    cmd.CommandTimeout = Int32.Parse(_attributes[TIMEOUT]);
                    using (token.Register(cmd.Cancel))
                    {
                        var value = cmd.ExecuteScalar();

                        int int_value;
                        if (Int32.TryParse(value.ToString(), out int_value))
                        {
                            result = (int_value > 0) ? WfResult.Succeeded : WfResult.Failed;
                        }
                        else
                        {
                            result = WfResult.Failed;
                        }
                    }
                }
            }
            catch (SqlException ex)
            {
                throw ex;
                //_logger.Write(String.Format("SqlServer exception: {0}", ex.Message));
                //result = WfResult.Create(WfStatus.Failed, ex.Message, ex.ErrorCode);
            }
            finally
            {
                if (cn.State != ConnectionState.Closed)
                {
                    cn.Close();
                }
            }
            return(result);
        }
        /// <summary>
        /// 验证方法。
        /// </summary>
        /// <param name="workflowId">流程Id。</param>
        /// <param name="itemCode">项目编号。</param>
        /// <returns>错误信息。</returns>
        public override string Validation(string workflowId, string itemCode, WfResult wfResult)
        {
            StringBuilder sb = new StringBuilder();

            DataTable dtYsxx = new BusiItemManage_YS().QueryYsxx(itemCode);
            AppendErrorMessage(sb, dtOperation.RowNullCheck(dtYsxx, "初验信息", NotNullFormat));
            condition.Clear();
            condition.Add("CYDW", "初验信息-初验单位");
            condition.Add("CYSJ", "初验信息-初验时间");

            AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtYsxx, condition, NotNullFormat));

            //验证需要的文件是否都已经上传。
            if (wfResult == WfResult.Agree) AppendErrorMessage(sb, FileValidation(workflowId, itemCode, WorkFlowNode.ChuYan, null));

            return sb.ToString();
        }
Exemple #13
0
        public WfResult Run(CancellationToken token)
        {
            WfResult result = WfResult.Unknown;

            //_logger.Write(String.Format("SqlServer: {0} query: {1}", _attributes[CONNECTION_STRING], _attributes[QUERY_STRING]));

            using (var timeoutCts = new CancellationTokenSource(TimeSpan.FromSeconds(Int32.Parse(_attributes[TIMEOUT]))))
            {
                using (var linkedCts = CancellationTokenSource.CreateLinkedTokenSource(timeoutCts.Token, token))
                {
                    BsonToSql(_attributes[TABLE_NAME], _attributes[INPUT_FILE], linkedCts.Token);
                    result = WfResult.Succeeded;
                }
            }

            return(result);
        }
Exemple #14
0
        public ActionResult Bootstraper(bool isNew, string processId, string schemeCode)
        {
            WfParameter wfParameter = new WfParameter();
            UserInfo    userInfo    = LoginUserInfo.Get();

            wfParameter.companyId    = userInfo.companyId;
            wfParameter.departmentId = userInfo.departmentId;
            wfParameter.userId       = userInfo.userId;
            wfParameter.userName     = userInfo.realName;
            wfParameter.isNew        = isNew;
            wfParameter.processId    = processId;
            wfParameter.schemeCode   = schemeCode;

            WfResult <WfContent> res = wfEngineIBLL.Bootstraper(wfParameter);

            return(Success(res));
        }
Exemple #15
0
        public void Execute(WfRunner runner, WfResult result)
        {
            var task  = result.Task;
            var iTask = result.InstanceTask;

            if (task.TaskType == WfTaskType.Default)
            {
                // 检查办理人是否一致
                if (iTask.User_Id != runner.AC.User.Id)
                {
                    throw new AceException("你无权处理该件,操作人不符!");
                }

                // 本步结束
                SetTaskFinish(runner, result);

                // 执行下一步
                var nextTasks = result.NextTasks;
                Check.Require(nextTasks.Count > 0, $"未获取到流程后续节点!");
                if (nextTasks.First().TaskType == WfTaskType.Stop)
                {
                    // 后续无业务时结束流程
                    SetInstanceFinish(runner, result);
                }
                else
                {
                    // 生成后续的实例任务
                    nextTasks.Each(nextTask =>
                    {
                        CreateNextInstanceTask(runner, result, nextTask);
                    });
                }
            }
            else if (task.TaskType == WfTaskType.Looping)
            {
                // 选择下一人办理,重复当前节点
            }
            else if (task.TaskType == WfTaskType.Multiple)
            {
                // 按给定顺序执行会签,串行和并行
            }
            else if (task.TaskType == WfTaskType.SubProcess)
            {
                // 启动相应的子流程
            }
        }
        public void EventCheck_Ok()
        {
            CheckWorkflowEventActivity  activity = new CheckWorkflowEventActivity();
            WorkflowActivityArgs        wfa      = new WorkflowActivityArgs();
            WorkflowAttributeCollection list     = new WorkflowAttributeCollection();

            list.Add("ConnectionString", @"Server=.; Database=etl_event; Trusted_Connection = True; Connection Timeout = 120; ");
            list.Add("EventType", @"Process2_FINISHED");
            list.Add("WatermarkEventType", @"Process1_FINISHED");
            list.Add("Timeout", "0");
            wfa.RequiredAttributes = list;
            wfa.Logger             = _logger;

            activity.Configure(wfa);
            WfResult result = activity.Run(CancellationToken.None);

            Assert.IsTrue(result.StatusCode == WfStatus.Succeeded);
        }
Exemple #17
0
        private void CreateNextInstanceTask(WfRunner runner, WfResult result, WF_Task nextTask)
        {
            var iTask = new WF_InstanceTask();

            iTask.InitializeId();
            iTask.DCreate       = DateTime.Now;
            iTask.Prev_Id       = result.InstanceTask.Id;
            iTask.AppInstanceId = runner.AppInstanceId;
            iTask.Process_Id    = result.Process.Id;
            iTask.Process_Name  = result.Process.Name;
            iTask.Task_Id       = nextTask.Id;
            iTask.Task_Name     = nextTask.Name;
            iTask.Status        = WfTaskStatus.Pending;
            iTask.Audit         = WfAuditState.Pending;
            iTask.Action        = WfActionType.Forward;
            iTask.CreateUser_Id = runner.AC.User.Id;
            iTaskService.Insert(iTask);
        }
        public void BsonConvert_Ok()
        {
            BsonConverterActivity       activity = new BsonConverterActivity();
            WorkflowActivityArgs        wfa      = new WorkflowActivityArgs();
            WorkflowAttributeCollection list     = new WorkflowAttributeCollection();

            list.Add("InputFile", "C:\\Builds\\UnzipFiles\\mongobackup_10-19-2016-230145\\edxapp\\*.bson");
            list.Add("OutputFolder", "c:\\Builds\\JsonFiles\\10-19-2016\\edxapp");
            list.Add("Timeout", "30");
            wfa.RequiredAttributes = list;
            wfa.Logger             = _logger;


            activity.Configure(wfa);
            WfResult result = activity.Run(CancellationToken.None);

            Assert.IsTrue(result.StatusCode == WfStatus.Succeeded);
        }
        public void BsonSqlLoader_Ok()
        {
            BsonSqlLoaderActivity       activity = new BsonSqlLoaderActivity();
            WorkflowActivityArgs        wfa      = new WorkflowActivityArgs();
            WorkflowAttributeCollection list     = new WorkflowAttributeCollection();

            list.Add("ConnectionString", @"Server=.\sql14; Database=etl_staging; Trusted_Connection=True; Connection Timeout=120; ");
            list.Add("InputFile", "C:\\Builds\\UnzipFiles\\mongobackup_10-19-2016-230145\\edxapp\\fs.files.bson");
            list.Add("TableName", "dbo.staging_bson_test");
            list.Add("Timeout", "600");
            wfa.RequiredAttributes = list;
            wfa.Logger             = _logger;


            activity.Configure(wfa);
            WfResult result = activity.Run(CancellationToken.None);

            Assert.IsTrue(result.StatusCode == WfStatus.Succeeded);
        }
        /// <summary>
        /// Entry point to Delta Extractor. Takes parameters defined by an XML string based
        /// on the parameters.XSD schema.
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public static void Main(string[] args)
        {
            if (args.Length == 0 ||
                args.Contains(@"/help", StringComparer.InvariantCultureIgnoreCase))
            {
                help();
                Environment.Exit(0);
            }

            bool debug   = args.Contains(@"/D", StringComparer.InvariantCultureIgnoreCase);
            bool verbose = args.Contains(@"/V", StringComparer.InvariantCultureIgnoreCase);


            try
            {
                var     minLogLevel = (debug) ? LogEventLevel.Debug : LogEventLevel.Information;
                ILogger logger      = new LoggerConfiguration()
                                      .MinimumLevel.Is(minLogLevel)
                                      .WriteTo.Console()
                                      .CreateLogger();


                ;
                WorkflowAttributeCollection param = new WorkflowAttributeCollection();
                param.Add("XML", args[0]);

                using (CancellationTokenSource cts = new CancellationTokenSource())
                {
                    DERun    runner = new DERun(logger);
                    WfResult result = runner.Start(param, cts.Token);
                    if (result.StatusCode != WfStatus.Succeeded)
                    {
                        throw new Exception(String.Format("DE returned Status: {0}", result.StatusCode.ToString()));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Environment.Exit(1);
            }
            Environment.Exit(0);
        }
        public void DERun_Ok()
        {
            DeltaExtractorActivity      activity = new DeltaExtractorActivity();
            WorkflowActivityArgs        wfa      = new WorkflowActivityArgs();
            WorkflowAttributeCollection list     = new WorkflowAttributeCollection();

            list.Add("ConnectionString", @"Server=.; Database=etl_controller; Trusted_Connection = True; Connection Timeout = 120; ");
            list.Add("@BatchId", "1006");
            list.Add("@StepId", "11");
            list.Add("@RunId", "0");
            wfa.RequiredAttributes = list;
            wfa.Logger             = _logger;


            activity.Configure(wfa);
            WfResult result = activity.Run(CancellationToken.None);

            Assert.IsTrue(result.StatusCode == WfStatus.Succeeded);
        }
Exemple #22
0
        public WF_InstanceTask GetBack(WfResult result)
        {
            if (result.InstanceTask.Action == WfActionType.Forward)
            {
                if (result.PrevInstanceTask == null)
                {
                    result.PrevInstanceTask = Get(result.InstanceTask.Prev_Id.Value);
                }
                return(result.PrevInstanceTask);
            }

            return(Session.QueryFirst <WF_InstanceTask>(
                       new RequestContext("wf", "get_instancetask_by_taskid")
                       .SetParam(new
            {
                taskid = result.InstanceTask.Task_Id
            })
                       ));
        }
        public void TGZDecompress_Ok()
        {
            TGZDecompressActivity       activity = new TGZDecompressActivity();
            WorkflowActivityArgs        wfa      = new WorkflowActivityArgs();
            WorkflowAttributeCollection list     = new WorkflowAttributeCollection();

            list.Add("InputFile", "c:\\Builds\\ZipFiles\\test.tar.gz");
            list.Add("OutputFolder", "c:\\Builds\\UnzipFiles");
            list.Add("Mode", "tgz");
            list.Add("Timeout", "30");
            wfa.RequiredAttributes = list;
            wfa.Logger             = _logger;


            activity.Configure(wfa);
            WfResult result = activity.Run(CancellationToken.None);

            Assert.IsTrue(result.StatusCode == WfStatus.Succeeded);
        }
Exemple #24
0
        public void Execute(WfRunner runner, WfResult result)
        {
            var task  = result.Task;
            var iTask = result.InstanceTask;

            // 检查办理人是否一致
            if (iTask.User_Id != runner.AC.User.Id)
            {
                throw new AceException("你无权处理该件,操作人不符!");
            }

            // 本步结束
            SetTaskFinish(runner, result);

            // 返回上一步
            var backTask = taskService.Get(result.BackInstanceTask.Task_Id);

            CreateNextInstanceTask(runner, result, backTask);
        }
Exemple #25
0
        public virtual WfResult Run(CancellationToken token)
        {
            WfResult result = WfResult.Unknown;
            //_logger.Write(String.Format("SqlServer: {0} query: {1}", _attributes[CONNECTION_STRING], _attributes[QUERY_STRING]));

            int processId = Process.GetCurrentProcess().Id;

            _logger.Debug("Host process Id: {ProcessId}", processId);

            using (SqlConnection cn = new SqlConnection(_attributes[CONNECTION_STRING]))
            {
                try
                {
                    cn.InfoMessage += new SqlInfoMessageEventHandler(OnInfoMessage);
                    cn.FireInfoMessageEventOnUserErrors = false;
                    cn.Open();
                    using (SqlCommand cmd = new SqlCommand(_attributes[QUERY_STRING], cn))
                    {
                        cmd.CommandTimeout = Int32.Parse(_attributes[TIMEOUT]);
                        using (token.Register(cmd.Cancel))
                        {
                            cmd.ExecuteNonQuery();
                        }
                        result = WfResult.Succeeded;
                    }
                }
                catch (SqlException ex)
                {
                    _logger.Error(ex, "SqlServer exception {ErrorCode}: {Message}", ex.Number, ex.Message);
                    result = WfResult.Failed;
                    //throw ex;
                }
                finally
                {
                    if (cn.State != ConnectionState.Closed)
                    {
                        cn.Close();
                    }
                }
            }
            return(result);
        }
Exemple #26
0
        public override string Validation(string workflowId, string itemCode, WfResult wfResult)
        {
            StringBuilder sb = new StringBuilder();

            DataTable dtSb = new BusiItemManage_SB().QueryData(itemCode);

            condition.Clear();
            condition.Add("ITEMNAME", "项目名称");
            condition.Add("XMLX", "项目类型");
            condition.Add("SHENG", "项目所在地-省");
            condition.Add("SHI", "项目所在地-市");
            condition.Add("XIAN", "项目所在地-县");
            condition.Add("ZJND", "新增费使用年度");
            AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtSb, condition, NotNullFormat));

            DataTable dtGis = new BusiItemManage_Gis().QueryData(itemCode, (int)ItemStage.ShenBo, 1);

            AppendErrorMessage(sb, dtOperation.RowNullCheck(dtGis, "Gis基本信息", NotNullFormat));

            condition.Clear();
            condition.Add("ADDRESS", "项目区行政位置");
            condition.Add("QSJD", "大地坐标-起始经度");
            condition.Add("JZJD", "大地坐标-截止经度");
            condition.Add("QSWD", "大地坐标-起始纬度");
            condition.Add("JZWD", "大地坐标-截止纬度");
            condition.Add("GM", "项目建设规模");
            condition.Add("XZGDMJ", "新增耕地面积");
            condition.Add("MONEY", "资金概算");


            condition.Add("TFTBH", "图幅号(图斑号)");
            condition.Add("DLMJ", "地类");
            condition.Add("QSXZMJ", "权属情况");

            AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtGis, condition, NotNullFormat));


            //验证需要的文件是否都已经上传。
            AppendErrorMessage(sb, FileValidation(workflowId, itemCode, WorkFlowNode.TB, null));

            return(sb.ToString());
        }
Exemple #27
0
        public void Execute(WfRunner runner, WfResult result)
        {
            if (result.CanWithdraw)
            {
                // 删除后续实例任务
                iTaskService.Delete(result.InstanceTask.Id);

                // 修改本部为处理中
                var iTask = result.InstanceTask;
                iTask.Status  = WfTaskStatus.Dealing;
                iTask.Opinion = null;
                iTask.DUpdate = null;
                iTask.Audit   = result.IsStartTask ? WfAuditState.UnSend : WfAuditState.Pending;
                iTaskService.Update(iTask);
            }
            else
            {
                throw new AceException("该件已回收或后置节点已处理!");
            }
        }
        public void EventPost_Ok()
        {
            PostWorkflowEventActivity   activity = new PostWorkflowEventActivity();
            WorkflowActivityArgs        wfa      = new WorkflowActivityArgs();
            WorkflowAttributeCollection list     = new WorkflowAttributeCollection();

            list.Add("ConnectionString", @"Server=.; Database=etl_event; Trusted_Connection = True; Connection Timeout = 120; ");
            list.Add("EventType", @"Process2_FINISHED");
            list.Add("EventPostDate", @"2016-12-16 18:04");
            //list.Add("EventArgs", "<dwc:EventArgs xmlns:dwc=\"EventArgs.XSD\" Source=\"Process2 Finished\" PeriodGrain=\"Week\" Period=\"201652\" />");
            list.Add("EventArgs", "");
            list.Add("Timeout", "0");
            wfa.RequiredAttributes = list;
            wfa.Logger             = _logger;

            activity.Configure(wfa);
            WfResult result = activity.Run(CancellationToken.None);

            Assert.IsTrue(result.StatusCode == WfStatus.Succeeded);
        }
Exemple #29
0
 public WfResult GetInstance(WfRunner runner)
 {
     return(Session.QueryMultiple <WfResult>(
                new RequestContext("wf", "get_instance_by_id")
                .SetParam(new
     {
         runner.AppInstanceId,
         runner.TaskId
     }),
                reader =>
     {
         var result = new WfResult();
         result.Process = reader.Read <WF_Process>(true).FirstOrDefault();
         result.Task = reader.Read <WF_Task>(true).FirstOrDefault();
         result.Instance = reader.Read <WF_Instance>(true).FirstOrDefault();
         result.InstanceTask = reader.Read <WF_InstanceTask>(true).FirstOrDefault();
         return result;
     }
                ));
 }
Exemple #30
0
        /// <summary>
        /// 审核流程实例
        /// </summary>
        /// <param name="_"></param>
        /// <returns></returns>
        private Response Audit(dynamic _)
        {
            WfParameter wfParameter = this.GetReqData <WfParameter>();

            wfParameter.companyId    = this.userInfo.companyId;
            wfParameter.departmentId = this.userInfo.departmentId;
            wfParameter.userId       = this.userInfo.userId;
            wfParameter.userName     = this.userInfo.realName;

            List <FormParam> req = wfParameter.formreq.ToObject <List <FormParam> >();// 获取模板请求数据

            foreach (var item in req)
            {
                formSchemeIBLL.SaveInstanceForm(item.schemeInfoId, item.processIdName, item.keyValue, item.formData);
            }

            WfResult res = wfEngineIBLL.Audit(wfParameter);

            return(this.Success <WfResult>(res));
        }
        public void FileSetStatus_Ok()
        {
            FileSetProgressStatusActivity activity = new FileSetProgressStatusActivity();
            WorkflowActivityArgs          wfa      = new WorkflowActivityArgs();
            WorkflowAttributeCollection   list     = new WorkflowAttributeCollection();

            list.Add("RegisterConnectionString", @"Server=.\sql14; Database=etl_staging; Trusted_Connection = True; Connection Timeout = 120; ");
            list.Add("FileId", "5");
            list.Add("FileStatus", "Completed");
            list.Add("Timeout", "30");
            list.Add("etl:RunId", "1");
            wfa.RequiredAttributes = list;
            wfa.Logger             = _logger;


            activity.Configure(wfa);
            WfResult result = activity.Run(CancellationToken.None);

            Assert.IsTrue(result.StatusCode == WfStatus.Succeeded);
        }
Exemple #32
0
        private void CreateNextInstanceTask(WfRunner runner, WfResult result, WF_Task backTask)
        {
            var iTask = new WF_InstanceTask();

            iTask.InitializeId();
            iTask.DCreate       = DateTime.Now;
            iTask.Prev_Id       = result.InstanceTask.Id;
            iTask.AppInstanceId = runner.AppInstanceId;
            iTask.Process_Id    = result.Process.Id;
            iTask.Process_Name  = result.Process.Name;
            iTask.Task_Id       = backTask.Id;
            iTask.Task_Name     = backTask.Name;
            iTask.Status        = WfTaskStatus.Dealing;
            iTask.DFetch        = DateTime.Now;
            iTask.Audit         = result.Instance.StartTask_Id == backTask.Id ? WfAuditState.UnSend : WfAuditState.Pending;
            iTask.Action        = WfActionType.Backward;
            iTask.CreateUser_Id = runner.AC.User.Id;
            iTask.User_Id       = result.BackInstanceTask.User_Id;
            iTask.User_Name     = result.BackInstanceTask.User_Name;
            iTaskService.Insert(iTask);
        }
Exemple #33
0
        /// <summary>
        /// 验证方法。
        /// </summary>
        /// <param name="workflowId">流程Id。</param>
        /// <param name="itemCode">项目编号。</param>
        /// <returns>错误信息。</returns>
        public override string Validation(string workflowId, string itemCode, WfResult wfResult)
        {
            StringBuilder sb = new StringBuilder();

            DataTable dtYsxx = new BusiItemManage_YS().QueryYsxx(itemCode);

            AppendErrorMessage(sb, dtOperation.RowNullCheck(dtYsxx, "初验信息", NotNullFormat));
            condition.Clear();
            condition.Add("CYDW", "初验信息-初验单位");
            condition.Add("CYSJ", "初验信息-初验时间");

            AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtYsxx, condition, NotNullFormat));

            //验证需要的文件是否都已经上传。
            if (wfResult == WfResult.Agree)
            {
                AppendErrorMessage(sb, FileValidation(workflowId, itemCode, WorkFlowNode.ChuYan, null));
            }

            return(sb.ToString());
        }
        public void ExecuteSqlQuery_Ok()
        {
            SqlServerActivity           activity = new SqlServerActivity();
            WorkflowActivityArgs        wfa      = new WorkflowActivityArgs();
            WorkflowAttributeCollection list     = new WorkflowAttributeCollection();

            //list.Add("ConnectionString", @"Server=.; Database=etl_staging; Trusted_Connection = True; Connection Timeout = 120; ");
            list.Add("ConnectionString", @"Server=.; Database=etl_staging; Trusted_Connection = False;User Id=test;Password=test; Connection Timeout = 120; ");
            list.Add("Query", @"
print 'this is print test';
raiserror ('this is err test',11,11);
");
            list.Add("Timeout", "0");
            wfa.RequiredAttributes = list;
            wfa.Logger             = _logger;

            activity.Configure(wfa);
            WfResult result = activity.Run(CancellationToken.None);

            Assert.IsTrue(result.StatusCode == WfStatus.Succeeded);
        }
        public void FileRegister_Ok()
        {
            FileRegisterActivity        activity = new FileRegisterActivity();
            WorkflowActivityArgs        wfa      = new WorkflowActivityArgs();
            WorkflowAttributeCollection list     = new WorkflowAttributeCollection();

            list.Add("RegisterConnectionString", @"Server=.\sql14; Database=etl_staging; Trusted_Connection=True; Connection Timeout=120; ");
            list.Add("RegisterPath", "c:\\Builds\\FlatFiles\\*.txt");
            list.Add("SourceName", "testFiles");
            list.Add("ProcessPriority", "1");
            list.Add("Timeout", "30");
            list.Add("@runId", "1");
            wfa.RequiredAttributes = list;
            wfa.Logger             = _logger;


            activity.Configure(wfa);
            WfResult result = activity.Run(CancellationToken.None);

            Assert.IsTrue(result.StatusCode == WfStatus.Succeeded);
        }
        public override string Validation(string workflowId, string itemCode, WfResult wfResult)
        {
            StringBuilder sb = new StringBuilder();

            DataTable dtSb = new BusiItemManage_SB().QueryData(itemCode);

            condition.Clear();
            condition.Add("ITEMNAME", "项目名称");
            condition.Add("XMLX", "项目类型");
            condition.Add("SHENG", "项目所在地-省");
            condition.Add("SHI", "项目所在地-市");
            condition.Add("XIAN", "项目所在地-县");
            condition.Add("ZJND", "新增费使用年度");
            AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtSb, condition, NotNullFormat));

            DataTable dtGis = new BusiItemManage_Gis().QueryData(itemCode, (int)ItemStage.ShenBo, 1);

            AppendErrorMessage(sb, dtOperation.RowNullCheck(dtGis, "Gis基本信息", NotNullFormat));

            condition.Clear();
            condition.Add("ADDRESS", "项目区行政位置");
            condition.Add("QSJD", "大地坐标-起始经度");
            condition.Add("JZJD", "大地坐标-截止经度");
            condition.Add("QSWD", "大地坐标-起始纬度");
            condition.Add("JZWD", "大地坐标-截止纬度");
            condition.Add("GM", "项目建设规模");
            condition.Add("XZGDMJ", "新增耕地面积");
            condition.Add("MONEY", "资金概算");

            condition.Add("TFTBH", "图幅号(图斑号)");
            condition.Add("DLMJ", "地类");
            condition.Add("QSXZMJ", "权属情况");

            AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtGis, condition, NotNullFormat));

            //验证需要的文件是否都已经上传。
            AppendErrorMessage(sb, FileValidation(workflowId, itemCode, WorkFlowNode.TB, null));

            return sb.ToString();
        }
Exemple #37
0
        public ActionResult Audit(string taskId, string verifyType, string description, string auditorId, string auditorName, string auditers, string formData)
        {
            WfParameter wfParameter = new WfParameter();
            UserInfo    userInfo    = LoginUserInfo.Get();

            wfParameter.companyId    = userInfo.companyId;
            wfParameter.departmentId = userInfo.departmentId;
            wfParameter.userId       = userInfo.userId;
            wfParameter.userName     = userInfo.realName;

            wfParameter.taskId      = taskId;
            wfParameter.verifyType  = verifyType;
            wfParameter.auditorId   = auditorId;
            wfParameter.auditorName = auditorName;
            wfParameter.description = description;
            wfParameter.auditers    = auditers;
            wfParameter.formData    = formData;

            WfResult res = wfEngineIBLL.Audit(wfParameter);

            return(Success(res));
        }
        public void FileDequeue_Ok()
        {
            FileGetProcessListActivity  activity = new FileGetProcessListActivity();
            WorkflowActivityArgs        wfa      = new WorkflowActivityArgs();
            WorkflowAttributeCollection list     = new WorkflowAttributeCollection();

            list.Add("ConnectionString", @"Server=.\sql14; Database=etl_controller; Trusted_Connection = True; Connection Timeout = 120; ");
            list.Add("RegisterConnectionString", @"Server=.\sql14; Database=etl_staging; Trusted_Connection = True; Connection Timeout = 120; ");
            list.Add("SourceName", "testFiles");
            list.Add("Timeout", "30");
            list.Add("etl:RunId", "1");
            list.Add("etl:BatchId", "101");
            list.Add("etl:StepId", "1");
            wfa.RequiredAttributes = list;
            wfa.Logger             = _logger;


            activity.Configure(wfa);
            WfResult result = activity.Run(CancellationToken.None);

            Assert.IsTrue(result.StatusCode == WfStatus.Succeeded);
        }
        /// <summary>
        /// 验证方法。
        /// </summary>
        /// <param name="workflowId">流程Id。</param>
        /// <param name="itemCode">项目编号。</param>
        /// <returns>错误信息。</returns>
        public override string Validation(string workflowId, string itemCode, WfResult wfResult)
        {
            StringBuilder sb = new StringBuilder();

            //验证承担单位信息。
            AppendErrorMessage(sb, ValidationCddw(itemCode));

            //验证招投标信息。
            AppendErrorMessage(sb, ValidationZtb(workflowId, itemCode, false));

            //验证工程监理信息。
            AppendErrorMessage(sb, ValidationJl(workflowId, itemCode));

            //验证变更信息。
            AppendErrorMessage(sb, ValidationBg(itemCode));

            //验证进度跟踪信息。
            //AppendErrorMessage(sb, ValidationJzxx(itemCode));

            //验证需要的文件是否都已经上传。
            AppendErrorMessage(sb, FileValidation(workflowId, itemCode, WorkFlowNode.ShiShi, null));

            return sb.ToString();
        }
 /// <summary>
 /// 验证方法。
 /// </summary>
 /// <param name="workflowId">流程Id。</param>
 /// <param name="itemCode">项目编号。</param>
 /// <returns>错误信息。</returns>
 public abstract string Validation(string workflowId, string itemCode, WfResult wfResult);