@things-factory/process 10.1.203 → 10.1.206

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,8 @@
1
1
  import { User } from '@things-factory/auth-base';
2
2
  import { ProcessSearchKeyItem } from '../service/process/process-search-key-item-type';
3
3
  import { ProcessInstance } from '../service/process-instance/process-instance';
4
- import { ProcessThread } from '../service/process-thread/process-thread';
4
+ import { ProcessThread, ProcessThreadStatus } from '../service/process-thread/process-thread';
5
+ export declare const TERMINATED_THREAD_STATES: ProcessThreadStatus[];
5
6
  export declare function updateProcessInstanceState(id: string, context: ResolverContext): Promise<void>;
6
7
  export declare function evalProcessInstanceState(id: string, context: ResolverContext): Promise<Partial<ProcessInstance>>;
7
8
  export declare function createProcessThreadForUser(transaction: string, processInstance: ProcessInstance, assignee: User, context: ResolverContext): Promise<ProcessThread>;
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TERMINATED_THREAD_STATES = void 0;
3
4
  exports.updateProcessInstanceState = updateProcessInstanceState;
4
5
  exports.evalProcessInstanceState = evalProcessInstanceState;
5
6
  exports.createProcessThreadForUser = createProcessThreadForUser;
6
7
  exports.fillProcessSearchKeys = fillProcessSearchKeys;
7
8
  const process_instance_1 = require("../service/process-instance/process-instance");
8
9
  const process_thread_1 = require("../service/process-thread/process-thread");
10
+ exports.TERMINATED_THREAD_STATES = [
11
+ process_thread_1.ProcessThreadStatus.Aborted,
12
+ process_thread_1.ProcessThreadStatus.Delegated,
13
+ process_thread_1.ProcessThreadStatus.Ended
14
+ ];
9
15
  async function updateProcessInstanceState(id, context) {
10
16
  const { tx } = context.state;
11
17
  var processInstance = await tx.getRepository(process_instance_1.ProcessInstance).findOne({
@@ -25,19 +31,19 @@ async function evalProcessInstanceState(id, context) {
25
31
  relations: ['processThreads', 'process']
26
32
  });
27
33
  const { processThreads, state } = processInstance;
28
- switch (true) {
29
- case state === process_instance_1.ProcessInstanceStatus.Ended:
30
- case state === process_instance_1.ProcessInstanceStatus.Aborted:
31
- return {};
32
- default:
33
- return {
34
- state: processThreads.find(thread => thread.state == process_thread_1.ProcessThreadStatus.Aborted)
35
- ? process_instance_1.ProcessInstanceStatus.Aborted
36
- : process_instance_1.ProcessInstanceStatus.Ended,
37
- reason: '',
38
- terminatedAt: new Date()
39
- };
34
+ if (state === process_instance_1.ProcessInstanceStatus.Ended || state === process_instance_1.ProcessInstanceStatus.Aborted) {
35
+ return {};
40
36
  }
37
+ /* The instance terminates only when every one of its threads has. */
38
+ if (processThreads.some(thread => !exports.TERMINATED_THREAD_STATES.includes(thread.state))) {
39
+ return {};
40
+ }
41
+ return {
42
+ state: processThreads.find(thread => thread.state == process_thread_1.ProcessThreadStatus.Aborted)
43
+ ? process_instance_1.ProcessInstanceStatus.Aborted
44
+ : process_instance_1.ProcessInstanceStatus.Ended,
45
+ terminatedAt: new Date()
46
+ };
41
47
  }
42
48
  async function createProcessThreadForUser(transaction, processInstance, assignee, context) {
43
49
  const { domain, user, tx } = context.state;
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../server/controllers/common.ts"],"names":[],"mappings":"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","sourcesContent":["import { Role, User } from '@things-factory/auth-base'\n\nimport { ProcessSearchKeyItem } from '../service/process/process-search-key-item-type'\nimport { ProcessInstance, ProcessInstanceStatus } from '../service/process-instance/process-instance'\nimport { ProcessThread, ProcessThreadStatus } from '../service/process-thread/process-thread'\n\nexport async function updateProcessInstanceState(id: string, context: ResolverContext) {\n const { tx } = context.state\n\n var processInstance = await tx.getRepository(ProcessInstance).findOne({\n where: { id },\n relations: ['domain', 'process', 'supervisoryRole', 'updater', 'creator']\n })\n\n processInstance = await tx.getRepository(ProcessInstance).save({\n ...processInstance,\n transaction: 'thread' /* change by transaction of process thread */,\n ...(await evalProcessInstanceState(id, context))\n })\n}\n\nexport async function evalProcessInstanceState(\n id: string,\n context: ResolverContext\n): Promise<Partial<ProcessInstance>> {\n const { tx, user } = context.state\n\n const processInstance = await tx.getRepository(ProcessInstance).findOne({\n where: { id },\n relations: ['processThreads', 'process']\n })\n const { processThreads, state } = processInstance\n\n switch (true) {\n case state === ProcessInstanceStatus.Ended:\n case state === ProcessInstanceStatus.Aborted:\n return {}\n default:\n return {\n state: processThreads.find(thread => thread.state == ProcessThreadStatus.Aborted)\n ? ProcessInstanceStatus.Aborted\n : ProcessInstanceStatus.Ended,\n reason: '',\n terminatedAt: new Date()\n }\n }\n}\n\nexport async function createProcessThreadForUser(\n transaction: string,\n processInstance: ProcessInstance,\n assignee: User,\n context: ResolverContext\n): Promise<ProcessThread> {\n const { domain, user, tx } = context.state\n\n const threadRepo = tx.getRepository(ProcessThread)\n const now = new Date()\n\n const result = await threadRepo.save({\n domain,\n assignee,\n state: ProcessThreadStatus.Assigned,\n processInstance,\n transaction,\n dueAt: processInstance.dueAt,\n assignedAt: now,\n creator: user,\n updater: user,\n createdAt: now\n })\n\n await updateProcessInstanceState(processInstance.id, context)\n\n return result\n}\n\nexport function fillProcessSearchKeys(searchKeys: ProcessSearchKeyItem[], input: { [key: string]: any }) {\n if (!input || typeof input !== 'object') {\n return\n }\n\n return searchKeys?.reduce((sum, key, index) => {\n const value = input[key.inputKey]\n if (value != null) {\n sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value\n }\n return sum\n }, {})\n}\n"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../server/controllers/common.ts"],"names":[],"mappings":"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","sourcesContent":["import { Role, User } from '@things-factory/auth-base'\n\nimport { ProcessSearchKeyItem } from '../service/process/process-search-key-item-type'\nimport { ProcessInstance, ProcessInstanceStatus } from '../service/process-instance/process-instance'\nimport { ProcessThread, ProcessThreadStatus } from '../service/process-thread/process-thread'\n\nexport const TERMINATED_THREAD_STATES = [\n ProcessThreadStatus.Aborted,\n ProcessThreadStatus.Delegated,\n ProcessThreadStatus.Ended\n]\n\nexport async function updateProcessInstanceState(id: string, context: ResolverContext) {\n const { tx } = context.state\n\n var processInstance = await tx.getRepository(ProcessInstance).findOne({\n where: { id },\n relations: ['domain', 'process', 'supervisoryRole', 'updater', 'creator']\n })\n\n processInstance = await tx.getRepository(ProcessInstance).save({\n ...processInstance,\n transaction: 'thread' /* change by transaction of process thread */,\n ...(await evalProcessInstanceState(id, context))\n })\n}\n\nexport async function evalProcessInstanceState(\n id: string,\n context: ResolverContext\n): Promise<Partial<ProcessInstance>> {\n const { tx, user } = context.state\n\n const processInstance = await tx.getRepository(ProcessInstance).findOne({\n where: { id },\n relations: ['processThreads', 'process']\n })\n const { processThreads, state } = processInstance\n\n if (state === ProcessInstanceStatus.Ended || state === ProcessInstanceStatus.Aborted) {\n return {}\n }\n\n /* The instance terminates only when every one of its threads has. */\n if (processThreads.some(thread => !TERMINATED_THREAD_STATES.includes(thread.state))) {\n return {}\n }\n\n return {\n state: processThreads.find(thread => thread.state == ProcessThreadStatus.Aborted)\n ? ProcessInstanceStatus.Aborted\n : ProcessInstanceStatus.Ended,\n terminatedAt: new Date()\n }\n}\n\nexport async function createProcessThreadForUser(\n transaction: string,\n processInstance: ProcessInstance,\n assignee: User,\n context: ResolverContext\n): Promise<ProcessThread> {\n const { domain, user, tx } = context.state\n\n const threadRepo = tx.getRepository(ProcessThread)\n const now = new Date()\n\n const result = await threadRepo.save({\n domain,\n assignee,\n state: ProcessThreadStatus.Assigned,\n processInstance,\n transaction,\n dueAt: processInstance.dueAt,\n assignedAt: now,\n creator: user,\n updater: user,\n createdAt: now\n })\n\n await updateProcessInstanceState(processInstance.id, context)\n\n return result\n}\n\nexport function fillProcessSearchKeys(searchKeys: ProcessSearchKeyItem[], input: { [key: string]: any }) {\n if (!input || typeof input !== 'object') {\n return\n }\n\n return searchKeys?.reduce((sum, key, index) => {\n const value = input[key.inputKey]\n if (value != null) {\n sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value\n }\n return sum\n }, {})\n}\n"]}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.abort = abort;
4
- const process_thread_1 = require("../../service/process-thread/process-thread");
5
4
  const process_instance_1 = require("../../service/process-instance/process-instance");
6
5
  const common_1 = require("../common");
7
6
  const _abort_1 = require("../process-thread/_abort");
@@ -38,17 +37,16 @@ async function abort({ id, reason }, context) {
38
37
  Actions to be processed when a task is aborted
39
38
  - All related process threads must be aborted.
40
39
  */
41
- const TERMINATED = [process_thread_1.ProcessThreadStatus.Aborted, process_thread_1.ProcessThreadStatus.Delegated, process_thread_1.ProcessThreadStatus.Ended];
42
40
  for (let processThread of processInstance.processThreads) {
43
- if (TERMINATED.includes(processThread.state)) {
41
+ if (common_1.TERMINATED_THREAD_STATES.includes(processThread.state)) {
44
42
  continue;
45
43
  }
46
44
  await (0, _abort_1._abort)({ processThread, reason }, context);
47
45
  }
48
46
  return await repository.save({
49
47
  ...processInstance,
50
- reason,
51
48
  ...(await (0, common_1.evalProcessInstanceState)(id, context)),
49
+ reason,
52
50
  transaction: 'abort',
53
51
  updater: user,
54
52
  terminatedAt: new Date(),
@@ -1 +1 @@
1
- {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../server/controllers/process-instance/abort.ts"],"names":[],"mappings":";;AAMA,sBAiEC;AAvED,gFAAiF;AACjF,sFAAwG;AACxG,sCAAoD;AAEpD,qDAAuE;AAEhE,KAAK,UAAU,KAAK,CACzB,EAAE,EAAE,EAAE,MAAM,EAAkC,EAC9C,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,kCAAe,CAAC,CAAA;IAElD,IAAI,eAAe,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE;YACT,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,iBAAiB;YACjB,SAAS;YACT,SAAS;SACV;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,kCAAkC,EAAE;YAC5C,eAAe,EAAE,EAAE;SACpB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IACF,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,OAAO,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,KAAK,EAAE,CAAC;QACnH,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,8CAA8C,EAAE;YACxD,EAAE;YACF,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IAEF,MAAM,UAAU,GAAG,CAAC,oCAAmB,CAAC,OAAO,EAAE,oCAAmB,CAAC,SAAS,EAAE,oCAAmB,CAAC,KAAK,CAAC,CAAA;IAE1G,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC;QACzD,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,SAAQ;QACV,CAAC;QAED,MAAM,IAAA,eAAkB,EAAC,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;QAC3B,GAAG,eAAe;QAClB,MAAM;QACN,GAAG,CAAC,MAAM,IAAA,iCAAwB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAChD,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { ProcessThreadStatus } from '../../service/process-thread/process-thread'\nimport { ProcessInstance, ProcessInstanceStatus } from '../../service/process-instance/process-instance'\nimport { evalProcessInstanceState } from '../common'\n\nimport { _abort as abortProcessThread } from '../process-thread/_abort'\n\nexport async function abort(\n { id, reason }: { id: string; reason: string },\n context: ResolverContext\n): Promise<ProcessInstance> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ProcessInstance)\n\n var processInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'process',\n 'processThreads',\n 'supervisoryRole',\n 'updater',\n 'creator'\n ]\n })\n\n if (!processInstance) {\n throw new Error(\n context.t('error.process-instance not found', {\n processInstance: id\n })\n )\n }\n\n /* \n Prerequisites for a Task to Be Aborted.\n - The previous state of the task must not be End or Aborted.\n */\n if (processInstance.state == ProcessInstanceStatus.Aborted || processInstance.state == ProcessInstanceStatus.Ended) {\n throw new Error(\n context.t(`error.process-instance is already terminated`, {\n id,\n state: processInstance.state\n })\n )\n }\n\n /* \n Actions to be processed when a task is aborted\n - All related process threads must be aborted.\n */\n\n const TERMINATED = [ProcessThreadStatus.Aborted, ProcessThreadStatus.Delegated, ProcessThreadStatus.Ended]\n\n for (let processThread of processInstance.processThreads) {\n if (TERMINATED.includes(processThread.state)) {\n continue\n }\n\n await abortProcessThread({ processThread, reason }, context)\n }\n\n return await repository.save({\n ...processInstance,\n reason,\n ...(await evalProcessInstanceState(id, context)),\n transaction: 'abort',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n}\n"]}
1
+ {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../server/controllers/process-instance/abort.ts"],"names":[],"mappings":";;AAKA,sBA+DC;AApED,sFAAwG;AACxG,sCAA8E;AAE9E,qDAAuE;AAEhE,KAAK,UAAU,KAAK,CACzB,EAAE,EAAE,EAAE,MAAM,EAAkC,EAC9C,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,kCAAe,CAAC,CAAA;IAElD,IAAI,eAAe,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE;YACT,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,iBAAiB;YACjB,SAAS;YACT,SAAS;SACV;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,kCAAkC,EAAE;YAC5C,eAAe,EAAE,EAAE;SACpB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IACF,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,OAAO,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,KAAK,EAAE,CAAC;QACnH,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,8CAA8C,EAAE;YACxD,EAAE;YACF,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IAEF,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC;QACzD,IAAI,iCAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,SAAQ;QACV,CAAC;QAED,MAAM,IAAA,eAAkB,EAAC,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;QAC3B,GAAG,eAAe;QAClB,GAAG,CAAC,MAAM,IAAA,iCAAwB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM;QACN,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { ProcessInstance, ProcessInstanceStatus } from '../../service/process-instance/process-instance'\nimport { evalProcessInstanceState, TERMINATED_THREAD_STATES } from '../common'\n\nimport { _abort as abortProcessThread } from '../process-thread/_abort'\n\nexport async function abort(\n { id, reason }: { id: string; reason: string },\n context: ResolverContext\n): Promise<ProcessInstance> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ProcessInstance)\n\n var processInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'process',\n 'processThreads',\n 'supervisoryRole',\n 'updater',\n 'creator'\n ]\n })\n\n if (!processInstance) {\n throw new Error(\n context.t('error.process-instance not found', {\n processInstance: id\n })\n )\n }\n\n /* \n Prerequisites for a Task to Be Aborted.\n - The previous state of the task must not be End or Aborted.\n */\n if (processInstance.state == ProcessInstanceStatus.Aborted || processInstance.state == ProcessInstanceStatus.Ended) {\n throw new Error(\n context.t(`error.process-instance is already terminated`, {\n id,\n state: processInstance.state\n })\n )\n }\n\n /* \n Actions to be processed when a task is aborted\n - All related process threads must be aborted.\n */\n\n for (let processThread of processInstance.processThreads) {\n if (TERMINATED_THREAD_STATES.includes(processThread.state)) {\n continue\n }\n\n await abortProcessThread({ processThread, reason }, context)\n }\n\n return await repository.save({\n ...processInstance,\n ...(await evalProcessInstanceState(id, context)),\n reason,\n transaction: 'abort',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n}\n"]}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.end = end;
4
4
  const process_instance_1 = require("../../service/process-instance/process-instance");
5
- const process_thread_1 = require("../../service/process-thread/process-thread");
6
5
  const common_1 = require("../common");
7
6
  async function end({ id, output, reason }, context) {
8
7
  const { domain, user, tx } = context.state;
@@ -34,9 +33,8 @@ async function end({ id, output, reason }, context) {
34
33
  state: processInstance.state
35
34
  }));
36
35
  }
37
- const TERMINATED = [process_thread_1.ProcessThreadStatus.Aborted, process_thread_1.ProcessThreadStatus.Delegated, process_thread_1.ProcessThreadStatus.Ended];
38
36
  for (let processThread of processInstance.processThreads) {
39
- if (TERMINATED.includes(processThread.state)) {
37
+ if (common_1.TERMINATED_THREAD_STATES.includes(processThread.state)) {
40
38
  continue;
41
39
  }
42
40
  throw new Error(context.t(`error.all process threads should be terminated`, {
@@ -46,10 +44,10 @@ async function end({ id, output, reason }, context) {
46
44
  }
47
45
  return await repository.save({
48
46
  ...processInstance,
47
+ ...(await (0, common_1.evalProcessInstanceState)(id, context)),
49
48
  reason,
50
49
  output,
51
50
  transaction: 'end',
52
- state: await (0, common_1.evalProcessInstanceState)(id, context),
53
51
  updater: user,
54
52
  terminatedAt: new Date(),
55
53
  terminator: user
@@ -1 +1 @@
1
- {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../server/controllers/process-instance/end.ts"],"names":[],"mappings":";;AAIA,kBAkEC;AAtED,sFAAwG;AACxG,gFAAiF;AACjF,sCAAoD;AAE7C,KAAK,UAAU,GAAG,CACvB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAoD,EACxE,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,kCAAe,CAAC,CAAA;IAEpD,IAAI,eAAe,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE;YACT,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,iBAAiB;YACjB,SAAS;YACT,SAAS;SACV;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,kCAAkC,EAAE;YAC5C,eAAe,EAAE,EAAE;SACpB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;;MAIE;IACF,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,OAAO,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,KAAK,EAAE,CAAC;QACnH,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,8CAA8C,EAAE;YACxD,EAAE;YACF,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,oCAAmB,CAAC,OAAO,EAAE,oCAAmB,CAAC,SAAS,EAAE,oCAAmB,CAAC,KAAK,CAAC,CAAA;IAE1G,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC;QACzD,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,gDAAgD,EAAE;YAC1D,aAAa,EAAE,aAAa,CAAC,EAAE;YAC/B,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CACH,CAAA;IACH,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;QAC3B,GAAG,eAAe;QAClB,MAAM;QACN,MAAM;QACN,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,MAAM,IAAA,iCAAwB,EAAC,EAAE,EAAE,OAAO,CAAC;QAClD,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,IAAI;KACV,CAAC,CAAA;AACX,CAAC","sourcesContent":["import { ProcessInstance, ProcessInstanceStatus } from '../../service/process-instance/process-instance'\nimport { ProcessThreadStatus } from '../../service/process-thread/process-thread'\nimport { evalProcessInstanceState } from '../common'\n\nexport async function end(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: ResolverContext\n): Promise<ProcessInstance> {\n const { domain, user, tx } = context.state\n const repository = tx.getRepository(ProcessInstance)\n\n var processInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'process',\n 'processThreads',\n 'supervisoryRole',\n 'updater',\n 'creator'\n ]\n })\n\n if (!processInstance) {\n throw new Error(\n context.t('error.process-instance not found', {\n processInstance: id\n })\n )\n }\n\n /* \n Prerequisites for a Task to Be End.\n - The previous state of the task must not be End or Aborted.\n - There should be no unfinished process threads.\n */\n if (processInstance.state == ProcessInstanceStatus.Aborted || processInstance.state == ProcessInstanceStatus.Ended) {\n throw new Error(\n context.t(`error.process-instance is already terminated`, {\n id,\n state: processInstance.state\n })\n )\n }\n\n const TERMINATED = [ProcessThreadStatus.Aborted, ProcessThreadStatus.Delegated, ProcessThreadStatus.Ended]\n\n for (let processThread of processInstance.processThreads) {\n if (TERMINATED.includes(processThread.state)) {\n continue\n }\n\n throw new Error(\n context.t(`error.all process threads should be terminated`, {\n processThread: processThread.id,\n state: processInstance.state\n })\n )\n }\n\n return await repository.save({\n ...processInstance,\n reason,\n output,\n transaction: 'end',\n state: await evalProcessInstanceState(id, context),\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n } as any)\n}\n"]}
1
+ {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../server/controllers/process-instance/end.ts"],"names":[],"mappings":";;AAGA,kBAgEC;AAnED,sFAAwG;AACxG,sCAA8E;AAEvE,KAAK,UAAU,GAAG,CACvB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAoD,EACxE,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,kCAAe,CAAC,CAAA;IAEpD,IAAI,eAAe,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE;YACT,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,iBAAiB;YACjB,SAAS;YACT,SAAS;SACV;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,kCAAkC,EAAE;YAC5C,eAAe,EAAE,EAAE;SACpB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;;MAIE;IACF,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,OAAO,IAAI,eAAe,CAAC,KAAK,IAAI,wCAAqB,CAAC,KAAK,EAAE,CAAC;QACnH,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,8CAA8C,EAAE;YACxD,EAAE;YACF,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CACH,CAAA;IACH,CAAC;IAED,KAAK,IAAI,aAAa,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC;QACzD,IAAI,iCAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,gDAAgD,EAAE;YAC1D,aAAa,EAAE,aAAa,CAAC,EAAE;YAC/B,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CACH,CAAA;IACH,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;QAC3B,GAAG,eAAe;QAClB,GAAG,CAAC,MAAM,IAAA,iCAAwB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM;QACN,MAAM;QACN,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,IAAI;KACV,CAAC,CAAA;AACX,CAAC","sourcesContent":["import { ProcessInstance, ProcessInstanceStatus } from '../../service/process-instance/process-instance'\nimport { evalProcessInstanceState, TERMINATED_THREAD_STATES } from '../common'\n\nexport async function end(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: ResolverContext\n): Promise<ProcessInstance> {\n const { domain, user, tx } = context.state\n const repository = tx.getRepository(ProcessInstance)\n\n var processInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'process',\n 'processThreads',\n 'supervisoryRole',\n 'updater',\n 'creator'\n ]\n })\n\n if (!processInstance) {\n throw new Error(\n context.t('error.process-instance not found', {\n processInstance: id\n })\n )\n }\n\n /* \n Prerequisites for a Task to Be End.\n - The previous state of the task must not be End or Aborted.\n - There should be no unfinished process threads.\n */\n if (processInstance.state == ProcessInstanceStatus.Aborted || processInstance.state == ProcessInstanceStatus.Ended) {\n throw new Error(\n context.t(`error.process-instance is already terminated`, {\n id,\n state: processInstance.state\n })\n )\n }\n\n for (let processThread of processInstance.processThreads) {\n if (TERMINATED_THREAD_STATES.includes(processThread.state)) {\n continue\n }\n\n throw new Error(\n context.t(`error.all process threads should be terminated`, {\n processThread: processThread.id,\n state: processInstance.state\n })\n )\n }\n\n return await repository.save({\n ...processInstance,\n ...(await evalProcessInstanceState(id, context)),\n reason,\n output,\n transaction: 'end',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n } as any)\n}\n"]}