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); }
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); }
/// <summary> /// 实际执行的Post动作 /// </summary> /// <param name="context"></param> /// <returns></returns> public abstract Task RealPostExecute(MatrixDataHandlerContext context);
/// <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);
public async Task PostExecute(MatrixDataHandlerContext context) { await RealPostExecute(context); }