メインコンテンツまでスキップ

Faasコネクタ-フォームインスタンスの一括新規追加

注: このopenapiをhttpコネクタとしてフロントエンド・データ・ソースで直接使用することはお勧めしません。このケースを参照してfaasコネクタを構成してから使用してください。そうしないと、systemtokenパラメータが漏洩し、アプリケーションのデータセキュリティを脅かす可能性があります。

1. 使用シーン

この開発言語の例: nodejs

この例では、ホッチキスオープンプラットフォームopenapiを使用してフォームインスタンスを一括追加する方法について説明します。

2. 機能を実現する

2.1. ホッチキスのオープンプラットフォームの応用証明書とインタフェース権限を申請する

申請した場合、この手順は無視できます。

宜搭自定义连接器鉴权凭证申请及接口权限申请 | 钉钉宜搭·帮助中心

2.2. Faasコネクタの作成と構成

この例で使用するインタフェース:

注意:

  1. 検証ルール、関連ビジネスルール、サードパーティのサービスコールバックを実行しないことを選択した場合 (Noexecuteexpression: true) 、同期/非同期一度にフォームインスタンスを一括作成するために許可される数は500件です。
  2. 検証ルール、関連ビジネスルール、サードパーティのサービスコールバックの実行を選択した場合 (Noexecuteexpression: false)
    1. 同期を選択した場合 (Asynchronousexecution: false) 、一度に50本許可します。
    2. 非同期を選択した場合 (Asynchronousexecution: true) 、一度に200本許可します。

詳しくは:

2.2.1. Faasコネクタの作成

2.2.2. コネクタの基本情報と開発言語の設定

2.2.3. コネクタの設定アクションの実行

Bodyを解析し、成功フラグビットを設定することに注意してください。

{
"noExecuteExpression" : true,
"formUuid" : "String",
"appType" : "String",
"asynchronousExecution" : true,
"keepRunningAfterException" : true,
"formDataJsonList" : "Array of String"
}
{
"success": true,
"content": [ "FINST-XXXXXXX" ],
"error": ""
}

2.3. Faasコネクタの開発

2.3.1. クラウドideの開発に行き、Dingopenapiutil.jsファイルにコードを追加します

追加が完了したら保存する必要があります。

Windows: ctrl + s Mac:Command + s

次のコードをコピーして、上の図に示す「batchsaveformdata」全体を置き換えます。

batchSaveFormData: async function (batchSaveFormDataInputs) {
let client = createClient();
let batchSaveFormDataHeaders = new $dingtalkyida_1_0.BatchSaveFormDataHeaders({});
batchSaveFormDataHeaders.xAcsDingtalkAccessToken = innerGetAccessToken();
let batchSaveFormDataRequest = new $dingtalkyida_1_0.BatchSaveFormDataRequest(batchSaveFormDataInputs);
try {
const result = await client.batchSaveFormDataWithOptions(batchSaveFormDataRequest, batchSaveFormDataHeaders, new $Util.RuntimeOptions({}));
return result.body.result;
} catch (err) {
if (!Util.empty(err.code) && !Util.empty(err.message)) {
// err 中含有 code 和 message 属性,可帮助开发定位问题
}
throw err;
}
return null;
}

2.3.2. Faasentry.jsファイルのコードを完全に置き換えます

状況に応じて固定パラメータを変更することに注意してください。

Appkey、appsecretは2.1が申請したアプリケーション証明書です。

Systemtokenは、適切なアプリケーション設定-導入運送次元で直接見つけることができます。

const { openApi: OpenAPIUtil, yidaConnector: YidaConnectorUtil, httpUtil: HttpUtil } = require('./utils');
// 注意:涉及数据安全的参数(如:appKey、appSecret、systemToken)一定要在服务端发送,不可在前端数据源里传入。
const appKey = 'XXXXXXXXXXXXXXXXXXXXXX';
const appSecret = 'XXXXXXXXXXXXXXXXXXXXXXXXX';
const systemToken = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';

module.exports = async function (faasInputs) {
// 这里的 inputs 跟你配置连接器时的 Body 参数及字段格式保持一致
const { inputs = {}, yidaContext = {} } = faasInputs || {};
const userId = yidaContext ? yidaContext['userId'] : ''; // 从连接器上下文获取调用人的 userId
const accessToken = yidaContext ? yidaContext['accessToken'] : '';
const consumeCode = yidaContext ? yidaContext['consumeCode'] : '';
OpenAPIUtil.setAccessToken(accessToken);
await OpenAPIUtil.getCustomAccessTokenThenCache(appKey, appSecret); // 获取调用连接器的 accessToken
YidaConnectorUtil.setConsumeCode(consumeCode);
inputs['systemToken'] = systemToken;
inputs['userId'] = userId;
return await batchSaveFormData(inputs).then((result) => {
return {
success: true,
content: result,
error: null,
};
}).catch((error) => {
return {
success: false,
content: null,
error,
};
});
};

async function batchSaveFormData(inputs) {
return await OpenAPIUtil.batchSaveFormData(inputs);
}

2.4. Faasコネクタの導入

追加したコードを保存することに注意してください。

ヒントコードの導入が成功すると、faasコネクタクラウドideの開発が完了します。

2.5. コネクタ設定に戻り、「保存」をクリックします

2.6. 適切なページでデータソースを設定し、データソースを使用します

2.6.1. データを取得してテーブルに表示します

次のケースを参考にしてください。この例は、次のケースに追加されたデータ機能のアップグレードです。

自定义页面表格实现数据管理页功能 | 钉钉宜搭·帮助中心

2.6.2. データソースで作成したばかりのコネクタを選択します

2.6.3. フロントエンドによるデータソースの直接呼び出し

// 触发批量新增
export function batchSaveFormData(formDataJsonList) {
this.dataSourceMap.batchSaveFormData.load({
inputs: JSON.stringify({
body: {
formUuid,
appType,
formDataJsonList,
noExecuteExpression: true,
asynchronousExecution: true,
keepRunningAfterException: true,
}
})
}).then(res => {
const { success, error } = res;
if (success) {
this.utils.toast({
title: '数据新增成功',
type: 'success'
});
setTimeout(() => {
this.fetchData();
}, 2000);
} else {
this.utils.toast({
title: error,
type: 'error',
});
};
}).catch(error => {
this.utils.toast({
title: error.message,
type: 'error'
});
});
}

// 批量新增数据--确定
export function onMoreListOk() {
// 需要校验组件的唯一标识集合
const fieldList = [
'tableField_lpamltk2'
];
// 调用表单校验函数
this.fieldsValidate(fieldList).then(errorList => {
setTimeout(() => {
if (errorList.length > 0) {
// 表单校验未通过,可做一些数据错误提示
this.utils.toast({
title: '请填写新增明细数据',
type: 'warring'
});
return;
};
// 表单校验通过,你的后续业务逻辑由此往下写
const addTableValue = this.$('tableField_lpamltk2').getValue()
const formDataJsonList = addTableValue.map((item) => {
return JSON.stringify({
textField_lcpug407: item.textField_lpamltk3, // 姓名
radioField_lcpusnic: item.radioField_lpamltk4 || '', // 性别
numberField_lcpusnib: item.numberField_lpamltk5 || '', // 年龄
employeeField_lpao1x8f: this.formatEmployeeFieldValue(item.employeeField_lpamltk7), // 负责人
departmentSelectField_lpao1x8h: item.departmentSelectField_lpamltk8[0] ? [item.departmentSelectField_lpamltk8[0].value] : [], // 所在部门
dateField_lpao1x8g: item.dateField_lpamltk6 || '', // 入职日期
})
})
this.batchSaveFormData(formDataJsonList)
this.$('dialog_lpamltk1').hide()
});
}, 0);
}
// fieldList:Array,需要校验组件的唯一标识集合
export async function fieldsValidate(fieldList = []) {
const result = [];
for (let i = 0; i < fieldList.length; i++) {
await this.$(fieldList[i]).validate((errors, values) => {
if (!errors) { return };
result.push({
fieldId: fieldList[i], // 组件标识
errors: this.utils.isMobile() ? errors.errors[fieldList[i]].errors : errors[fieldList[i]].errors // 校验错误信息
});
});
};
return result;
}
// 获取成员字段的 value --用于处理成员组件格式不一致
export function formatEmployeeFieldValue(userData) {
if (Array.isArray(userData)) {
return userData.length ? userData.map((item) => { return item.value; }) : '';
} else {
return userData ? [userData.value] : '';
}
}

3. 効果を実現する

4. オンラインで試遊する

Copyright © 2025钉钉(中国)信息技术有限公司和/或其关联公司浙ICP备18037475号-4