Exemplo n.º 1
0
        public async Task PreExecute(MatrixDataHandlerContext context)
        {
            //检查表是否存在,如果存在,则清空数据,如果不存在,则创建数据
            var tableName = await GetDataTableName();

            var tableGenerateScript = await GetTableGenerateScript();

            using (SqlConnection conn = new SqlConnection(await GetConnectionString()))
            {
                conn.Open();
                var tableCheck = await checkTableExist(conn, tableName);

                if (tableCheck)
                {
                    await clearTable(conn, tableName);
                }
                else
                {
                    await createTable(conn, tableGenerateScript);
                }

                conn.Close();
            }

            await RealPreExecute(context);
        }
Exemplo n.º 2
0
        public async Task <bool> Execute(MatrixDataHandlerContext context, string handlerConfiguration, MatrixDataRow row)
        {
            var strConn = await GetConnectionString();

            var tableName = await GetDataTableName();

            var guidColumn = await GetGuidColumnName();

            var statusColumn = await GetStatusColumnName();

            var errorColumn = await GetErrorColumnName();

            var insertColumnNameScript = await GetInsertColumnNameScript();

            var insertColumnValueScript = await GetInsertColumnValueScript();


            Guid id = Guid.NewGuid();

            //处理前先新增一条状态为0(待处理)的记录
            await dbExecute(strConn, async (conn) =>
            {
                await insertRecord(conn, tableName, id, guidColumn, statusColumn, 0, insertColumnNameScript, insertColumnValueScript, string.Empty);
            });

            //执行处理
            bool result;

            try
            {
                result = await RealExecute(context, handlerConfiguration, row);
            }
            catch (Exception ex)
            {
                //处理后,如果发生错误,修改之前新增的记录的状态为2(处理失败)
                await dbExecute(strConn, async (conn) =>
                {
                    await updateRecordStatus(conn, tableName, guidColumn, id, statusColumn, 2, errorColumn, ex.ToString());
                });

                throw;
            }

            //处理后,如果未发生错误,修改之前新增的记录的状态为1(处理成功)
            await dbExecute(strConn, async (conn) =>
            {
                await updateRecordStatus(conn, tableName, guidColumn, id, statusColumn, 1, errorColumn, string.Empty);
            });

            return(result);
        }
Exemplo n.º 3
0
 /// <summary>
 /// 实际执行的Post动作
 /// </summary>
 /// <param name="context"></param>
 /// <returns></returns>
 public abstract Task RealPostExecute(MatrixDataHandlerContext context);
Exemplo n.º 4
0
 /// <summary>
 /// 实际执行的业务逻辑
 ///
 /// </summary>
 /// <param name="context"></param>
 /// <param name="handlerConfiguration"></param>
 /// <param name="row"></param>
 /// <returns></returns>
 public abstract Task <bool> RealExecute(MatrixDataHandlerContext context, string handlerConfiguration, MatrixDataRow row);
Exemplo n.º 5
0
 public async Task PostExecute(MatrixDataHandlerContext context)
 {
     await RealPostExecute(context);
 }