@node-ts/bus-workflow
Advanced tools
Comparing version 0.3.1 to 0.4.0
@@ -6,3 +6,3 @@ import { Message } from '@node-ts/bus-messages'; | ||
import { WorkflowWithHandler } from './handler-workflow'; | ||
import { ClassConstructor, MessageOptions } from '@node-ts/bus-core'; | ||
import { ClassConstructor, MessageAttributes } from '@node-ts/bus-core'; | ||
export declare const WORKFLOW_HANDLES_METADATA_KEY: unique symbol; | ||
@@ -24,2 +24,2 @@ export declare class WorkflowHandlesMetadata { | ||
*/ | ||
export declare function Handles<MessageType extends Message, WorkflowDataType extends WorkflowData, KeyType extends string, TargetType extends WorkflowWithHandler<MessageType, WorkflowDataType, KeyType> = WorkflowWithHandler<MessageType, WorkflowDataType, KeyType>>(messageConstructor: ClassConstructor<MessageType>, messageLookup: (message: MessageType, messageOptions: MessageOptions) => string | undefined, workflowDataProperty: keyof WorkflowDataType & string): (target: TargetType, propertyKey: KeyType) => void; | ||
export declare function Handles<MessageType extends Message, WorkflowDataType extends WorkflowData, KeyType extends string, TargetType extends WorkflowWithHandler<MessageType, WorkflowDataType, KeyType> = WorkflowWithHandler<MessageType, WorkflowDataType, KeyType>>(messageConstructor: ClassConstructor<MessageType>, messageLookup: (message: MessageType, messageOptions: MessageAttributes) => string | undefined, workflowDataProperty: keyof WorkflowDataType & string): (target: TargetType, propertyKey: KeyType) => void; |
import { Message } from '@node-ts/bus-messages'; | ||
import { WorkflowData } from './workflow-data'; | ||
import { MessageOptions } from '@node-ts/bus-core'; | ||
import { MessageAttributes } from '@node-ts/bus-core'; | ||
export declare class MessageWorkflowMapping<MessageType extends Message, WorkflowDataType extends WorkflowData> { | ||
lookupMessage: (message: MessageType, messageOptions?: MessageOptions) => string | undefined; | ||
lookupMessage: (message: MessageType, messageOptions?: MessageAttributes) => string | undefined; | ||
readonly workflowDataProperty: keyof WorkflowDataType & string; | ||
@@ -12,3 +12,3 @@ /** | ||
*/ | ||
constructor(lookupMessage: (message: MessageType, messageOptions?: MessageOptions) => string | undefined, workflowDataProperty: keyof WorkflowDataType & string); | ||
constructor(lookupMessage: (message: MessageType, messageOptions?: MessageAttributes) => string | undefined, workflowDataProperty: keyof WorkflowDataType & string); | ||
} |
import { Persistence } from './persistence'; | ||
import { WorkflowData } from '../workflow-data'; | ||
import { ClassConstructor, MessageOptions } from '@node-ts/bus-core'; | ||
import { ClassConstructor, MessageAttributes } from '@node-ts/bus-core'; | ||
import { MessageWorkflowMapping } from '../message-workflow-mapping'; | ||
@@ -17,5 +17,5 @@ import { Message } from '@node-ts/bus-messages'; | ||
initializeWorkflow<TWorkflowData extends WorkflowData>(workflowDataConstructor: ClassConstructor<TWorkflowData>, _: MessageWorkflowMapping<Message, WorkflowData>[]): Promise<void>; | ||
getWorkflowData<WorkflowDataType extends WorkflowData, MessageType extends Message>(workflowDataConstructor: ClassConstructor<WorkflowDataType>, messageMap: MessageWorkflowMapping<MessageType, WorkflowDataType>, message: MessageType, messageOptions: MessageOptions, includeCompleted?: boolean | undefined): Promise<WorkflowDataType[]>; | ||
getWorkflowData<WorkflowDataType extends WorkflowData, MessageType extends Message>(workflowDataConstructor: ClassConstructor<WorkflowDataType>, messageMap: MessageWorkflowMapping<MessageType, WorkflowDataType>, message: MessageType, messageOptions: MessageAttributes, includeCompleted?: boolean | undefined): Promise<WorkflowDataType[]>; | ||
saveWorkflowData<WorkflowDataType extends WorkflowData>(workflowData: WorkflowDataType): Promise<void>; | ||
length(workflowDataConstructor: ClassConstructor<WorkflowData>): number; | ||
} |
import { Message } from '@node-ts/bus-messages'; | ||
import { ClassConstructor, MessageOptions } from '@node-ts/bus-core'; | ||
import { ClassConstructor, MessageAttributes } from '@node-ts/bus-core'; | ||
import { WorkflowData } from '../workflow-data'; | ||
@@ -32,3 +32,3 @@ import { MessageWorkflowMapping } from '../message-workflow-mapping'; | ||
*/ | ||
getWorkflowData<WorkflowDataType extends WorkflowData, MessageType extends Message>(workflowDataConstructor: ClassConstructor<WorkflowDataType>, messageMap: MessageWorkflowMapping<MessageType, WorkflowDataType>, message: MessageType, messageOptions: MessageOptions, includeCompleted?: boolean): Promise<WorkflowDataType[]>; | ||
getWorkflowData<WorkflowDataType extends WorkflowData, MessageType extends Message>(workflowDataConstructor: ClassConstructor<WorkflowDataType>, messageMap: MessageWorkflowMapping<MessageType, WorkflowDataType>, message: MessageType, messageOptions: MessageAttributes, includeCompleted?: boolean): Promise<WorkflowDataType[]>; | ||
/** | ||
@@ -35,0 +35,0 @@ * Saves a new workflow data model or updates an existing one. Persistence implementations should take care |
@@ -8,7 +8,7 @@ import { Message } from '@node-ts/bus-messages'; | ||
import { Persistence } from '../persistence'; | ||
import { MessageOptions } from '@node-ts/bus-core'; | ||
import { MessageAttributes } from '@node-ts/bus-core'; | ||
export declare class HandlesProxy<TMessage extends Message, TWorkflowData extends WorkflowData> extends WorkflowHandlerProxy<TMessage, TWorkflowData> { | ||
private messageMapping; | ||
constructor(handler: WorkflowHandlerFn<TMessage, TWorkflowData>, workflowDataConstructor: WorkflowDataConstructor<TWorkflowData>, messageMapping: MessageWorkflowMapping<TMessage, TWorkflowData>, persistence: Persistence, logger: Logger); | ||
getWorkflowData(message: TMessage, messageOptions: MessageOptions): Promise<TWorkflowData[]>; | ||
getWorkflowData(message: TMessage, messageOptions: MessageAttributes): Promise<TWorkflowData[]>; | ||
} |
import { Message } from '@node-ts/bus-messages'; | ||
import { WorkflowData } from '../workflow-data'; | ||
import { MessageOptions } from '@node-ts/bus-core'; | ||
export declare type WorkflowHandlerFn<TMessage extends Message, TWorkflowData extends WorkflowData> = (message: TMessage, data: Readonly<TWorkflowData>, messageOptions: MessageOptions) => Promise<Partial<TWorkflowData>> | Promise<void> | Partial<TWorkflowData> | void; | ||
import { MessageAttributes } from '@node-ts/bus-core'; | ||
export declare type WorkflowHandlerFn<TMessage extends Message, TWorkflowData extends WorkflowData> = (message: TMessage, data: Readonly<TWorkflowData>, messageOptions: MessageAttributes) => Promise<Partial<TWorkflowData>> | Promise<void> | Partial<TWorkflowData> | void; |
import { Message } from '@node-ts/bus-messages'; | ||
import { WorkflowData, WorkflowDataConstructor } from '../workflow-data'; | ||
import { Logger } from '@node-ts/logger-core'; | ||
import { Handler, MessageOptions } from '@node-ts/bus-core'; | ||
import { Handler, MessageAttributes } from '@node-ts/bus-core'; | ||
import { WorkflowHandlerFn } from './workflow-handler-fn'; | ||
@@ -15,5 +15,5 @@ import { Persistence } from '../persistence'; | ||
constructor(handler: WorkflowHandlerFn<TMessage, TWorkflowData>, workflowDataConstructor: WorkflowDataConstructor<TWorkflowData>, persistence: Persistence, logger: Logger); | ||
handle(message: TMessage, messageOptions: MessageOptions): Promise<void>; | ||
abstract getWorkflowData(message: TMessage, messageOptions: MessageOptions): Promise<TWorkflowData[]>; | ||
handle(message: TMessage, messageOptions: MessageAttributes): Promise<void>; | ||
abstract getWorkflowData(message: TMessage, messageOptions: MessageAttributes): Promise<TWorkflowData[]>; | ||
private persist; | ||
} |
{ | ||
"name": "@node-ts/bus-workflow", | ||
"description": "A workflow engine for orchestrating logic flows in distributed applications.", | ||
"version": "0.3.1", | ||
"version": "0.4.0", | ||
"license": "MIT", | ||
@@ -24,3 +24,3 @@ "main": "./dist/index.js", | ||
"devDependencies": { | ||
"@node-ts/bus-core": "^0.3.1", | ||
"@node-ts/bus-core": "^0.4.0", | ||
"@node-ts/code-standards": "^0.0.10", | ||
@@ -59,3 +59,3 @@ "@node-ts/logger-core": "^0.0.17", | ||
], | ||
"gitHead": "18b72030c51a4929214537554ff0707a640af5b3" | ||
"gitHead": "4dd4642852cb2af8e8f0941ce313045a57f1beed" | ||
} |
@@ -7,3 +7,3 @@ import { Message } from '@node-ts/bus-messages' | ||
import { WorkflowWithHandler } from './handler-workflow' | ||
import { ClassConstructor, MessageOptions } from '@node-ts/bus-core' | ||
import { ClassConstructor, MessageAttributes } from '@node-ts/bus-core' | ||
@@ -42,3 +42,3 @@ export const WORKFLOW_HANDLES_METADATA_KEY = Symbol.for('node-ts/bus/workflow-handles-steps') | ||
messageConstructor: ClassConstructor<MessageType>, | ||
messageLookup: (message: MessageType, messageOptions: MessageOptions) => string | undefined, | ||
messageLookup: (message: MessageType, messageOptions: MessageAttributes) => string | undefined, | ||
workflowDataProperty: keyof WorkflowDataType & string | ||
@@ -45,0 +45,0 @@ ): (target: TargetType, propertyKey: KeyType) => void { |
import { Message } from '@node-ts/bus-messages' | ||
import { WorkflowData } from './workflow-data' | ||
import { MessageOptions } from '@node-ts/bus-core' | ||
import { MessageAttributes } from '@node-ts/bus-core' | ||
@@ -13,3 +13,3 @@ export class MessageWorkflowMapping<MessageType extends Message, WorkflowDataType extends WorkflowData> { | ||
constructor ( | ||
public lookupMessage: (message: MessageType, messageOptions?: MessageOptions) => string | undefined, | ||
public lookupMessage: (message: MessageType, messageOptions?: MessageAttributes) => string | undefined, | ||
readonly workflowDataProperty: keyof WorkflowDataType & string | ||
@@ -16,0 +16,0 @@ ) { |
@@ -7,3 +7,3 @@ import { InMemoryPersistence } from './in-memory-persistence' | ||
import { Logger } from '@node-ts/logger-core' | ||
import { MessageOptions } from '@node-ts/bus-core'; | ||
import { MessageAttributes } from '@node-ts/bus-core'; | ||
@@ -24,3 +24,3 @@ describe('InMemoryPersistence', () => { | ||
describe('when getting workflow data', () => { | ||
const messageOptions = new MessageOptions() | ||
const messageOptions = new MessageAttributes() | ||
@@ -99,3 +99,3 @@ beforeEach(async () => { | ||
const workflowId = 'abc' | ||
const messageOptions = new MessageOptions() | ||
const messageOptions = new MessageAttributes() | ||
@@ -102,0 +102,0 @@ beforeEach(async () => { |
import { Persistence } from './persistence' | ||
import { WorkflowData, WorkflowStatus } from '../workflow-data' | ||
import { ClassConstructor, MessageOptions } from '@node-ts/bus-core' | ||
import { ClassConstructor, MessageAttributes } from '@node-ts/bus-core' | ||
import { MessageWorkflowMapping } from '../message-workflow-mapping' | ||
@@ -39,3 +39,3 @@ import { Message } from '@node-ts/bus-messages' | ||
message: MessageType, | ||
messageOptions: MessageOptions, | ||
messageOptions: MessageAttributes, | ||
includeCompleted?: boolean | undefined | ||
@@ -42,0 +42,0 @@ ): Promise<WorkflowDataType[]> { |
import { Message } from '@node-ts/bus-messages' | ||
import { ClassConstructor, MessageOptions } from '@node-ts/bus-core' | ||
import { ClassConstructor, MessageAttributes } from '@node-ts/bus-core' | ||
import { WorkflowData } from '../workflow-data' | ||
@@ -43,3 +43,3 @@ import { MessageWorkflowMapping } from '../message-workflow-mapping' | ||
message: MessageType, | ||
messageOptions: MessageOptions, | ||
messageOptions: MessageAttributes, | ||
includeCompleted?: boolean | ||
@@ -46,0 +46,0 @@ ): Promise<WorkflowDataType[]> |
@@ -10,3 +10,3 @@ import { IMock, It, Mock, Times } from 'typemoq' | ||
import { WorkflowStatus } from '../workflow-data' | ||
import { MessageOptions } from '@node-ts/bus-core'; | ||
import { MessageAttributes } from '@node-ts/bus-core'; | ||
@@ -39,3 +39,3 @@ describe('HandlesProxy', () => { | ||
let command: TestCommand | ||
let messageOptions: MessageOptions | ||
let messageOptions: MessageAttributes | ||
let dataInput: TestWorkflowData | ||
@@ -46,3 +46,3 @@ let dataOutput: Partial<TestWorkflowData> | ||
command = new TestCommand('value') | ||
messageOptions = new MessageOptions() | ||
messageOptions = new MessageAttributes() | ||
@@ -101,3 +101,3 @@ dataInput = new TestWorkflowData() | ||
let comand: TestCommand | ||
const messageOptions = new MessageOptions() | ||
const messageOptions = new MessageAttributes() | ||
@@ -104,0 +104,0 @@ beforeEach(() => { |
@@ -8,3 +8,3 @@ import { Message } from '@node-ts/bus-messages' | ||
import { Persistence } from '../persistence' | ||
import { MessageOptions } from '@node-ts/bus-core' | ||
import { MessageAttributes } from '@node-ts/bus-core' | ||
@@ -24,3 +24,3 @@ export class HandlesProxy<TMessage extends Message, TWorkflowData extends WorkflowData> | ||
async getWorkflowData (message: TMessage, messageOptions: MessageOptions): Promise<TWorkflowData[]> { | ||
async getWorkflowData (message: TMessage, messageOptions: MessageAttributes): Promise<TWorkflowData[]> { | ||
const searchValue = this.messageMapping.lookupMessage(message, messageOptions) | ||
@@ -27,0 +27,0 @@ |
@@ -8,3 +8,3 @@ import { IMock, It, Mock, Times } from 'typemoq' | ||
import { WorkflowStatus } from '../workflow-data' | ||
import { MessageOptions } from '@node-ts/bus-core' | ||
import { MessageAttributes } from '@node-ts/bus-core' | ||
@@ -34,3 +34,3 @@ describe('StartedByProxy', () => { | ||
let command: TestCommand | ||
const messageOptions = new MessageOptions() | ||
const messageOptions = new MessageAttributes() | ||
let dataOutput: Partial<TestWorkflowData> | ||
@@ -73,3 +73,3 @@ | ||
let command: TestCommand | ||
const messageOptions = new MessageOptions() | ||
const messageOptions = new MessageAttributes() | ||
@@ -76,0 +76,0 @@ beforeEach(async () => { |
import { Message } from '@node-ts/bus-messages' | ||
import { WorkflowData } from '../workflow-data' | ||
import { MessageOptions } from '@node-ts/bus-core' | ||
import { MessageAttributes } from '@node-ts/bus-core' | ||
@@ -8,3 +8,3 @@ export type WorkflowHandlerFn<TMessage extends Message, TWorkflowData extends WorkflowData> = ( | ||
data: Readonly<TWorkflowData>, | ||
messageOptions: MessageOptions | ||
messageOptions: MessageAttributes | ||
) => Promise<Partial<TWorkflowData>> | Promise<void> | Partial<TWorkflowData> | void |
import { Message } from '@node-ts/bus-messages' | ||
import { WorkflowData, WorkflowDataConstructor, WorkflowStatus } from '../workflow-data' | ||
import { Logger } from '@node-ts/logger-core' | ||
import { Handler, MessageOptions } from '@node-ts/bus-core' | ||
import { Handler, MessageAttributes } from '@node-ts/bus-core' | ||
import { WorkflowHandlerFn } from './workflow-handler-fn' | ||
@@ -24,3 +24,3 @@ import { Persistence } from '../persistence' | ||
async handle (message: TMessage, messageOptions: MessageOptions): Promise<void> { | ||
async handle (message: TMessage, messageOptions: MessageAttributes): Promise<void> { | ||
this.logger.debug('Getting workflow data for message', { message, messageOptions }) | ||
@@ -77,3 +77,3 @@ | ||
abstract getWorkflowData (message: TMessage, messageOptions: MessageOptions): Promise<TWorkflowData[]> | ||
abstract getWorkflowData (message: TMessage, messageOptions: MessageAttributes): Promise<TWorkflowData[]> | ||
@@ -80,0 +80,0 @@ private async persist (data: TWorkflowData): Promise<void> { |
import { Container } from 'inversify' | ||
import { BusModule, Bus, BUS_SYMBOLS, ApplicationBootstrap, MessageOptions } from '@node-ts/bus-core' | ||
import { BusModule, Bus, BUS_SYMBOLS, ApplicationBootstrap, MessageAttributes } from '@node-ts/bus-core' | ||
import { Persistence } from './persistence' | ||
@@ -64,3 +64,3 @@ import { BUS_WORKFLOW_SYMBOLS } from '../bus-workflow-symbols' | ||
let workflowData: TestWorkflowData[] | ||
const messageOptions = new MessageOptions() | ||
const messageOptions = new MessageAttributes() | ||
@@ -135,3 +135,3 @@ beforeAll(async () => { | ||
describe('when a workflow is completed in a StartedBy handler', () => { | ||
const messageOptions = new MessageOptions() | ||
const messageOptions = new MessageAttributes() | ||
const propertyMapping = new MessageWorkflowMapping<TestCommand, TestWorkflowStartedByCompletesData> ( | ||
@@ -158,3 +158,3 @@ cmd => cmd.property1, | ||
describe('when a StartedBy handler returns a discardStep', () => { | ||
const messageOptions = new MessageOptions() | ||
const messageOptions = new MessageAttributes() | ||
const propertyMapping = new MessageWorkflowMapping<TestCommand, TestWorkflowStartedByDiscardData> ( | ||
@@ -161,0 +161,0 @@ cmd => cmd.property1, |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
136582