相同内容可一键申请!一次管理多个应用的流程

betsy_yan发表于:2021年09月23日 15:46:07更新于:2022年03月09日 18:29:47

Index

前言

使用kintone的流程管理时,“我想向多个审批人申请相同的内容!”

“但是,由于应用是针对不同审批人进行划分的,所以需要多次提交相同的申请...。”

你有没有遇到过这样的场景?

(举例)对项目负责人的申请・对会计的申请・对法务的申请都由单独的应用管理。

在这种情况下,在每个应用中都创建相同内容的记录并执行流程就显得很麻烦。

为了省去这样的麻烦,本文为大家介绍一种自定义方法,可以自动创建另一个应用的记录并执行流程!

※ 使用 Internet Explorer 时,需使用 Webpack 和 Polyfill,比如 webpack入门 ~Babel,Polyfill为你带来美好的ES6体验~

申请流程图

我们将介绍使用2个应用,应用A和应用B,作为简单自定义的范例。

这次的自定义假设为以下流程。自定义的部分是假设的第二步。

  1. 申请者在应用A中添加一条记录,并执行流程

  2. 根据在应用A中输入的内容,在应用B中自动创建记录,并执行流程

  3. 应用A和应用B的各个审批人确认记录内容

001616fd6f40ac4b13a4d178ae86c6a

事前准备

应用的准备

请先准备用于自定义的应用!

这次试着使用一个简单的表单来实现自定义。

应用A

字段名称字段代码字段类型
申请标题申请标题A单行文本框
申请内容申请内容A多行文本框

 

应用B

字段名称字段代码字段类型
申请标题申请标题B单行文本框
申请内容申请内容B多行文本框

 

流程管理的设置

让我们在应用A和应用B中分别设置流程管理,如下所示。

应用A

001616e75731082c316ebabc30429ca

勾选“启用流程管理”。

状态“处理中”的执行者选择的是“以下用户中其中1人”,并设置为任何组织。

应用B

001616e76730e36f94114532d86b0fe

勾选“启用流程管理”。

状态“处理中”的执行者选择的是“以下用户中其中1人”,并设置为任何组织。


JavaScript 自定义

准备就绪后,开始添加 JavaScript 自定义。

将以下 JavaScript 应用到应用A。第14行修改为应用B的应用ID。

(应用ID为10时)

修改前:const appId = 'xxx';

修改后:const appId = '10';

/*
 * 应用中有正在执行的流程时,会自动为另一个应用创建记录并推进状态的范例程序
 * Copyright (c) 2021 Cybozu
 *
 * Licensed under the MIT License
 * https://opensource.org/licenses/mit-license.php
*/

(() => {
  'use strict';

  kintone.events.on('app.record.detail.process.proceed', event => {
    const action = event.action.value;
    const appId = 'xxx'; // 请替换为应用B的应用ID
    const params = {
      app: appId,
      record: {
        申请标题B: {
          value: event.record['申请标题A'].value
        },
        申请内容B: {
          value: event.record['申请内容A'].value
        }
      }
    };

    if (action !== '开始处理') {
      return event;
    }

    return kintone.api(kintone.api.url('/k/v1/record.json', true), 'POST', params).then(resp => {
      const recordId = resp.id;
      const paramStatus = {
        action: action,
        app: appId,
        id: recordId
      };
      return kintone.api(kintone.api.url('/k/v1/record/status.json', true), 'PUT', paramStatus);
    }).then(() => {
      alert('创建应用B的记录,并执行流程。');
      return event;
    }).catch(err => {
      console.log(err);
      return event;
    });
  });
})();


操作检查

完成自定义设置后,检查最后的操作。

在应用A中添加一条记录,然后点击“开始处理”。

当显示审批人的组织成员时,点击“确定”,提交审批。

当在应用B中创建记录和执行流程成功时,会弹出信息“创建应用B的记录,并执行流程。”

弹出这条信息。

001616e8075c3cc167ec34bfdadfecc

然后打开应用B,查看创建的记录。

如果流程管理的状态是“处理中”,并且申请标题和申请内容和应用A的记录内容一致就可以了!

001616e81dec87b6c75e5032a57f819

结束语

怎么样?这次介绍的自定义是同时进行2个应用的流程。

应用此自定义后,可以同时在3个或更多应用中执行流程,所以大家可以尝试一下!

注意事项

  • 范例程序不保证其能正常运行。

  • 才望子不为范例程序提供技术支持。

  • 本自定义仅适用于 PC 端。

  • 本自定义未兼容 Internet Explorer。

该Tips在2021年5月版 kintone 中进行过确认。


    注意:贴代码时请注意格式并使用"代码语言",与本文无关的问题请至“讨论社区”提问。
    您需要登录后才可以回复