@steedos/standard-process-approval 2.2.55-beta.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/main/default/applications/.gitkeep +0 -0
- package/main/default/applications/process_automation.app.yml +49 -0
- package/main/default/client/action_field_updates.client.js +155 -0
- package/main/default/client/core.client.js +134 -0
- package/main/default/client/process.client.js +211 -0
- package/main/default/client/process_node.client.js +36 -0
- package/main/default/client/workflow_notifications.client.js +74 -0
- package/main/default/objectTranslations/action_field_updates.en/action_field_updates.en.objectTranslation.yml +69 -0
- package/main/default/objectTranslations/action_field_updates.zh-CN/action_field_updates.zh-CN.objectTranslation.yml +72 -0
- package/main/default/objectTranslations/process_definition.en/process_definition.en.objectTranslation.yml +150 -0
- package/main/default/objectTranslations/process_definition.zh-CN/process_definition.zh-CN.objectTranslation.yml +145 -0
- package/main/default/objectTranslations/process_flows.en/process_flows.en.objectTranslation.yml +41 -0
- package/main/default/objectTranslations/process_flows.zh-CN/process_flows.zh-CN.objectTranslation.yml +41 -0
- package/main/default/objectTranslations/process_flows_criteria.en/process_flows_criteria.en.objectTranslation.yml +38 -0
- package/main/default/objectTranslations/process_flows_criteria.zh-CN/process_flows_criteria.zh-CN.objectTranslation.yml +38 -0
- package/main/default/objectTranslations/process_flows_criteria_action.en/process_flows_criteria_action.en.objectTranslation.yml +47 -0
- package/main/default/objectTranslations/process_flows_criteria_action.zh-CN/process_flows_criteria_action.zh-CN.objectTranslation.yml +47 -0
- package/main/default/objectTranslations/process_instance.en/process_instance.en.objectTranslation.yml +63 -0
- package/main/default/objectTranslations/process_instance.zh-CN/process_instance.zh-CN.objectTranslation.yml +63 -0
- package/main/default/objectTranslations/process_instance_history.en/process_instance_history.en.objectTranslation.yml +109 -0
- package/main/default/objectTranslations/process_instance_history.zh-CN/process_instance_history.zh-CN.objectTranslation.yml +109 -0
- package/main/default/objectTranslations/process_instance_node.en/process_instance_node.en.objectTranslation.yml +59 -0
- package/main/default/objectTranslations/process_instance_node.zh-CN/process_instance_node.zh-CN.objectTranslation.yml +59 -0
- package/main/default/objectTranslations/process_node.en/process_node.en.objectTranslation.yml +120 -0
- package/main/default/objectTranslations/process_node.zh-CN/process_node.zh-CN.objectTranslation.yml +116 -0
- package/main/default/objectTranslations/workflow_notifications.en/workflow_notifications.en.objectTranslation.yml +41 -0
- package/main/default/objectTranslations/workflow_notifications.zh-CN/workflow_notifications.zh-CN.objectTranslation.yml +44 -0
- package/main/default/objectTranslations/workflow_rule.en/workflow_rule.en.objectTranslation.yml +53 -0
- package/main/default/objectTranslations/workflow_rule.zh-CN/workflow_rule.zh-CN.objectTranslation.yml +60 -0
- package/main/default/objects/process/approval/process_definition.action.js +65 -0
- package/main/default/objects/process/approval/process_definition.function.js +39 -0
- package/main/default/objects/process/approval/process_definition.object.yml +313 -0
- package/main/default/objects/process/approval/process_node.object.yml +267 -0
- package/main/default/objects/process/flows/process_flows.object.yml +48 -0
- package/main/default/objects/process/flows/process_flows_criteria.object.yml +46 -0
- package/main/default/objects/process/flows/process_flows_criteria_action.object.yml +56 -0
- package/main/default/objects/process/process_instance/process_instance.object.yml +65 -0
- package/main/default/objects/process/process_instance/process_instance_history.action.js +26 -0
- package/main/default/objects/process/process_instance/process_instance_history.object.yml +153 -0
- package/main/default/objects/process/process_instance/process_instance_node.object.yml +59 -0
- package/main/default/objects/workflow-actions/action_field_updates.action.js +33 -0
- package/main/default/objects/workflow-actions/action_field_updates.object.yml +197 -0
- package/main/default/objects/workflow-actions/workflow_notifications.action.js +33 -0
- package/main/default/objects/workflow-actions/workflow_notifications.object.yml +107 -0
- package/main/default/objects/workflow-actions/workflow_rule.action.js +33 -0
- package/main/default/objects/workflow-actions/workflow_rule.object.yml +112 -0
- package/main/default/permissionsets/.gitkeep +0 -0
- package/main/default/profiles/.gitkeep +0 -0
- package/main/default/tabs/.gitkeep +0 -0
- package/main/default/triggers/.gitkeep +0 -0
- package/main/default/triggers/action_field_updates.trigger.js +175 -0
- package/main/default/triggers/process_definition.trigger.js +132 -0
- package/main/default/triggers/process_instance_history.trigger.js +42 -0
- package/main/default/triggers/process_node.trigger.js +232 -0
- package/main/default/triggers/workflow_notifications.trigger.js +236 -0
- package/main/default/triggers/workflow_rule.trigger.js +96 -0
- package/package.json +16 -0
- package/package.service.js +75 -0
- package/public/.md +3 -0
- package/src/.md +3 -0
- package/webapp/.md +1 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: workflow_notifications
|
|
2
|
+
label: Workflow Notifications
|
|
3
|
+
description:
|
|
4
|
+
fields:
|
|
5
|
+
name:
|
|
6
|
+
label: API Name
|
|
7
|
+
help:
|
|
8
|
+
description:
|
|
9
|
+
label:
|
|
10
|
+
label:
|
|
11
|
+
help:
|
|
12
|
+
description:
|
|
13
|
+
object_name:
|
|
14
|
+
label: Object Name
|
|
15
|
+
help:
|
|
16
|
+
description:
|
|
17
|
+
title:
|
|
18
|
+
label: Title Formula
|
|
19
|
+
help:
|
|
20
|
+
description:
|
|
21
|
+
body:
|
|
22
|
+
label: Body Formula
|
|
23
|
+
help:
|
|
24
|
+
description:
|
|
25
|
+
assigned_users:
|
|
26
|
+
label:
|
|
27
|
+
help:
|
|
28
|
+
description:
|
|
29
|
+
assigned_user_field:
|
|
30
|
+
label:
|
|
31
|
+
help:
|
|
32
|
+
description:
|
|
33
|
+
groups:
|
|
34
|
+
select_assigned_user: Select Assigned User
|
|
35
|
+
listviews:
|
|
36
|
+
all:
|
|
37
|
+
label: All
|
|
38
|
+
CustomLabels:
|
|
39
|
+
workflow_notifications_field__error_process_node_process_definition_required: Please select "Approval Process" for this Approval Step and then create "Workflow Notification"!
|
|
40
|
+
workflow_notifications_field__error_process_definition_object_required: Please select "Object" for this Approval Process and then create "Workflow Notification"!
|
|
41
|
+
workflow_notifications_field__error_workflow_rule_object_required: Please select "Object" for this Workflow Rule and then create "Workflow Notification"!
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: workflow_notifications
|
|
2
|
+
label: 工作流通知
|
|
3
|
+
description:
|
|
4
|
+
fields:
|
|
5
|
+
name:
|
|
6
|
+
label: API 名称
|
|
7
|
+
help: API 名称只能包含小写字母、数字,必须以字母开头,不能以下划线字符结尾或包含两个连续的下划线字符
|
|
8
|
+
description:
|
|
9
|
+
label:
|
|
10
|
+
label: 显示名称
|
|
11
|
+
help:
|
|
12
|
+
description:
|
|
13
|
+
object_name:
|
|
14
|
+
label: 对象
|
|
15
|
+
help:
|
|
16
|
+
description:
|
|
17
|
+
title:
|
|
18
|
+
label: 标题公式
|
|
19
|
+
help:
|
|
20
|
+
description:
|
|
21
|
+
body:
|
|
22
|
+
label: 正文公式
|
|
23
|
+
help:
|
|
24
|
+
description:
|
|
25
|
+
assigned_users:
|
|
26
|
+
label: 指定具体人员
|
|
27
|
+
help:
|
|
28
|
+
description:
|
|
29
|
+
assigned_user_field:
|
|
30
|
+
label: 指定对象上的用户字段
|
|
31
|
+
help:
|
|
32
|
+
description:
|
|
33
|
+
groups:
|
|
34
|
+
select_assigned_user: 选择分配的用户
|
|
35
|
+
listviews:
|
|
36
|
+
all:
|
|
37
|
+
label: 所有
|
|
38
|
+
CustomLabels:
|
|
39
|
+
workflow_notifications_field__error_process_node_process_definition_required: 请先选择该批准步骤的“批准过程”然后再新建工作流通知!
|
|
40
|
+
workflow_notifications_field__error_process_definition_object_required: 请先选择该批准过程的“对象”然后再新建工作流通知!
|
|
41
|
+
workflow_notifications_field__error_workflow_rule_object_required: 请先选择该工作流规则的“对象”然后再新建工作流通知!
|
|
42
|
+
actions:
|
|
43
|
+
customize:
|
|
44
|
+
label: 自定义
|
package/main/default/objectTranslations/workflow_rule.en/workflow_rule.en.objectTranslation.yml
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
name: workflow_rule
|
|
2
|
+
label: Workflow Rule
|
|
3
|
+
description:
|
|
4
|
+
fields:
|
|
5
|
+
object_name:
|
|
6
|
+
label: Object Name
|
|
7
|
+
help:
|
|
8
|
+
description:
|
|
9
|
+
name:
|
|
10
|
+
label:
|
|
11
|
+
help:
|
|
12
|
+
description:
|
|
13
|
+
label:
|
|
14
|
+
label:
|
|
15
|
+
help:
|
|
16
|
+
description:
|
|
17
|
+
active:
|
|
18
|
+
label:
|
|
19
|
+
help:
|
|
20
|
+
description:
|
|
21
|
+
trigger_type:
|
|
22
|
+
label:
|
|
23
|
+
help:
|
|
24
|
+
options:
|
|
25
|
+
- label: onCreateOnly
|
|
26
|
+
value: onCreateOnly
|
|
27
|
+
- label: onAllChanges
|
|
28
|
+
value: onAllChanges
|
|
29
|
+
- label: onCreateOrTriggeringUpdate
|
|
30
|
+
value: onCreateOrTriggeringUpdate
|
|
31
|
+
description:
|
|
32
|
+
formula:
|
|
33
|
+
label:
|
|
34
|
+
help:
|
|
35
|
+
description:
|
|
36
|
+
updates_field_actions:
|
|
37
|
+
label: Field Update
|
|
38
|
+
help:
|
|
39
|
+
description:
|
|
40
|
+
description:
|
|
41
|
+
label:
|
|
42
|
+
help:
|
|
43
|
+
description:
|
|
44
|
+
groups:
|
|
45
|
+
rule_criteria: Rule Criteria
|
|
46
|
+
immediate_actions: Immediate Actions
|
|
47
|
+
listviews:
|
|
48
|
+
all:
|
|
49
|
+
label: All
|
|
50
|
+
CustomLabels:
|
|
51
|
+
workflow_rule_field_trigger_type_options_onAllChanges:
|
|
52
|
+
workflow_rule_field_trigger_type_options_onCreateOnly:
|
|
53
|
+
workflow_rule_field_trigger_type_options_onCreateOrTriggeringUpdate:
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: workflow_rule
|
|
2
|
+
label: 工作流规则
|
|
3
|
+
description:
|
|
4
|
+
fields:
|
|
5
|
+
object_name:
|
|
6
|
+
label: 对象
|
|
7
|
+
help:
|
|
8
|
+
description:
|
|
9
|
+
name:
|
|
10
|
+
label: API 名称
|
|
11
|
+
help:
|
|
12
|
+
description:
|
|
13
|
+
label:
|
|
14
|
+
label: 显示名称
|
|
15
|
+
help:
|
|
16
|
+
description:
|
|
17
|
+
active:
|
|
18
|
+
label: 启用
|
|
19
|
+
help:
|
|
20
|
+
description:
|
|
21
|
+
trigger_type:
|
|
22
|
+
label: 评估条件
|
|
23
|
+
help:
|
|
24
|
+
options:
|
|
25
|
+
- label: 新建时
|
|
26
|
+
value: onCreateOnly
|
|
27
|
+
- label: 新建时,和每次编辑时
|
|
28
|
+
value: onAllChanges
|
|
29
|
+
- label: 新建时,或编辑数据导致条件成立
|
|
30
|
+
value: onCreateOrTriggeringUpdate
|
|
31
|
+
description:
|
|
32
|
+
formula:
|
|
33
|
+
label: 公式
|
|
34
|
+
help:
|
|
35
|
+
description:
|
|
36
|
+
updates_field_actions:
|
|
37
|
+
label: 字段更新
|
|
38
|
+
help:
|
|
39
|
+
description:
|
|
40
|
+
workflow_notifications_actions:
|
|
41
|
+
label: 工作流通知
|
|
42
|
+
help:
|
|
43
|
+
description:
|
|
44
|
+
description:
|
|
45
|
+
label: 描述
|
|
46
|
+
help:
|
|
47
|
+
description:
|
|
48
|
+
groups:
|
|
49
|
+
rule_criteria: 规则条件
|
|
50
|
+
immediate_actions: 即时操作
|
|
51
|
+
listviews:
|
|
52
|
+
all:
|
|
53
|
+
label: 所有
|
|
54
|
+
CustomLabels:
|
|
55
|
+
workflow_rule_field_trigger_type_options_onAllChanges: 新建时,和每次编辑时
|
|
56
|
+
workflow_rule_field_trigger_type_options_onCreateOnly: 新建时
|
|
57
|
+
workflow_rule_field_trigger_type_options_onCreateOrTriggeringUpdate: 新建时,或编辑数据导致条件成立
|
|
58
|
+
actions:
|
|
59
|
+
customize:
|
|
60
|
+
label: 自定义
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
enableVisible: function (object_name, record_id, record_permissions) {
|
|
3
|
+
var result = Steedos.authRequest(`/api/v4/${object_name}/${record_id}`, { type: 'get', async: false });
|
|
4
|
+
return !result.active && !result.is_system
|
|
5
|
+
},
|
|
6
|
+
enable: function (object_name, record_id, fields) {
|
|
7
|
+
Steedos.authRequest(`/api/v4/${object_name}/${record_id}`, { type: 'put', async: false, data: JSON.stringify({ active: true }) });
|
|
8
|
+
FlowRouter.reload();
|
|
9
|
+
},
|
|
10
|
+
disableVisible: function (object_name, record_id, record_permissions) {
|
|
11
|
+
var result = Steedos.authRequest(`/api/v4/${object_name}/${record_id}`, { type: 'get', async: false });
|
|
12
|
+
return result.active && !result.is_system
|
|
13
|
+
},
|
|
14
|
+
disable: function (object_name, record_id, fields) {
|
|
15
|
+
Steedos.authRequest(`/api/v4/${object_name}/${record_id}`, { type: 'put', async: false, data: JSON.stringify({ active: false }) });
|
|
16
|
+
FlowRouter.reload();
|
|
17
|
+
},
|
|
18
|
+
copyVisible: function(){
|
|
19
|
+
return true;
|
|
20
|
+
},
|
|
21
|
+
copy: function (object_name, record_id, fields) {
|
|
22
|
+
let result = Steedos.authRequest(`/api/v4/${object_name}/${record_id}/copy`, { type: 'get', async: false });
|
|
23
|
+
FlowRouter.go(`/app/admin/process_definition/view/${result._id}`);
|
|
24
|
+
},
|
|
25
|
+
customize: function (object_name, record_id, fields) {
|
|
26
|
+
var doc = Creator.odata.get(object_name, record_id);
|
|
27
|
+
var newDoc = {}
|
|
28
|
+
_.each(Creator.getObject(object_name).fields, function (v, k) {
|
|
29
|
+
if (_.has(doc, k)) {
|
|
30
|
+
newDoc[k] = doc[k]
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
delete newDoc.is_system;
|
|
34
|
+
|
|
35
|
+
let docName = doc.name
|
|
36
|
+
let docObjectName = doc.object_name
|
|
37
|
+
|
|
38
|
+
Creator.odata.insert(object_name, Object.assign(newDoc, { name: docName, object_name: docObjectName, active:false }), function (result, error) {
|
|
39
|
+
if (result) {
|
|
40
|
+
for(let node of doc.process_nodes){
|
|
41
|
+
let nodeName = node.name
|
|
42
|
+
var newNode = {}
|
|
43
|
+
_.each(Creator.getObject('process_node').fields, function (v, k) {
|
|
44
|
+
if (_.has(node, k)) {
|
|
45
|
+
newNode[k] = node[k]
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
Creator.odata.insert('process_node', Object.assign(newNode, { name: nodeName, process_definition: result._id }))
|
|
49
|
+
}
|
|
50
|
+
if (Session.get("object_name") === 'process_definition') {
|
|
51
|
+
FlowRouter.go(`/app/-/${object_name}/view/${result._id}`)
|
|
52
|
+
} else {
|
|
53
|
+
href = Creator.getObjectUrl(object_name, result._id);
|
|
54
|
+
window.open(href, '_blank', 'width=800, height=600, left=50, top= 50, toolbar=no, status=no, menubar=no, resizable=yes, scrollbars=yes')
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
customizeVisible: function (object_name, record_id, record_permissions, record) {
|
|
60
|
+
if (!record) {
|
|
61
|
+
record = {}
|
|
62
|
+
}
|
|
63
|
+
return Creator.baseObject.actions.standard_new.visible() && record.is_system;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const objectql = require("@steedos/objectql");
|
|
2
|
+
module.exports = {
|
|
3
|
+
copy: async function (req, res) {
|
|
4
|
+
try {
|
|
5
|
+
const params = req.params;
|
|
6
|
+
const userSession = req.user;
|
|
7
|
+
const recordId = params._id;
|
|
8
|
+
const steedosSchema = objectql.getSteedosSchema();
|
|
9
|
+
const pdObj = steedosSchema.getObject('process_definition');
|
|
10
|
+
const pnObj = steedosSchema.getObject('process_node');
|
|
11
|
+
const nowTime = new Date().getTime();
|
|
12
|
+
let pd = await pdObj.findOne(recordId, undefined, userSession);
|
|
13
|
+
delete pd._id;
|
|
14
|
+
pd.name = `pd_${nowTime}`; // 名称长度不能大于20个字符;名称只能包含小写字母、数字,必须以字母开头,不能以下划线字符结尾或包含两个连续的下划线字符
|
|
15
|
+
pd.active = false; // 批准过程已启用或者已提交过审批, 禁止添加、删除批准步骤
|
|
16
|
+
let newPD = await pdObj.insert(pd);
|
|
17
|
+
let newPDID = newPD._id;
|
|
18
|
+
let pns = await pnObj.find({ filters: ['process_definition', '=', recordId] }, userSession);
|
|
19
|
+
for (let index = 0; index < pns.length; index++) {
|
|
20
|
+
let pn = pns[index];
|
|
21
|
+
delete pn._id;
|
|
22
|
+
pn.process_definition = newPDID;
|
|
23
|
+
pn.name = `pn_${nowTime}_${index}`;
|
|
24
|
+
const now = new Date();
|
|
25
|
+
pn.created = now;
|
|
26
|
+
pn.created_by = userSession.userId
|
|
27
|
+
pn.modified = now;
|
|
28
|
+
pn.modified_by = userSession.userId
|
|
29
|
+
await pnObj.directInsert(pn);
|
|
30
|
+
}
|
|
31
|
+
res.status(200).send({ _id: newPDID });
|
|
32
|
+
} catch (error) {
|
|
33
|
+
console.error(error);
|
|
34
|
+
res.status(400).send({
|
|
35
|
+
error: error.message
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
name: process_definition
|
|
2
|
+
label: Approval Processes
|
|
3
|
+
hidden: true
|
|
4
|
+
icon: approval
|
|
5
|
+
enable_inline_edit: false
|
|
6
|
+
version: 2
|
|
7
|
+
fields:
|
|
8
|
+
name:
|
|
9
|
+
type: text
|
|
10
|
+
required: true
|
|
11
|
+
label:
|
|
12
|
+
type: text
|
|
13
|
+
required: true
|
|
14
|
+
is_name: true
|
|
15
|
+
object_name:
|
|
16
|
+
type: lookup
|
|
17
|
+
required: true
|
|
18
|
+
is_wide: true
|
|
19
|
+
filterable: true
|
|
20
|
+
create: false
|
|
21
|
+
# reference_to: objects
|
|
22
|
+
reference_to_field: name
|
|
23
|
+
optionsFunction: !!js/function |
|
|
24
|
+
function(){
|
|
25
|
+
return Steedos.getObjectsOptions();
|
|
26
|
+
}
|
|
27
|
+
description:
|
|
28
|
+
label: Description
|
|
29
|
+
type: textarea
|
|
30
|
+
is_wide: true
|
|
31
|
+
order: #TODO 必须是连续的数字
|
|
32
|
+
type: number
|
|
33
|
+
required: true
|
|
34
|
+
scale: 0
|
|
35
|
+
min: 1
|
|
36
|
+
active:
|
|
37
|
+
type: boolean
|
|
38
|
+
label: Active
|
|
39
|
+
# hidden: true
|
|
40
|
+
# omit: true
|
|
41
|
+
readonly: true
|
|
42
|
+
defaultValue: false
|
|
43
|
+
visible_on: "{{global.mode ==='read' ? true : false}}"
|
|
44
|
+
entry_criteria:
|
|
45
|
+
type: textarea
|
|
46
|
+
label: Specify Entry Criteria
|
|
47
|
+
is_wide: true
|
|
48
|
+
required: true
|
|
49
|
+
# group: Specify Entry Criteria
|
|
50
|
+
inlineHelpText: If only certain types of records should enter this approval process, enter that criteria below. For example, only expense reports from employees at headquarters should use this approval process.
|
|
51
|
+
# user_hierarchy_field:
|
|
52
|
+
# type: text
|
|
53
|
+
# is_wide: true
|
|
54
|
+
# label: Next Automated Approver Determined By
|
|
55
|
+
# inlineHelpText: 可选项为对象的所有人员字段
|
|
56
|
+
# group: next Automated Approver TODO
|
|
57
|
+
# use_approver_field_of_record_owner:
|
|
58
|
+
# type: boolean
|
|
59
|
+
# is_wide: true
|
|
60
|
+
# label: Use Approver Field of Record Owner
|
|
61
|
+
# group: next Automated Approver TODO
|
|
62
|
+
record_editability:
|
|
63
|
+
type: select
|
|
64
|
+
is_wide: true
|
|
65
|
+
required: true
|
|
66
|
+
firstOption: false
|
|
67
|
+
defaultValue: admin_only
|
|
68
|
+
inlineHelpText: When a record is submitted for approval, it’s locked to prevent users from editing it during the approval process. Use the record editability properties to determine who can edit records that are locked in this approval process.
|
|
69
|
+
label: Record Editability Properties
|
|
70
|
+
options:
|
|
71
|
+
- label: Administrators ONLY can edit records during the approval process
|
|
72
|
+
value: admin_only
|
|
73
|
+
# - label: Administrators OR the currently assigned approver can edit records during the approval process.
|
|
74
|
+
# value: admin_or_current_approver
|
|
75
|
+
# approval_page_fields:
|
|
76
|
+
# type: text
|
|
77
|
+
# is_wide: true
|
|
78
|
+
# group: 选择要在批准页面布局上显示的字段 TODO
|
|
79
|
+
# # type: lookup
|
|
80
|
+
# # reference_to: object_layout
|
|
81
|
+
# label: Select Fields to Display on Approval Page Layout
|
|
82
|
+
# inlineHelpText: The approval page is where an approver will actually approve or reject a request. Using the options below, choose the fields to display on this page.
|
|
83
|
+
# show_approval_history:
|
|
84
|
+
# type: boolean
|
|
85
|
+
# is_wide: true
|
|
86
|
+
# label: Display approval history information in addition to the fields selected above.
|
|
87
|
+
# group: 选择要在批准页面布局上显示的字段 TODO
|
|
88
|
+
# allowed_submitters:
|
|
89
|
+
# type: text
|
|
90
|
+
# multiple: true
|
|
91
|
+
# is_wide: true
|
|
92
|
+
# group: 指定初始提交人 TODO
|
|
93
|
+
# inlineHelpText: 指定谁可以提交记录到批准过程。 如果该列表中不包括提交记录以待批准的用户,记录不会进入该批准过程,即使记录满足进入条件。
|
|
94
|
+
allow_recall:
|
|
95
|
+
type: boolean
|
|
96
|
+
is_wide: true
|
|
97
|
+
label: Allow submitters to recall approval requests
|
|
98
|
+
# group: 提交设置
|
|
99
|
+
initial_submission_record_lock:
|
|
100
|
+
type: select
|
|
101
|
+
# required: true
|
|
102
|
+
firstOption: false
|
|
103
|
+
options:
|
|
104
|
+
- label: Lock the record from being edited
|
|
105
|
+
value: lock
|
|
106
|
+
- label: Unlock the record for editing
|
|
107
|
+
value: unlock
|
|
108
|
+
defaultValue: lock
|
|
109
|
+
readonly: true
|
|
110
|
+
label: Record Lock
|
|
111
|
+
group: Initial Submission Actions
|
|
112
|
+
initial_submission_updates_field_actions:
|
|
113
|
+
type: lookup
|
|
114
|
+
multiple: true
|
|
115
|
+
label: Field Update
|
|
116
|
+
reference_to: action_field_updates
|
|
117
|
+
reference_to_field: name
|
|
118
|
+
depend_on:
|
|
119
|
+
- object_name
|
|
120
|
+
filtersFunction: !!js/function |
|
|
121
|
+
function (filters, dependValues) {
|
|
122
|
+
if(dependValues && dependValues.object_name){
|
|
123
|
+
return "object_name eq '" + dependValues.object_name + "'";
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
group: Initial Submission Actions
|
|
127
|
+
initial_submission_workflow_notifications_actions:
|
|
128
|
+
type: lookup
|
|
129
|
+
multiple: true
|
|
130
|
+
label: Workflow Notification
|
|
131
|
+
reference_to: workflow_notifications
|
|
132
|
+
reference_to_field: name
|
|
133
|
+
depend_on:
|
|
134
|
+
- object_name
|
|
135
|
+
filtersFunction: !!js/function |
|
|
136
|
+
function (filters, dependValues) {
|
|
137
|
+
if(dependValues && dependValues.object_name){
|
|
138
|
+
return "object_name eq '" + dependValues.object_name + "'";
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
group: Initial Submission Actions
|
|
142
|
+
final_approval_record_lock:
|
|
143
|
+
type: select
|
|
144
|
+
required: true
|
|
145
|
+
firstOption: false
|
|
146
|
+
options:
|
|
147
|
+
- label: Lock the record from being edited
|
|
148
|
+
value: lock
|
|
149
|
+
- label: Unlock the record for editing
|
|
150
|
+
value: unlock
|
|
151
|
+
defaultValue: lock
|
|
152
|
+
label: Record Lock
|
|
153
|
+
group: Final Approval Actions
|
|
154
|
+
final_approval_updates_field_actions:
|
|
155
|
+
type: lookup
|
|
156
|
+
multiple: true
|
|
157
|
+
label: Field Update
|
|
158
|
+
reference_to: action_field_updates
|
|
159
|
+
reference_to_field: name
|
|
160
|
+
depend_on:
|
|
161
|
+
- object_name
|
|
162
|
+
filtersFunction: !!js/function |
|
|
163
|
+
function (filters, dependValues) {
|
|
164
|
+
if(dependValues && dependValues.object_name){
|
|
165
|
+
return "object_name eq '" + dependValues.object_name + "'";
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
group: Final Approval Actions
|
|
169
|
+
final_approval_workflow_notifications_actions:
|
|
170
|
+
type: lookup
|
|
171
|
+
multiple: true
|
|
172
|
+
label: Workflow Notification
|
|
173
|
+
reference_to: workflow_notifications
|
|
174
|
+
reference_to_field: name
|
|
175
|
+
depend_on:
|
|
176
|
+
- object_name
|
|
177
|
+
filtersFunction: !!js/function |
|
|
178
|
+
function (filters, dependValues) {
|
|
179
|
+
if(dependValues && dependValues.object_name){
|
|
180
|
+
return "object_name eq '" + dependValues.object_name + "'";
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
group: Final Approval Actions
|
|
184
|
+
final_rejection_record_lock:
|
|
185
|
+
type: select
|
|
186
|
+
required: true
|
|
187
|
+
firstOption: false
|
|
188
|
+
options:
|
|
189
|
+
- label: Lock the record from being edited
|
|
190
|
+
value: lock
|
|
191
|
+
- label: Unlock the record for editing
|
|
192
|
+
value: unlock
|
|
193
|
+
defaultValue: unlock
|
|
194
|
+
label: Record Lock
|
|
195
|
+
group: Final Rejection Actions
|
|
196
|
+
final_rejection_updates_field_actions:
|
|
197
|
+
type: lookup
|
|
198
|
+
multiple: true
|
|
199
|
+
label: Field Update
|
|
200
|
+
reference_to: action_field_updates
|
|
201
|
+
reference_to_field: name
|
|
202
|
+
depend_on:
|
|
203
|
+
- object_name
|
|
204
|
+
filtersFunction: !!js/function |
|
|
205
|
+
function (filters, dependValues) {
|
|
206
|
+
if(dependValues && dependValues.object_name){
|
|
207
|
+
return "object_name eq '" + dependValues.object_name + "'";
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
group: Final Rejection Actions
|
|
211
|
+
final_rejection_workflow_notifications_actions:
|
|
212
|
+
type: lookup
|
|
213
|
+
multiple: true
|
|
214
|
+
label: Workflow Notification
|
|
215
|
+
reference_to: workflow_notifications
|
|
216
|
+
reference_to_field: name
|
|
217
|
+
depend_on:
|
|
218
|
+
- object_name
|
|
219
|
+
filtersFunction: !!js/function |
|
|
220
|
+
function (filters, dependValues) {
|
|
221
|
+
if(dependValues && dependValues.object_name){
|
|
222
|
+
return "object_name eq '" + dependValues.object_name + "'";
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
group: Final Rejection Actions
|
|
226
|
+
recall_record_lock:
|
|
227
|
+
type: select
|
|
228
|
+
# required: true
|
|
229
|
+
firstOption: false
|
|
230
|
+
options:
|
|
231
|
+
- label: Lock the record from being edited
|
|
232
|
+
value: lock
|
|
233
|
+
- label: Unlock the record for editing
|
|
234
|
+
value: unlock
|
|
235
|
+
defaultValue: unlock
|
|
236
|
+
readonly: true
|
|
237
|
+
label: Record Lock
|
|
238
|
+
group: Recall Actions
|
|
239
|
+
recall_updates_field_actions:
|
|
240
|
+
type: lookup
|
|
241
|
+
multiple: true
|
|
242
|
+
label: Field Update
|
|
243
|
+
reference_to: action_field_updates
|
|
244
|
+
reference_to_field: name
|
|
245
|
+
depend_on:
|
|
246
|
+
- object_name
|
|
247
|
+
filtersFunction: !!js/function |
|
|
248
|
+
function (filters, dependValues) {
|
|
249
|
+
if(dependValues && dependValues.object_name){
|
|
250
|
+
return "object_name eq '" + dependValues.object_name + "'";
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
group: Recall Actions
|
|
254
|
+
recall_workflow_notifications_actions:
|
|
255
|
+
type: lookup
|
|
256
|
+
multiple: true
|
|
257
|
+
label: Workflow Notification
|
|
258
|
+
reference_to: workflow_notifications
|
|
259
|
+
reference_to_field: name
|
|
260
|
+
depend_on:
|
|
261
|
+
- object_name
|
|
262
|
+
filtersFunction: !!js/function |
|
|
263
|
+
function (filters, dependValues) {
|
|
264
|
+
if(dependValues && dependValues.object_name){
|
|
265
|
+
return "object_name eq '" + dependValues.object_name + "'";
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
group: Recall Actions
|
|
269
|
+
|
|
270
|
+
relatedList:
|
|
271
|
+
- process_node
|
|
272
|
+
# - action_field_updates
|
|
273
|
+
list_views:
|
|
274
|
+
all:
|
|
275
|
+
label: All
|
|
276
|
+
filter_scope: space
|
|
277
|
+
filter_fields:
|
|
278
|
+
- object_name
|
|
279
|
+
columns:
|
|
280
|
+
- label
|
|
281
|
+
- name
|
|
282
|
+
- object_name
|
|
283
|
+
- order
|
|
284
|
+
- description
|
|
285
|
+
- active
|
|
286
|
+
actions:
|
|
287
|
+
enable:
|
|
288
|
+
label: Enable
|
|
289
|
+
on: record
|
|
290
|
+
disable:
|
|
291
|
+
label: Disable
|
|
292
|
+
on: record
|
|
293
|
+
copy:
|
|
294
|
+
label: Copy
|
|
295
|
+
on: record
|
|
296
|
+
customize:
|
|
297
|
+
label: Customize
|
|
298
|
+
on: record
|
|
299
|
+
permission_set:
|
|
300
|
+
user:
|
|
301
|
+
allowCreate: false
|
|
302
|
+
allowDelete: false
|
|
303
|
+
allowEdit: false
|
|
304
|
+
allowRead: true
|
|
305
|
+
modifyAllRecords: false
|
|
306
|
+
viewAllRecords: true
|
|
307
|
+
admin:
|
|
308
|
+
allowCreate: true
|
|
309
|
+
allowDelete: true
|
|
310
|
+
allowEdit: true
|
|
311
|
+
allowRead: true
|
|
312
|
+
modifyAllRecords: true
|
|
313
|
+
viewAllRecords: true
|