@things-factory/worklist 6.0.12 → 6.0.16
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.
- package/client/pages/activity-approval/activity-approval-page.ts +17 -3
- package/client/pages/activity-thread/activity-thread-page.ts +93 -3
- package/dist-client/pages/activity-approval/activity-approval-page.js +19 -5
- package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
- package/dist-client/pages/activity-thread/activity-thread-page.d.ts +4 -0
- package/dist-client/pages/activity-thread/activity-thread-page.js +67 -6
- package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/controllers/activity-approval/approve.js +3 -4
- package/dist-server/controllers/activity-approval/approve.js.map +1 -1
- package/dist-server/controllers/activity-approval/delegate.js +10 -4
- package/dist-server/controllers/activity-approval/delegate.js.map +1 -1
- package/dist-server/controllers/activity-approval/reject.js +5 -3
- package/dist-server/controllers/activity-approval/reject.js.map +1 -1
- package/dist-server/controllers/activity-thread/delegate.js +2 -3
- package/dist-server/controllers/activity-thread/delegate.js.map +1 -1
- package/dist-server/controllers/activity-thread/end.js +1 -2
- package/dist-server/controllers/activity-thread/end.js.map +1 -1
- package/dist-server/controllers/activity-thread/index.js +1 -0
- package/dist-server/controllers/activity-thread/index.js.map +1 -1
- package/dist-server/controllers/activity-thread/restart.js +25 -0
- package/dist-server/controllers/activity-thread/restart.js.map +1 -0
- package/dist-server/controllers/activity-thread/save.js +6 -2
- package/dist-server/controllers/activity-thread/save.js.map +1 -1
- package/dist-server/controllers/activity-thread/start.js +3 -4
- package/dist-server/controllers/activity-thread/start.js.map +1 -1
- package/dist-server/controllers/activity-thread/submit.js +2 -1
- package/dist-server/controllers/activity-thread/submit.js.map +1 -1
- package/dist-server/controllers/activity-thread/terminate.js +2 -3
- package/dist-server/controllers/activity-thread/terminate.js.map +1 -1
- package/dist-server/service/activity-approval/activity-approval-mutation.js +10 -8
- package/dist-server/service/activity-approval/activity-approval-mutation.js.map +1 -1
- package/dist-server/service/activity-approval/activity-approval-query.js +21 -1
- package/dist-server/service/activity-approval/activity-approval-query.js.map +1 -1
- package/dist-server/service/activity-approval/activity-approval-subscription.js +48 -0
- package/dist-server/service/activity-approval/activity-approval-subscription.js.map +1 -0
- package/dist-server/service/activity-approval/activity-approval.js +23 -2
- package/dist-server/service/activity-approval/activity-approval.js.map +1 -1
- package/dist-server/service/activity-approval/index.js +2 -1
- package/dist-server/service/activity-approval/index.js.map +1 -1
- package/dist-server/service/activity-instance/activity-instance-subscription.js +2 -2
- package/dist-server/service/activity-instance/activity-instance-subscription.js.map +1 -1
- package/dist-server/service/activity-summary/activity-summary-query.js +154 -0
- package/dist-server/service/activity-summary/activity-summary-query.js.map +1 -0
- package/dist-server/service/activity-summary/activity-summary.js +28 -0
- package/dist-server/service/activity-summary/activity-summary.js.map +1 -0
- package/dist-server/service/activity-summary/index.js +8 -0
- package/dist-server/service/activity-summary/index.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-history.js +194 -0
- package/dist-server/service/activity-thread/activity-thread-history.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-mutation.js +15 -1
- package/dist-server/service/activity-thread/activity-thread-mutation.js.map +1 -1
- package/dist-server/service/activity-thread/activity-thread-query.js +18 -5
- package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -1
- package/dist-server/service/activity-thread/activity-thread-subscription.js +2 -2
- package/dist-server/service/activity-thread/activity-thread-subscription.js.map +1 -1
- package/dist-server/service/activity-thread/activity-thread.js +21 -22
- package/dist-server/service/activity-thread/activity-thread.js.map +1 -1
- package/dist-server/service/activity-thread/event-subscriber.js +15 -1
- package/dist-server/service/activity-thread/event-subscriber.js.map +1 -1
- package/dist-server/service/activity-thread/index.js +3 -2
- package/dist-server/service/activity-thread/index.js.map +1 -1
- package/dist-server/service/index.js +6 -2
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/server/controllers/activity-approval/approve.ts +5 -4
- package/server/controllers/activity-approval/delegate.ts +21 -6
- package/server/controllers/activity-approval/reject.ts +12 -4
- package/server/controllers/activity-thread/delegate.ts +2 -3
- package/server/controllers/activity-thread/end.ts +1 -2
- package/server/controllers/activity-thread/index.ts +1 -0
- package/server/controllers/activity-thread/restart.ts +42 -0
- package/server/controllers/activity-thread/save.ts +9 -2
- package/server/controllers/activity-thread/start.ts +3 -4
- package/server/controllers/activity-thread/submit.ts +2 -1
- package/server/controllers/activity-thread/terminate.ts +2 -3
- package/server/service/activity-approval/activity-approval-mutation.ts +6 -4
- package/server/service/activity-approval/activity-approval-query.ts +11 -1
- package/server/service/activity-approval/activity-approval-subscription.ts +46 -0
- package/server/service/activity-approval/activity-approval.ts +16 -0
- package/server/service/activity-approval/index.ts +2 -1
- package/server/service/activity-instance/activity-instance-subscription.ts +2 -2
- package/server/service/activity-summary/activity-summary-query.ts +132 -0
- package/server/service/activity-summary/activity-summary.ts +16 -0
- package/server/service/activity-summary/index.ts +5 -0
- package/server/service/activity-thread/activity-thread-history.ts +177 -0
- package/server/service/activity-thread/activity-thread-mutation.ts +21 -2
- package/server/service/activity-thread/activity-thread-query.ts +13 -5
- package/server/service/activity-thread/activity-thread-subscription.ts +2 -2
- package/server/service/activity-thread/activity-thread.ts +13 -15
- package/server/service/activity-thread/event-subscriber.ts +17 -1
- package/server/service/activity-thread/index.ts +4 -3
- package/server/service/index.ts +14 -6
- package/translations/en.json +3 -0
- package/translations/ko.json +3 -0
- package/translations/ms.json +3 -0
- package/translations/zh.json +3 -0
- package/server/controllers/activity-approval/abort.ts +0 -33
- package/server/controllers/activity-approval/escalate.ts +0 -33
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { Field, ID, Int, ObjectType } from 'type-graphql'
|
|
2
|
+
import { Column, Entity, Index, ManyToOne, OneToMany, PrimaryGeneratedColumn, RelationId } from 'typeorm'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
HistoryActionColumn,
|
|
6
|
+
HistoryActionType,
|
|
7
|
+
HistoryEntityInterface,
|
|
8
|
+
HistoryOriginalIdColumn
|
|
9
|
+
} from '@operato/typeorm-history'
|
|
10
|
+
import { User } from '@things-factory/auth-base'
|
|
11
|
+
import { config } from '@things-factory/env'
|
|
12
|
+
import { Domain, ScalarObject } from '@things-factory/shell'
|
|
13
|
+
|
|
14
|
+
import { ActivityThread, ActivityThreadStatus } from './activity-thread'
|
|
15
|
+
import { ActivityInstance } from '../activity-instance/activity-instance'
|
|
16
|
+
|
|
17
|
+
const ORMCONFIG = config.get('ormconfig', {})
|
|
18
|
+
const DATABASE_TYPE = ORMCONFIG.type
|
|
19
|
+
|
|
20
|
+
@Entity()
|
|
21
|
+
@Index(
|
|
22
|
+
'ix_activity_thread_history_0',
|
|
23
|
+
(activityThreadHistory: ActivityThreadHistory) => [activityThreadHistory.originalId, activityThreadHistory.version],
|
|
24
|
+
{ unique: true }
|
|
25
|
+
)
|
|
26
|
+
@Index(
|
|
27
|
+
'ix_activity_thread_history_1',
|
|
28
|
+
(activityThreadHistory: ActivityThreadHistory) => [
|
|
29
|
+
activityThreadHistory.domain,
|
|
30
|
+
activityThreadHistory.originalId,
|
|
31
|
+
activityThreadHistory.version
|
|
32
|
+
],
|
|
33
|
+
{ unique: true }
|
|
34
|
+
)
|
|
35
|
+
@ObjectType({ description: 'History Entity of ActivityThread' })
|
|
36
|
+
export class ActivityThreadHistory implements HistoryEntityInterface<ActivityThread> {
|
|
37
|
+
@PrimaryGeneratedColumn('uuid')
|
|
38
|
+
@Field(type => ID)
|
|
39
|
+
readonly id: string
|
|
40
|
+
|
|
41
|
+
@Column({
|
|
42
|
+
nullable: true,
|
|
43
|
+
default: 1
|
|
44
|
+
})
|
|
45
|
+
@Field({ nullable: true })
|
|
46
|
+
version?: number = 1
|
|
47
|
+
|
|
48
|
+
@ManyToOne(type => Domain)
|
|
49
|
+
@Field({ nullable: true })
|
|
50
|
+
domain?: Domain
|
|
51
|
+
|
|
52
|
+
@RelationId((activityThread: ActivityThread) => activityThread.domain)
|
|
53
|
+
domainId?: string
|
|
54
|
+
|
|
55
|
+
@ManyToOne(type => ActivityInstance)
|
|
56
|
+
@Field(type => ActivityInstance, { nullable: true })
|
|
57
|
+
activityInstance?: ActivityInstance
|
|
58
|
+
|
|
59
|
+
@RelationId((activityThread: ActivityThread) => activityThread.activityInstance)
|
|
60
|
+
activityInstanceId?: string
|
|
61
|
+
|
|
62
|
+
@Column({ nullable: true })
|
|
63
|
+
@Field({ nullable: true })
|
|
64
|
+
state?: ActivityThreadStatus
|
|
65
|
+
|
|
66
|
+
@Column('simple-json', { nullable: true })
|
|
67
|
+
@Field(type => ScalarObject, { nullable: true })
|
|
68
|
+
output?: { [key: string]: any }
|
|
69
|
+
|
|
70
|
+
@ManyToOne(type => User, { nullable: true })
|
|
71
|
+
@Field({ nullable: true })
|
|
72
|
+
assignee?: User
|
|
73
|
+
|
|
74
|
+
@RelationId((activityThread: ActivityThread) => activityThread.assignee)
|
|
75
|
+
assigneeId?: string
|
|
76
|
+
|
|
77
|
+
@Column({ nullable: true })
|
|
78
|
+
@Field({ nullable: true })
|
|
79
|
+
round: number
|
|
80
|
+
|
|
81
|
+
@Column({ nullable: true })
|
|
82
|
+
@Field({ nullable: true })
|
|
83
|
+
transaction: string
|
|
84
|
+
|
|
85
|
+
@Column({ nullable: true })
|
|
86
|
+
@Field({ nullable: true })
|
|
87
|
+
dueAt?: Date
|
|
88
|
+
|
|
89
|
+
@Column({ nullable: true })
|
|
90
|
+
@Field({ nullable: true })
|
|
91
|
+
assignedAt?: Date
|
|
92
|
+
|
|
93
|
+
@Column({ nullable: true })
|
|
94
|
+
@Field({ nullable: true })
|
|
95
|
+
startedAt?: Date
|
|
96
|
+
|
|
97
|
+
@Column({ nullable: true })
|
|
98
|
+
@Field({ nullable: true })
|
|
99
|
+
terminatedAt?: Date
|
|
100
|
+
|
|
101
|
+
@Column()
|
|
102
|
+
@Field({ nullable: true })
|
|
103
|
+
createdAt?: Date
|
|
104
|
+
|
|
105
|
+
@Column()
|
|
106
|
+
@Field({ nullable: true })
|
|
107
|
+
updatedAt?: Date
|
|
108
|
+
|
|
109
|
+
@ManyToOne(type => User, { nullable: true })
|
|
110
|
+
@Field({ nullable: true })
|
|
111
|
+
creator?: User
|
|
112
|
+
|
|
113
|
+
@RelationId((activityThread: ActivityThread) => activityThread.creator)
|
|
114
|
+
creatorId?: string
|
|
115
|
+
|
|
116
|
+
@ManyToOne(type => User, { nullable: true })
|
|
117
|
+
@Field({ nullable: true })
|
|
118
|
+
updater?: User
|
|
119
|
+
|
|
120
|
+
@RelationId((activityThread: ActivityThread) => activityThread.updater)
|
|
121
|
+
updaterId?: string
|
|
122
|
+
|
|
123
|
+
@ManyToOne(type => User, { nullable: true })
|
|
124
|
+
@Field({ nullable: true })
|
|
125
|
+
terminator?: User
|
|
126
|
+
|
|
127
|
+
@RelationId((activityThread: ActivityThread) => activityThread.terminator)
|
|
128
|
+
terminatorId?: string
|
|
129
|
+
|
|
130
|
+
@HistoryOriginalIdColumn()
|
|
131
|
+
public originalId!: string
|
|
132
|
+
|
|
133
|
+
@HistoryActionColumn({
|
|
134
|
+
nullable: false,
|
|
135
|
+
type:
|
|
136
|
+
DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
|
|
137
|
+
? 'enum'
|
|
138
|
+
: DATABASE_TYPE == 'oracle'
|
|
139
|
+
? 'varchar2'
|
|
140
|
+
: 'smallint',
|
|
141
|
+
enum: HistoryActionType
|
|
142
|
+
})
|
|
143
|
+
public action!: HistoryActionType
|
|
144
|
+
|
|
145
|
+
isPendingStarted(): boolean {
|
|
146
|
+
switch (this.state) {
|
|
147
|
+
case ActivityThreadStatus.Assigned:
|
|
148
|
+
return true
|
|
149
|
+
default:
|
|
150
|
+
return false
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
isPendingEnded(): boolean {
|
|
155
|
+
switch (this.state) {
|
|
156
|
+
case ActivityThreadStatus.Started:
|
|
157
|
+
case ActivityThreadStatus.Rejected:
|
|
158
|
+
return true
|
|
159
|
+
default:
|
|
160
|
+
return false
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
isValid(): boolean {
|
|
165
|
+
switch (this.state) {
|
|
166
|
+
case ActivityThreadStatus.Assigned:
|
|
167
|
+
case ActivityThreadStatus.Started:
|
|
168
|
+
case ActivityThreadStatus.Ended:
|
|
169
|
+
case ActivityThreadStatus.Rejected:
|
|
170
|
+
return true
|
|
171
|
+
case ActivityThreadStatus.Delegated:
|
|
172
|
+
case ActivityThreadStatus.Aborted:
|
|
173
|
+
default:
|
|
174
|
+
return false
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
@@ -3,7 +3,15 @@ import { In } from 'typeorm'
|
|
|
3
3
|
|
|
4
4
|
import { ObjectRef, ScalarObject } from '@things-factory/shell'
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
abort,
|
|
8
|
+
delegate,
|
|
9
|
+
end,
|
|
10
|
+
restart,
|
|
11
|
+
save as saveActivityThread,
|
|
12
|
+
start,
|
|
13
|
+
submit
|
|
14
|
+
} from '../../controllers/activity-thread'
|
|
7
15
|
import { ActivityThread } from './activity-thread'
|
|
8
16
|
import { ActivityThreadSave } from './activity-thread-type'
|
|
9
17
|
|
|
@@ -12,7 +20,7 @@ export class ActivityThreadMutation {
|
|
|
12
20
|
/* transactions ... */
|
|
13
21
|
|
|
14
22
|
@Directive('@transaction')
|
|
15
|
-
@Mutation(returns => ActivityThread!, { nullable: true, description: 'To start ActivityThread
|
|
23
|
+
@Mutation(returns => ActivityThread!, { nullable: true, description: 'To start ActivityThread' })
|
|
16
24
|
async startActivityThread(
|
|
17
25
|
@Arg('id') id: string,
|
|
18
26
|
@Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },
|
|
@@ -22,6 +30,17 @@ export class ActivityThreadMutation {
|
|
|
22
30
|
return await start(id, output, reason, context)
|
|
23
31
|
}
|
|
24
32
|
|
|
33
|
+
@Directive('@transaction')
|
|
34
|
+
@Mutation(returns => ActivityThread!, { nullable: true, description: 'To restart ActivityThread' })
|
|
35
|
+
async restartActivityThread(
|
|
36
|
+
@Arg('id') id: string,
|
|
37
|
+
@Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },
|
|
38
|
+
@Arg('reason', { nullable: true }) reason: string,
|
|
39
|
+
@Ctx() context: ResolverContext
|
|
40
|
+
): Promise<ActivityThread> {
|
|
41
|
+
return await restart(id, output, reason, context)
|
|
42
|
+
}
|
|
43
|
+
|
|
25
44
|
@Directive('@transaction')
|
|
26
45
|
@Mutation(returns => ActivityThread, { description: 'To delegate a ActivityThread' })
|
|
27
46
|
async delegateActivityThread(
|
|
@@ -39,10 +39,13 @@ export class ActivityThreadQuery {
|
|
|
39
39
|
var { domain, user } = context.state
|
|
40
40
|
|
|
41
41
|
const status = [
|
|
42
|
-
ActivityThreadStatus.Assigned,
|
|
43
|
-
ActivityThreadStatus.Started,
|
|
44
|
-
ActivityThreadStatus.Submitted,
|
|
45
|
-
ActivityThreadStatus.
|
|
42
|
+
// ActivityThreadStatus.Assigned,
|
|
43
|
+
// ActivityThreadStatus.Started,
|
|
44
|
+
// ActivityThreadStatus.Submitted,
|
|
45
|
+
// ActivityThreadStatus.Escalated,
|
|
46
|
+
// ActivityThreadStatus.Rejected,
|
|
47
|
+
ActivityThreadStatus.Ended,
|
|
48
|
+
ActivityThreadStatus.Aborted
|
|
46
49
|
]
|
|
47
50
|
|
|
48
51
|
const [items, total] = await getQueryBuilderFromListParams({
|
|
@@ -56,7 +59,7 @@ export class ActivityThreadQuery {
|
|
|
56
59
|
description: { columnName: 'description', relationColumn: 'activityInstance' }
|
|
57
60
|
}
|
|
58
61
|
})
|
|
59
|
-
.andWhere('at.state IN (:...status)', { status })
|
|
62
|
+
.andWhere('at.state NOT IN (:...status)', { status })
|
|
60
63
|
.andWhere('at.assignee = :user', { user: user.id })
|
|
61
64
|
.getManyAndCount()
|
|
62
65
|
|
|
@@ -89,4 +92,9 @@ export class ActivityThreadQuery {
|
|
|
89
92
|
async creator(@Root() activityThread: ActivityThread): Promise<User> {
|
|
90
93
|
return await getRepository(User).findOneBy({ id: activityThread.creatorId })
|
|
91
94
|
}
|
|
95
|
+
|
|
96
|
+
@FieldResolver(type => User)
|
|
97
|
+
async terminator(@Root() activityThread: ActivityThread): Promise<User> {
|
|
98
|
+
return await getRepository(User).findOneBy({ id: activityThread.terminatorId })
|
|
99
|
+
}
|
|
92
100
|
}
|
|
@@ -24,9 +24,9 @@ export class ActivityThreadSubscription {
|
|
|
24
24
|
() => pubsub.asyncIterator('activity-thread'),
|
|
25
25
|
async (payload, variables, context, info) => {
|
|
26
26
|
const { activityThread } = payload
|
|
27
|
-
const {
|
|
27
|
+
const { domainId } = activityThread
|
|
28
28
|
|
|
29
|
-
if (
|
|
29
|
+
if (domainId !== domain?.id) {
|
|
30
30
|
return false
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
ManyToOne,
|
|
9
9
|
PrimaryGeneratedColumn,
|
|
10
10
|
RelationId,
|
|
11
|
+
VersionColumn,
|
|
11
12
|
UpdateDateColumn
|
|
12
13
|
} from 'typeorm'
|
|
13
14
|
|
|
@@ -53,6 +54,10 @@ export class ActivityThread {
|
|
|
53
54
|
@RelationId((activityThread: ActivityThread) => activityThread.domain)
|
|
54
55
|
domainId?: string
|
|
55
56
|
|
|
57
|
+
@VersionColumn({ default: 1 })
|
|
58
|
+
@Field({ nullable: true })
|
|
59
|
+
version?: number = 1
|
|
60
|
+
|
|
56
61
|
@ManyToOne(type => ActivityInstance, activityInstance => activityInstance.activityThreads)
|
|
57
62
|
@Field(type => ActivityInstance, { nullable: true })
|
|
58
63
|
activityInstance?: ActivityInstance
|
|
@@ -60,21 +65,6 @@ export class ActivityThread {
|
|
|
60
65
|
@RelationId((activityThread: ActivityThread) => activityThread.activityInstance)
|
|
61
66
|
activityInstanceId?: string
|
|
62
67
|
|
|
63
|
-
@ManyToOne(type => ActivityThread, { nullable: true })
|
|
64
|
-
@Field(type => ActivityThread, { nullable: true })
|
|
65
|
-
originalThread?: ActivityThread
|
|
66
|
-
|
|
67
|
-
@RelationId((activityThread: ActivityThread) => activityThread.originalThread)
|
|
68
|
-
originalThreadId?: string
|
|
69
|
-
|
|
70
|
-
@OneToMany(type => ActivityThread, activityThread => activityThread.originalThread)
|
|
71
|
-
@Field(type => [ActivityThread])
|
|
72
|
-
derivedThreads?: ActivityThread
|
|
73
|
-
|
|
74
|
-
@Column({ nullable: true })
|
|
75
|
-
@Field({ nullable: true })
|
|
76
|
-
active?: boolean
|
|
77
|
-
|
|
78
68
|
@Column({ nullable: true })
|
|
79
69
|
@Field({ nullable: true })
|
|
80
70
|
state?: ActivityThreadStatus
|
|
@@ -90,6 +80,14 @@ export class ActivityThread {
|
|
|
90
80
|
@RelationId((activityThread: ActivityThread) => activityThread.assignee)
|
|
91
81
|
assigneeId?: string
|
|
92
82
|
|
|
83
|
+
@Column({ nullable: true, default: 1 })
|
|
84
|
+
@Field({ nullable: true })
|
|
85
|
+
round: number = 1
|
|
86
|
+
|
|
87
|
+
@Column({ nullable: true })
|
|
88
|
+
@Field({ nullable: true })
|
|
89
|
+
transaction: string
|
|
90
|
+
|
|
93
91
|
@Column({ nullable: true })
|
|
94
92
|
@Field({ nullable: true })
|
|
95
93
|
dueAt?: Date
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { EventSubscriber, EntitySubscriberInterface, InsertEvent,
|
|
1
|
+
import { EventSubscriber, EntitySubscriberInterface, InsertEvent, UpdateEvent } from 'typeorm'
|
|
2
|
+
import { HistoryEntitySubscriber } from '@operato/typeorm-history'
|
|
2
3
|
|
|
3
4
|
import { pubsub } from '@things-factory/shell'
|
|
4
5
|
|
|
5
6
|
import { ActivityThread } from './activity-thread'
|
|
7
|
+
import { ActivityThreadHistory } from './activity-thread-history'
|
|
6
8
|
|
|
7
9
|
@EventSubscriber()
|
|
8
10
|
export class ActivityThreadSubscriber implements EntitySubscriberInterface<ActivityThread> {
|
|
@@ -29,3 +31,17 @@ export class ActivityThreadSubscriber implements EntitySubscriberInterface<Activ
|
|
|
29
31
|
console.log('activity-thread updated', activityThread.id)
|
|
30
32
|
}
|
|
31
33
|
}
|
|
34
|
+
|
|
35
|
+
@EventSubscriber()
|
|
36
|
+
export class ActivityThreadHistoryEntitySubscriber extends HistoryEntitySubscriber<
|
|
37
|
+
ActivityThread,
|
|
38
|
+
ActivityThreadHistory
|
|
39
|
+
> {
|
|
40
|
+
public get entity() {
|
|
41
|
+
return ActivityThread
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public get historyEntity() {
|
|
45
|
+
return ActivityThreadHistory
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { ActivityThread } from './activity-thread'
|
|
2
|
+
import { ActivityThreadHistory } from './activity-thread-history'
|
|
2
3
|
import { ActivityThreadMutation } from './activity-thread-mutation'
|
|
3
4
|
import { ActivityThreadQuery } from './activity-thread-query'
|
|
4
5
|
import { ActivityThreadSubscription } from './activity-thread-subscription'
|
|
5
|
-
import { ActivityThreadSubscriber } from './event-subscriber'
|
|
6
|
+
import { ActivityThreadHistoryEntitySubscriber, ActivityThreadSubscriber } from './event-subscriber'
|
|
6
7
|
|
|
7
|
-
export const entities = [ActivityThread]
|
|
8
|
+
export const entities = [ActivityThread, ActivityThreadHistory]
|
|
8
9
|
export const resolvers = [ActivityThreadQuery, ActivityThreadMutation, ActivityThreadSubscription]
|
|
9
|
-
export const subscribers = [ActivityThreadSubscriber]
|
|
10
|
+
export const subscribers = [ActivityThreadSubscriber, ActivityThreadHistoryEntitySubscriber]
|
package/server/service/index.ts
CHANGED
|
@@ -4,9 +4,14 @@ export * from './activity-thread/activity-thread'
|
|
|
4
4
|
export * from './activity-template/activity-template'
|
|
5
5
|
export * from './activity-instance/activity-instance'
|
|
6
6
|
export * from './activity/activity'
|
|
7
|
+
export * from './activity-summary/activity-summary'
|
|
7
8
|
|
|
8
9
|
/* IMPORT ENTITIES AND RESOLVERS */
|
|
9
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
entities as ActivityApprovalEntities,
|
|
12
|
+
resolvers as ActivityApprovalResolvers,
|
|
13
|
+
subscribers as ActivityApprovalSubscribers
|
|
14
|
+
} from './activity-approval'
|
|
10
15
|
import {
|
|
11
16
|
entities as ActivityEntities,
|
|
12
17
|
resolvers as ActivityResolvers,
|
|
@@ -23,19 +28,21 @@ import {
|
|
|
23
28
|
resolvers as ActivityThreadResolvers,
|
|
24
29
|
subscribers as ActivityThreadSubscribers
|
|
25
30
|
} from './activity-thread'
|
|
31
|
+
import { entities as ActivitySummaryEntities, resolvers as ActivitySummaryResolvers } from './activity-summary'
|
|
26
32
|
|
|
27
33
|
export const entities = [
|
|
28
34
|
/* ENTITIES */
|
|
29
|
-
|
|
35
|
+
...ActivityApprovalEntities,
|
|
30
36
|
...ActivityEntities,
|
|
31
37
|
...ActivityInstanceEntities,
|
|
32
38
|
...ActivityTemplateEntities,
|
|
33
|
-
...ActivityThreadEntities
|
|
39
|
+
...ActivityThreadEntities,
|
|
40
|
+
...ActivitySummaryEntities
|
|
34
41
|
]
|
|
35
42
|
|
|
36
43
|
export const subscribers = [
|
|
37
44
|
/* SUBSCRIBERS */
|
|
38
|
-
|
|
45
|
+
...ActivityApprovalSubscribers,
|
|
39
46
|
...ActivityInstanceSubscribers,
|
|
40
47
|
...ActivitySubscribers,
|
|
41
48
|
...ActivityThreadSubscribers
|
|
@@ -44,10 +51,11 @@ export const subscribers = [
|
|
|
44
51
|
export const schema = {
|
|
45
52
|
resolverClasses: [
|
|
46
53
|
/* RESOLVER CLASSES */
|
|
47
|
-
|
|
54
|
+
...ActivityApprovalResolvers,
|
|
48
55
|
...ActivityResolvers,
|
|
49
56
|
...ActivityInstanceResolvers,
|
|
50
57
|
...ActivityTemplateResolvers,
|
|
51
|
-
...ActivityThreadResolvers
|
|
58
|
+
...ActivityThreadResolvers,
|
|
59
|
+
...ActivitySummaryResolvers
|
|
52
60
|
]
|
|
53
61
|
}
|
package/translations/en.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
+
"button.abort": "abort",
|
|
2
3
|
"button.approve": "approve",
|
|
3
4
|
"button.assign": "assign",
|
|
4
5
|
"button.buy": "buy",
|
|
6
|
+
"button.delegate": "delegate",
|
|
5
7
|
"button.draft": "draft",
|
|
6
8
|
"button.finish": "finish",
|
|
7
9
|
"button.pick": "pick",
|
|
8
10
|
"button.post": "post",
|
|
11
|
+
"button.restart": "restart",
|
|
9
12
|
"button.start": "start",
|
|
10
13
|
"button.submit": "submit",
|
|
11
14
|
"field.activity-type": "activity type",
|
package/translations/ko.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
+
"button.abort": "중단",
|
|
2
3
|
"button.approve": "승인",
|
|
3
4
|
"button.assign": "할당",
|
|
4
5
|
"button.buy": "구매",
|
|
6
|
+
"button.delegate": "위임",
|
|
5
7
|
"button.draft": "초안",
|
|
6
8
|
"button.finish": "완료",
|
|
7
9
|
"button.pick": "선택",
|
|
8
10
|
"button.post": "게시",
|
|
11
|
+
"button.restart": "재시작",
|
|
9
12
|
"button.start": "시작",
|
|
10
13
|
"button.submit": "제출",
|
|
11
14
|
"field.activity-type": "업무 타입",
|
package/translations/ms.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
+
"button.abort": "abort",
|
|
2
3
|
"button.approve": "approve",
|
|
3
4
|
"button.assign": "assign",
|
|
4
5
|
"button.buy": "buy",
|
|
6
|
+
"button.delegate": "delegate",
|
|
5
7
|
"button.draft": "draft",
|
|
6
8
|
"button.finish": "finish",
|
|
7
9
|
"button.pick": "pick",
|
|
8
10
|
"button.post": "post",
|
|
11
|
+
"button.restart": "restart",
|
|
9
12
|
"button.start": "start",
|
|
10
13
|
"button.submit": "submit",
|
|
11
14
|
"field.activity-type": "activity type",
|
package/translations/zh.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
+
"button.abort": "abort",
|
|
2
3
|
"button.approve": "approve",
|
|
3
4
|
"button.assign": "assign",
|
|
4
5
|
"button.buy": "buy",
|
|
6
|
+
"button.delegate": "delegate",
|
|
5
7
|
"button.draft": "draft",
|
|
6
8
|
"button.finish": "finish",
|
|
7
9
|
"button.pick": "pick",
|
|
8
10
|
"button.post": "post",
|
|
11
|
+
"button.restart": "restart",
|
|
9
12
|
"button.start": "start",
|
|
10
13
|
"button.submit": "submit",
|
|
11
14
|
"field.activity-type": "activity type",
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'
|
|
2
|
-
|
|
3
|
-
export async function abort(
|
|
4
|
-
{ id, comment }: { id: string; comment: string },
|
|
5
|
-
context: ResolverContext
|
|
6
|
-
): Promise<ActivityApproval> {
|
|
7
|
-
const { domain, user, tx } = context.state
|
|
8
|
-
|
|
9
|
-
var repository = tx.getRepository(ActivityApproval)
|
|
10
|
-
|
|
11
|
-
var activityApproval = await repository.findOne({
|
|
12
|
-
where: { domain: { id: domain.id }, id },
|
|
13
|
-
relations: ['domain', 'activityThread', 'updater', 'creator']
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
if (!activityApproval) {
|
|
17
|
-
throw new Error(
|
|
18
|
-
context.t('error.activity-approval not found', {
|
|
19
|
-
activityApproval: id
|
|
20
|
-
})
|
|
21
|
-
)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return await repository.save({
|
|
25
|
-
...activityApproval,
|
|
26
|
-
judgment: ActivityApprovalJudgment.Aborted,
|
|
27
|
-
comment,
|
|
28
|
-
transaction: 'abort',
|
|
29
|
-
updater: user,
|
|
30
|
-
terminatedAt: new Date(),
|
|
31
|
-
terminator: user
|
|
32
|
-
})
|
|
33
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'
|
|
2
|
-
|
|
3
|
-
export async function escalate(
|
|
4
|
-
{ id, comment }: { id: string; comment: string },
|
|
5
|
-
context: ResolverContext
|
|
6
|
-
): Promise<ActivityApproval> {
|
|
7
|
-
const { domain, user, tx } = context.state
|
|
8
|
-
|
|
9
|
-
var repository = tx.getRepository(ActivityApproval)
|
|
10
|
-
|
|
11
|
-
var activityApproval = await repository.findOne({
|
|
12
|
-
where: { domain: { id: domain.id }, id },
|
|
13
|
-
relations: ['domain', 'activityThread', 'updater', 'creator']
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
if (!activityApproval) {
|
|
17
|
-
throw new Error(
|
|
18
|
-
context.t('error.activity-approval not found', {
|
|
19
|
-
activityApproval: id
|
|
20
|
-
})
|
|
21
|
-
)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return await repository.save({
|
|
25
|
-
...activityApproval,
|
|
26
|
-
judgment: ActivityApprovalJudgment.Escalated,
|
|
27
|
-
comment,
|
|
28
|
-
transaction: 'abort',
|
|
29
|
-
updater: user,
|
|
30
|
-
terminatedAt: new Date(),
|
|
31
|
-
terminator: user
|
|
32
|
-
})
|
|
33
|
-
}
|