Files
huly-platform/server-plugins/process/src/index.ts
T
Denis BykhovandGitHub ae3b7f6216 feat: add OnExecutionDone trigger and related functionality for proce… (#10944)
* feat: add OnExecutionDone trigger and related functionality for process management

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

* Fix

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

---------

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2026-07-02 04:14:58 +05:00

154 lines
5.9 KiB
TypeScript

import { Doc, Mixin, Ref } from '@hcengineering/core'
import type { Plugin, Resource } from '@hcengineering/platform'
import { plugin } from '@hcengineering/platform'
import { Execution, Method, ProcessFunction, Trigger } from '@hcengineering/process'
import { TriggerFunc } from '@hcengineering/server-core'
import { ExecuteFunc, ProcessControl, RollbackFunc, TransformFunc } from './types'
export * from './types'
/**
* @public
*/
export const serverProcessId = 'server-process' as Plugin
export type CheckFunc = (
control: ProcessControl,
execution: Execution,
params: Record<string, any>,
context: Record<string, any>
) => Promise<boolean>
export interface TriggerImpl extends Trigger {
serverCheckFunc?: Resource<CheckFunc>
rollbackFunc?: Resource<RollbackFunc>
preventRollback?: boolean
}
export interface MethodImpl<T extends Doc> extends Method<T> {
func: Resource<ExecuteFunc>
}
export interface FuncImpl extends ProcessFunction {
func: Resource<TransformFunc>
}
/**
* @public
*/
export default plugin(serverProcessId, {
mixin: {
MethodImpl: '' as Ref<Mixin<MethodImpl<Doc>>>,
FuncImpl: '' as Ref<Mixin<FuncImpl>>,
TriggerImpl: '' as Ref<Mixin<TriggerImpl>>
},
rollbacks: {
ToDoCloseRollback: '' as Resource<RollbackFunc>,
ToDoCancellRollback: '' as Resource<RollbackFunc>,
FieldChangedRollback: '' as Resource<RollbackFunc>
},
func: {
RunSubProcess: '' as Resource<ExecuteFunc>,
CancelSubProcess: '' as Resource<ExecuteFunc>,
CreateToDo: '' as Resource<ExecuteFunc>,
UpdateCard: '' as Resource<ExecuteFunc>,
CreateCard: '' as Resource<ExecuteFunc>,
AddRelation: '' as Resource<ExecuteFunc>,
WaitSubProcess: '' as Resource<ExecuteFunc>,
AddTag: '' as Resource<ExecuteFunc>,
RequestApproval: '' as Resource<ExecuteFunc>,
LockCard: '' as Resource<ExecuteFunc>,
LockSection: '' as Resource<ExecuteFunc>,
UnlockCard: '' as Resource<ExecuteFunc>,
UnlockSection: '' as Resource<ExecuteFunc>,
LockField: '' as Resource<ExecuteFunc>,
UnlockField: '' as Resource<ExecuteFunc>,
CheckToDoDone: '' as Resource<CheckFunc>,
CheckToDoCancelled: '' as Resource<CheckFunc>,
MatchCardCheck: '' as Resource<CheckFunc>,
FieldChangedCheck: '' as Resource<CheckFunc>,
RequiredFieldsFilledCheck: '' as Resource<CheckFunc>,
CheckSubProcessesDone: '' as Resource<CheckFunc>,
CheckSubProcessMatch: '' as Resource<CheckFunc>,
CheckTime: '' as Resource<CheckFunc>,
EventCheck: '' as Resource<CheckFunc>,
ApproveRequestApproved: '' as Resource<CheckFunc>,
ApproveRequestRejected: '' as Resource<CheckFunc>,
CancelToDo: '' as Resource<ExecuteFunc>
},
transform: {
FirstValue: '' as Resource<TransformFunc>,
LastValue: '' as Resource<TransformFunc>,
Random: '' as Resource<TransformFunc>,
All: '' as Resource<TransformFunc>,
UpperCase: '' as Resource<TransformFunc>,
LowerCase: '' as Resource<TransformFunc>,
Trim: '' as Resource<TransformFunc>,
Prepend: '' as Resource<TransformFunc>,
Append: '' as Resource<TransformFunc>,
Replace: '' as Resource<TransformFunc>,
ReplaceAll: '' as Resource<TransformFunc>,
Split: '' as Resource<TransformFunc>,
Cut: '' as Resource<TransformFunc>,
Add: '' as Resource<TransformFunc>,
Subtract: '' as Resource<TransformFunc>,
Multiply: '' as Resource<TransformFunc>,
Divide: '' as Resource<TransformFunc>,
Modulo: '' as Resource<TransformFunc>,
Power: '' as Resource<TransformFunc>,
Sqrt: '' as Resource<TransformFunc>,
Round: '' as Resource<TransformFunc>,
Absolute: '' as Resource<TransformFunc>,
Ceil: '' as Resource<TransformFunc>,
Floor: '' as Resource<TransformFunc>,
Min: '' as Resource<TransformFunc>,
Max: '' as Resource<TransformFunc>,
Offset: '' as Resource<TransformFunc>,
FirstWorkingDayAfter: '' as Resource<TransformFunc>,
RoleContext: '' as Resource<TransformFunc>,
Insert: '' as Resource<TransformFunc>,
Remove: '' as Resource<TransformFunc>,
RemoveFirst: '' as Resource<TransformFunc>,
RemoveLast: '' as Resource<TransformFunc>,
CurrentUser: '' as Resource<TransformFunc>,
CurrentDate: '' as Resource<TransformFunc>,
EmptyValue: '' as Resource<TransformFunc>,
EmptyArray: '' as Resource<TransformFunc>,
Filter: '' as Resource<TransformFunc>,
FirstMatchValue: '' as Resource<TransformFunc>,
ExecutionInitiator: '' as Resource<TransformFunc>,
ExecutionStarted: '' as Resource<TransformFunc>,
StringFromNumber: '' as Resource<TransformFunc>,
StringFromDate: '' as Resource<TransformFunc>,
StringFromMarkup: '' as Resource<TransformFunc>,
StringFromBoolean: '' as Resource<TransformFunc>,
NumberFromDate: '' as Resource<TransformFunc>,
DateFromNumber: '' as Resource<TransformFunc>,
NumberFromString: '' as Resource<TransformFunc>,
DateFromString: '' as Resource<TransformFunc>,
MarkupFromString: '' as Resource<TransformFunc>,
StringFromIdentifier: '' as Resource<TransformFunc>,
YearFromDate: '' as Resource<TransformFunc>,
MonthFromDate: '' as Resource<TransformFunc>,
DayFromDate: '' as Resource<TransformFunc>,
DateDifference: '' as Resource<TransformFunc>,
StringFromEnum: '' as Resource<TransformFunc>,
EnumFromString: '' as Resource<TransformFunc>
},
trigger: {
OnTransition: '' as Resource<TriggerFunc>,
OnCardCreate: '' as Resource<TriggerFunc>,
OnCardUpdate: '' as Resource<TriggerFunc>,
OnCardRemove: '' as Resource<TriggerFunc>,
OnProcessRemove: '' as Resource<TriggerFunc>,
OnStateRemove: '' as Resource<TriggerFunc>,
OnExecutionCreate: '' as Resource<TriggerFunc>,
OnProcessToDoClose: '' as Resource<TriggerFunc>,
OnProcessToDoRemove: '' as Resource<TriggerFunc>,
OnExecutionContinue: '' as Resource<TriggerFunc>,
OnCustomEvent: '' as Resource<TriggerFunc>,
OnExecutionDone: '' as Resource<TriggerFunc>,
OnExecutionRemove: '' as Resource<TriggerFunc>
}
})