自动化操作
自动操作是可重复使用的组件,可在后台执行某种操作,如更新字段或发送电子邮件。创建自动操作后,将其添加到批准过程、工作流规则中。
字段更新
字段更新操作允许您自动更新字段值。您可以将字段更新与工作流规则、批准过程关联。
开始之前,检查要更新字段的类型。只读字段(如公式字段或自动编号字段)不可用于字段更新。
创建字段更新的途径
- 您可以在新建、编辑工作流规则时选择已有字段更新选项或创建新的字段更新操作并与之关联。此时会自动选中当前工作流规则基于的对象为该字段更新记录所基于的对象值并且锁定该选项不让更改。
- 您可以在新建、编辑批准过程时选择已有字段更新选项或创建新的字段更新操作并与之关联。此时会自动选中当前工作流规则基于的对象为该字段更新记录所基于的对象值并且锁定该选项不让更改。
- 您也可以在设置应用中定位到菜单
流程自动化-工作流操作-字段更新
,然后新建字段更新或编辑某条已有的字段更新记 录。这些字段更新记录都可以作为工作流规则、批准过程或其他自动过程的备选字段更新操作。
创建字段更新
- API名称:在 API 中输入引用该组件的唯一名称。API 名称只能包含小写字母、数字,必须以字母开头,不能以下划线字符结尾或包含两个连续的下划线字符。
- 显示名称:输入此字段更新的名称,下拉框选项或列表界面将显示该名称。
- 对象:该字段更新记录所基于的对象。
- 要更新的对象:选择您要更新其字段的对象,默认为当前选定的对象,您也可以改为选择主表/子表关系中的父对象。
- 要更新的字段:选择要更新的字段。只显示选定的“要更新的对象”中的字段。
- 新字段值类型:支持空值、使用公式设置新值、特定值三个选项。当选择第二个选项时,将根据后续填写的“公式”内容设置新字段值;当选择第三个选项时将使用后续填写的“指定新字段值”内容设置新字段值;如果需要清除该字段已有值为空,请选择第一个选项,但是该选项对必需字段、复选框和其他某些字段类型不可用。
- 公式:当上述“新字段值类型”选定为“使用公式设置新值”时,必填输入公式内容。值得注意的是此处公式内容可引用的字段是基于上述“要更新的对象”中选中的对象值,而不是“对象”中选中的对象值。
- 指定新字段值:当上述“新字段值类型”选定为“特定值”时,此处内容必填,其输入框将根据上述“要更新的字段”值的字段类型显示为不同的控件,比如布尔类型字段将显示为勾选框,日期时间类型 字段将显示为日期时间控件等。
- 描述:输入此字段更新的描述。
- 字段更改后重新评估工作流规则:选择是否希望在字段值更新后重新评估此对象上的工作流规则。如果选择此选项,则如果字段更新导致对字段值的更改,Steedos将重新评估该字段更新关联对象上的所有工作流规则,从而触发满足条件的所有工作流规则。
将操作与工作流规则和批准过程相关联
您可以在新建、编辑工作流规则或新建、编辑批准过程时选择已有字段更新选项或创建新的字段更新操作来与之关联。
跨对象字段更新
对于所有自定义对象和一些标准对象,您可以创建对子表记录的更改会更新相关主表记录上字段的操作。跨对象字段更新可用于自定义对象与自定义对象之间的主表/子表关系、自定义对象与标准对象之间的主表/子表关系以及标准对象与标准对象之间的主表/子表关系。
例如,在自定义招聘应用程序中,创建一个当候选人(子表)接受职位时将应用程序(主表)的状态设为“关闭” 的工作流规则。再比如,创建规则,以便在客户添加个案留言时将个案状态从“等待客户回复”更改为“进行中”。
重新评估工作流规则的字段更新
- 如果在字段更新操作中启用字段更改后重新评估工作流规则,则如果字段更新导致对字段值的更改,Steedos将重新评估字段更新关联对象上的所有工作流规则。
- 如果任何触发的工作流规则导致另一个字段更新,该字段更新也支持工作流规则重新评估,那么就会发生多米诺效应,由于新触发的字段更新,更多的工作流规则可以重新评估。这种工作流规则重新评估和触发的级联在启动它的初始字段更新之后最多可以发生五次。
- 确保您的工作流规则没有设置为创建递归循环。例如,如果Rule1的字段更新触发了Rule2,而Rule2的字段更新触发了Rule1,那么递归触发器虽然做了限制最多只会触发5次,但是这不只会影响性能,也可能造成因为触发了最大循环次数而忽略了后续部分流程规则的重新评估。
- 是否勾选字段更新上的"字段更改后重新评估工作流规则"选项,只标识是否重新评估字段更新关联对象上的工作流规则。
- 字段更新配置的要更新的对象不是字段更新本身的关联对象时,如果勾选"字段更改后重新评估工作流规则"选项,保存字段更新记录时会报错,因为不支持也不需要重新评估跨对象的字段更新关联对象上的工作流规则。
- 字段更新配置的要更新的对象不是字段更新本身的关联对象时,始终不会重新评估字段更新本身关联对象上的流程规则,但是始终会重新评估要更新的对象上的工作流规则。
字段更新操作的注意事项
了解如何在工作流中充分利用字段更新操作,在为工作流规则或批准过程创建字段更新时,请考虑以下事项:
字段更新处理
- 如果单个工作流规则包含的多个字段更新对同一字段应用不同值,则字段更新的结果将不可预知。
- 字段更新可能会影响基于过滤条件的相关列表中的信息。例如,如果设置为要更新业务机会的某个字段(如金额或结束日期),它将影响业务机会的“阶段历史”相关列表,比如增加或减少了一些记录的显示。
- 工作流规则或批准过程中的字段更新无法验证此前有效的字段。出现失效错误的原因是,字段更新操作不会触发验证规则。
- 工作流规则可以使以前有效的字段失效。失效是因为根据工作流规则的操作对记录的更新不会触发验证规则。
关于跨对象字段更新的说明
- Steedos支持跨对象字段更新,即支持更新字段更新本身关联对象的父对象上的字段。
- 跨对象字段更新上不能勾选"字段更改后重新评估工作流规则"选项,因为不支持也不需要重新评估跨对象的字段更新关联对象上的工作流规则。
- 跨对象字段更新始终不会重新评估字段更新本身关联对象上的流程规则,但是始终会重新评估要更新的对象上的工作流规则。
- 当触发跨对象的字段更新时,不但会重新计算依赖了该字段的公式、累计汇总字段,其级联触发的字段更新操作也会级联触发相关公式、累计汇总字段的重新计算。
字段更新操作和自定义字段
- 更改自定义字段的类型之前,请确保它不是工作流字段更新的目标,也未被将在新类型下失效的字段更新公式所引用。
- 您无法删除被字段更新所引用的自定义字段。
字段更新操作限制
- 字段更新的结果不会触发其他规则,如验证规则。
- 公式、累计汇总、自动编号这些只读的字段类型不能用于字段更新操作,但是普通的只读字段是可以用于字段更新操作的。
- 如果字段更新引用了特定的用户,则不能停用该用户。例如,如果您的字段更新被设计为将记录的所有者更改为张三,那么在禁用张三这个用户之前请更改对应的字段更新。
- 如果一个字段被“将该字段设置为空值”的字段更新使用,则不应该将其设置为通用必填字段。
- 在触发字段更新时,只有字段值发生变化时才会触发更新操作,也才会进一步触发级联的其他操作,比如重新评估关联对象上的工作流规则,重新计算公式、累计汇总字段等。
工作流通知
通知操作允许您自动发送工作流通知给指定人员。您可以将工作流通知与工作流规则、批准过程关联。
创建工作流通知的途径
- 您可以在新建、编辑工作流规则时选择已有通知选项或创建新的通知操作并与之通过对象关联。
- 您可以在新建、编辑批准过程,批准步骤时选择已有通知选项或创建新的通知操作并与之通过对象关联。
- 您也可以在设置应用中定位到菜单
流程自动化-工作流操作-工作流通知
,然后新建通知或编辑某条已有的通知记录。这些记录都可以作为工作流规则、批准过程或其他自动过程的备选通知操作。
创建工作流通知
- 对象:该通知操作记录所基于的对象。
- API 名称:在 API 中输入引用该组件的唯一名称。API 名称只能包含小写字母、数字,必须以字母开头,不能以下划线字符结尾或包含两个连续的下划线字符,下拉框选项或列表界面将显 示该名称。
- 标题公式、正文公式:根据公式动态生成标题和正文。值得注意的是此处公式内容可引用的字段是所选对象的字段。
- 选择分配的用户:指定通知的接受者,可以是固定的人员,也可以根据对象的人员字段动态指定。
在工作流规则和批准过程中使用工作流通知
您可以在新建、编辑工作流规则或新建、编辑批准过程,批准步骤时,在各种操作分组中选择已有工作流通知选项或创建新的工作流通知操作。
有新消息到达时,Steedos 在页面右上角显示推送通知提醒,点击推送通知小铃铛图标,可以查看通知中心。
出站消息操作
出站消息会将信息发送到指定端点,例如外部服务。您可以从“设置”配置出站消息。您必须配置外部端点并且使用 HTTP API 为消息创建监听程序。您可以将出站消息与工作流规则关联。
创建出站消息的途径
- 您可以在设置应用中定位到菜单
流程自动化-工作 流操作-出站消息
,然后新建或编辑某条已有的出站消息记录。这些记录都可以作为工作流规则备选操作。
创建出站消息
- 对象:选择具有要包含在出站消息中的信息的对象。
- 显示名称:此出站消息的名称。
- API 名称:引用该组件的唯一名称。唯一名称字段可以只包括下划线和字母数字字符。它必须是以字母开头,不包括空格,不以下划线结束,同时不能包括两个连续的下划线。
- 描述:输入可让其他人轻松识别出站消息内容的描述。
- 端点 URL:输入消息收件人的端点 URL。魔方 会向该端点发送一则 HTTP POST 消息。
- 要发送的字段:选择要在出站消息中包含的字段。
- 应用:选择出站消息关联的应用,非必填,如果选择了应用则出站消息使用应用配置的API 密钥加密传输的消息。
在工作流规则中使用出站消息
您可以在新建、编辑工作流规则时,在各种操作分组中选择已有出站消息选项或创建新的出站消息操作。
端点 URL 解析示例
出站消息选择了关联应用,使用应用的API密钥解析消息:
// nodejs
const express = require("express");
const router = express.Router();
const jwt = require('jsonwebtoken');
router.post('/api/test', async function (req, res) {
console.log(req.body)
// {
// data: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvYmplY3RfbmFtZSI6InNwYWNlX3VzZXJzIiwiZG9jIjp7Il9pZCI6IkFGTkVuQ3hiU29HRWc0b2NmIiwibmFtZSI6Inh4eCIsInVzZXJuYW1lIjoieHh4eHh4IiwiZW1haWwiOiJzQHMuY29tIn0sImlhdCI6MTY2OTI2NjA0NiwiZXhwIjoxNjY5MjY5NjQ2fQ.qeld2kTl5zjLGjCWgk3cb6UPEPlqmzMaME20mo_t-t4'
// }
const payload = jwt.verify(req.body.data, 'app_api_secret') // app_api_secret 为应用的API密钥
console.log(payload)
// {
// object_name: 'space_users',
// doc: {
// _id: 'AFNEnCxbSoGEg4ocf',
// name: 'xxx',
// username: 'xxxxxx',
// email: 's@s.com'
// },
// iat: 1669266046,
// exp: 1669269646
// }
res.status(200).send({ message: 'router ok' });
});
exports.default = router;
出站消息未关联应用:
// nodejs
const express = require("express");
const router = express.Router();
router.post('/api/test', async function (req, res) {
console.log(req.body)
// {
// data: {
// object_name: 'space_users',
// doc: {
// _id: 'AFNEnCxbSoGEg4ocf',
// name: 'xxx',
// username: 'xxxxxx',
// email: 's@s.com'
// },
// iat: 1669266046,
// exp: 1669269646
// }
// }
res.status(200).send({ message: 'router ok' });
});
exports.default = router;