tachybase_todo/packages/plugins/workflow/src/server.ts
ChengLei Shao 24ea83f0ff
Feat/create nocobase app (#273)
* create-nocobase-app template from [develop]

* change create-nocobase-app package.json config

* feat: load configuration from directory

* feat: configuration repository toObject

* feat: create application from configuration dir

* feat: application factory with plugins options

* export type

* feat: read application config &  application with plugins options

* feat: release command

* fix: database release

* chore: workflow package.json

* feat: nocobase cli package

* feat: console command

* chore: load application in command

* fix: load packages from process.cwd

* feat: cli load env file

* feat: create-nocobase-app

* fix: gitignore create-nocobase-app lib

* fix: sqlite path

* feat: create plugin

* chore: plugin files template

* chore: move cli into application

* chore: create-nocobase-app

* fix: create plugin

* chore: app-client && app-server

* chore: package.json

* feat: create-nocobase-app download template from npm

* chore: create-nocobase-app template

* fix: config of plugin-users

* fix: yarn.lock

* fix: database build error

* fix: yarn.lock

* fix: resourcer config

* chore: cross-env

* chore: app-client dependents

* fix: env

* chore: v0.6.0-alpha.1

* chore: verdaccio

* chore(versions): 😊 publish v0.6.0

* chore(versions): 😊 publish v0.6.1-alpha.0

* chore(versions): 😊 publish v0.6.2-alpha.0

* chore(versions): 😊 publish v0.6.2-alpha.1

* chore: 0.6.2-alpha.2

* feat: workspaces

* chore(versions): 😊 publish v0.6.2-alpha.3

* chore(versions): 😊 publish v0.6.2-alpha.4

* chore: create-nocobase-app

* chore: create-nocobase-app lib

* fix: update tsconfig.jest.json

* chore: .env

* chore(versions): 😊 publish v0.6.2-alpha.5

* chore(versions): 😊 publish v0.6.2-alpha.6

* feat: improve code

* chore(versions): 😊 publish v0.6.2-alpha.7

* fix: cleanup

* chore(versions): 😊 publish v0.6.2-alpha.8

* chore: tsconfig for app server package

* fix: move files

* fix: move files

Co-authored-by: chenos <chenlinxh@gmail.com>
2022-04-17 10:00:42 +08:00

66 lines
1.9 KiB
TypeScript

import path from 'path';
import { Plugin } from '@nocobase/server';
import WorkflowModel from './models/Workflow';
import ExecutionModel from './models/Execution';
import actions from './actions';
export default class WorkflowPlugin extends Plugin {
async load(options = {}) {
const { db } = this.app;
db.registerModels({
WorkflowModel,
ExecutionModel,
});
await db.import({
directory: path.resolve(__dirname, 'collections'),
});
actions(this.app);
// [Life Cycle]:
// * load all workflows in db
// * add all hooks for enabled workflows
// * add hooks for create/update[enabled]/delete workflow to add/remove specific hooks
this.app.on('beforeStart', async () => {
const { model } = db.getCollection('workflows');
await (model as typeof WorkflowModel).mount();
});
// [Life Cycle]: initialize all necessary seed data
this.app.on('db.init', async () => {});
// const [Automation, AutomationJob] = database.getModels(['automations', 'automations_jobs']);
// Automation.addHook('afterCreate', async (model: AutomationModel) => {
// model.get('enabled') && await model.loadJobs();
// });
// Automation.addHook('afterUpdate', async (model: AutomationModel) => {
// if (!model.changed('enabled' as any)) {
// return;
// }
// model.get('enabled') ? await model.loadJobs() : await model.cancelJobs();
// });
// Automation.addHook('beforeDestroy', async (model: AutomationModel) => {
// await model.cancelJobs();
// });
// AutomationJob.addHook('afterCreate', async (model: AutomationJobModel) => {
// await model.bootstrap();
// });
// AutomationJob.addHook('beforeDestroy', async (model: AutomationJobModel) => {
// await model.cancel();
// });
}
getName(): string {
return this.getPackageName(__dirname);
}
}