Browse Source

元数据任务处理提交

master
peng.peng 2 years ago
parent
commit
a9ec35f27d
  1. 5
      api/app/lib/controllers/metadataAcquisition/initJob.js
  2. 47
      api/app/lib/controllers/metadataAcquisition/taskHandle.js
  3. 22
      api/app/lib/schedule/acqTask.js
  4. 2
      web/client/src/sections/metadataAcquisition/components/adapterStep.js
  5. 1
      web/client/src/sections/metadataAcquisition/containers/acquisitionTask.js

5
api/app/lib/controllers/metadataAcquisition/initJob.js

@ -1,7 +1,7 @@
const moment = require('moment')
//根据任务配置生成定时任务
const { handleTask } = require('./taskHandle');
//根据任务配置生成定时任务
module.exports = async function (app, task) {
let job = null
@ -14,6 +14,7 @@ module.exports = async function (app, task) {
},
async () => {
try {
await handleTask(app, task);
console.log(task.taskName, moment().format('YYYY-MM-DD HH:mm:ss'));
} catch (error) {
app.fs.logger.error(`sechedule: taskJobs, error: ${error}`)

47
api/app/lib/controllers/metadataAcquisition/taskHandle.js

@ -0,0 +1,47 @@
const Automate = require('sequelize-automate-freesun')
async function handleTask(app, task) {
try {
const { models } = app.fs.dc
const dataSource = await models.DataSource.findOne({
where: {
id: task.dataSourceId
}
});
if (dataSource) {
const dbOptions = createDbOptions(dataSource.config);
const automate = new Automate(dbOptions, {});
const tables = await automate.getTables()
console.log(tables)
}
} catch (error) {
app.fs.logger.error(`sechedule: handleTask, error: ${error}`);
}
}
function createDbOptions(params) {
const dbOptions = {
database: params.database,
username: params.user,
password: params.password,
dialect: 'postgres',
host: params.host,
port: params.port,
define: {
underscored: false,
freezeTableName: false,
charset: 'utf8mb4',
timezone: '+00: 00',
dialectOptions: {
collate: 'utf8_general_ci',
},
timestamps: false,
},
}
return dbOptions
}
module.exports = { handleTask }

22
api/app/lib/schedule/acqTask.js

@ -1,4 +1,5 @@
const moment = require('moment')
const initJob = require('../controllers/metadataAcquisition/initJob')
module.exports = async function (app, opts) {
@ -10,22 +11,11 @@ module.exports = async function (app, opts) {
enabled: true
}
})
tasks.map(s => {
const job = app.fs.scheduleInit(
{
interval: s.cron,
immediate: true,
proRun: false,
},
async () => {
try {
console.log(s.taskName, moment().format('YYYY-MM-DD HH:mm:ss'));
} catch (error) {
app.fs.logger.error(`sechedule: taskJobs, error: ${error}`)
}
});
jobs[s.id] = job;
})
for (let task of tasks) {
const job = await initJob(app, task)
jobs[task.id] = job;
}
} catch (error) {
app.fs.logger.error(`sechedule: acqTask, error: ${error}`);

2
web/client/src/sections/metadataAcquisition/components/adapterStep.js

@ -31,7 +31,7 @@ const AdapterStep = (props) => {
const onFinish = (values) => {
props.onFinish({
stepOneValues,
stepTwoValues: current == 2 ? values || stepTwoValues : stepTwoValues,
stepTwoValues: stepProps == 2 ? values : stepTwoValues,
stepThreeValue: values
})
}

1
web/client/src/sections/metadataAcquisition/containers/acquisitionTask.js

@ -161,6 +161,7 @@ function AcquisitionTask(props) {
record.adapterInfo = adapterInfo
setEditData(record)
}} style={{ marginRight: 8 }}>编辑</a>)
//判断数据源下是否有任务 有任务提示需要先删除任务再删除数据源
options.push(
<Popconfirm
key="del"

Loading…
Cancel
Save