Faasコネクタ-フォームインスタンスの一括削除
注: このopenapiをhttpコネクタとしてフロントエンド・データ・ソースで直接使用することはお勧めしません。このケースを参照してfaasコネクタを構成してから使用してください。そうしないと、systemtokenパラメータが漏洩し、アプリケーションのデータセキュリティを脅かす可能性があります。
1. 使用シーン
この開発言語の例: nodejs
この例では、ホッチキスオープンプラットフォームopenapiを使用してデータ一括削除フォームインスタンスを実現する方法を紹介します。
2. 機能を実現する
2.1. ホッチキスのオープンプラットフォームの応用証明書とインタフェース権限を申請する
申請した場合、この手順は無視できます。
宜搭自定义连接器鉴权凭证申请及接口权限申请 | 钉钉宜搭·帮助中心
2.2. Faasコネクタの作成と構成
この例で使用するコネクタ:
批量删除表单实例 - 开放平台
注意:
- 検証ルール、関連ビジネスルール、サードパーティのサービスコールバックを実行しないことを選択した場合 (Executeexpression: false) を選択すると、同期/非同期一度にフォームインスタンスを一括削除できる数は500件です。
- 検証ルール、関連ビジネスルール、サードパーティのサービスコールバックの実行を選択した場合 (Executeexpression: true)
- 同期を選択した場合 (Asynchronousexecution: false) 、一度に50本許可します。
- 非同期を選択した場合 (Asynchronousexecution: true) 、一度に300本許可します。
2.2.1. Faasコネクタの作成

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

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



Bodyを解析し、成功フラグビットを設定することに注意してください。
{
"formUuid" : "String",
"appType" : "String",
"asynchronousExecution" : true,
"formInstanceIdList" : "Array",
"executeExpression" : false
}
{
"success": true,
"error": ""
}
2.3. Faasコネクタの開発
2.3.1. クラウドideの開発に行き、Dingopenapiutil.jsファイルにコードを追加します

追加が完了したら保存する必要があります。
Windows: ctrl + s Mac:Command + s

batchRemoveFormData: async function (batchRemoveFormDataInputs) {
let client = createClient();
let batchRemovalByFormInstanceIdListHeaders = new $dingtalkyida_1_0.BatchRemovalByFormInstanceIdListHeaders({});
batchRemovalByFormInstanceIdListHeaders.xAcsDingtalkAccessToken = innerGetAccessToken();
let batchRemovalByFormInstanceIdListRequest = new $dingtalkyida_1_0.BatchRemovalByFormInstanceIdListRequest(batchRemoveFormDataInputs);
try {
const result = await client.batchRemovalByFormInstanceIdListWithOptions(batchRemovalByFormInstanceIdListRequest, batchRemovalByFormInstanceIdListHeaders, new $Util.RuntimeOptions({}));
return result;
} catch (err) {
if (!Util.empty(err.code) && !Util.empty(err.message)) {
// err 中含有 code 和 message 属性,可帮助开发定位问题
return {
code: err.code,
message: err.message
}
}
throw err;
}
return null;
},
2.3.2. Faasentry.jsファイルのコードを完全に置き換えます
状況に応じて固定パラメータを変更することに注意してください。
Appkey、appsecretは2.1が申請したアプリケーション証明書です。
Systemtokenは、適切なアプリケーション設定-導入運送次元で直接見つけることができます。

const { openApi: OpenAPIUtil, yidaConnector: YidaConnectorUtil, httpUtil: HttpUtil } = require('./utils');
const { ConnectorTypeEnum } = YidaConnectorUtil;
// 注意:涉及数据安全的参数(如:appKey、appSecret、systemToken)一定要在服务端发送,不可在前端数据源里传入。
const appKey = 'XXXXXXXXXXXXXX';
const appSecret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX';
const systemToken = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
module.exports = async function (faasInputs, context) {
// 这里的 inputs 跟你配置连接器时的 Body 参数及字段格式保持一致
const { inputs = {}, yidaContext = {} } = faasInputs || {};
const userId = yidaContext ? yidaContext['userId'] : ''; // 从连接器上下文获取调用人的 userId
const corpId = yidaContext ? yidaContext['corpId'] : ''; // 从连接器上下文获取调用组织的 corpId
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 batchDeleteFormData(inputs).then((result) => {
const { message = '' } = result;
return {
success: !message,
content: null,
error: message,
};
}).catch((error) => {
return {
success: false,
content: null,
error: error,
};
});
};
async function batchDeleteFormData(inputs) {
return await OpenAPIUtil.batchRemoveFormData(inputs);
}
2.4. Faasコネクタの導入
追加したコードを保存することに注意してください。

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

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

2.6. 適切なページでデータソースを設定し、データソースを使用します
2.6.1. データを取得してテーブルに表示します
次のケースを参考にしてください。この例は、次のケースのデータ削除機能のアップグレードです。
2.6.2. データソースで作成したばかりのコネクタを選択します

2.6.3. 一括削除確認弾倉の設定
次のように構成します:

2.6.4. トップアクションを設定し、次の関数をバインドします

// 批量删除弹窗
export function onBatchDeleteDataDialog() {
const { selectedRowKeys = [] } = this.state;
if (!selectedRowKeys.length) {
this.utils.toast({
title: '当前未选中任何数据',
type: 'warning',
});
return;
}
this.$('dialog_lpjg5aha').show(() => {
this.$('numberField_lpjg8ky1').setValue(selectedRowKeys.length);
});
}
2.6.5. 弾倉を一括削除する動作を設定し、次の関数をバインドします

// 确认批量删除
export function onBatchDeleteDataOk() {
const { selectedRowKeys = [] } = this.state;
this.$('dialog_lpjg5aha').set('confirmState', 'LOADING'); // 开启对话框加载状态
// 批量删除表单数据
this.dataSourceMap.batchDeleteData.load({
inputs: JSON.stringify({
body: {
formUuid, // 数据表formUuid
appType: pageConfig.appType, // 应用 appType
formInstanceIdList: selectedRowKeys, // 需要删除的数据实例id列表
asynchronousExecution: true, // 是否需要异步执行该任务
executeExpression: false, // 是否需要触发表单绑定的校验规则、关联业务规则和第三方服务回调
},
}),
}).then((res) => {
this.$('dialog_lpjg5aha').set('confirmState', 'NORMAL'); // 关闭对话框加载状态
const { success, error } = res;
if (success) {
this.$('dialog_lpjg5aha').hide();
this.utils.toast({
title: '批量删除成功',
type: 'success',
});
setTimeout(() => {
this.setState({
loading: true,
selectedRowKeys: [],
});
this.getData(); // 获取数据
}, 1000);
} else {
this.utils.toast({
title: error,
type: 'success',
});
}
}).catch(({ message }) => {
this.utils.toast({
title: message,
type: 'error',
});
this.$('dialog_lpjg5aha').set('confirmState', 'NORMAL'); // 关闭对话框加载状态
});
}
3. 効果を実現する



4. オンラインで試遊する
このドキュメントは役に立ちましたか?
