SCSAI原生JavaScript使用指南

SCSAI原生JavaScript使用指南

1. 概述

本文档介绍了如何在前端PLM项目中使用现有的SCSAI原生JavaScript实现,避免重复开发连接和AML操作功能。

核心文件位置D:\n8nscsai\SCSAI\n8n\packages\nodes-base\nodes\SCSAI

2. 现有SCSAI原生JS功能

2.1 核心API连接 (GenericFunctions.ts)

GenericFunctions.ts 提供了完整的SCSAI API连接和AML操作功能:

#### 主要功能:

| 函数名 | 功能描述 | 参数 |

|--------|----------|------|

| SCSAIApiRequest | 核心API请求函数 | method: GET/POST
endpoint: API端点
aml: AML字符串 |

| executeAMLQuery | 执行AML查询 | context: 执行上下文
amlQuery: AML查询字符串 |

| batchWriteToSCSAI | 批量写入数据 | context: 执行上下文
items: 待写入的项目数组 |

| applyAML | 应用AML操作 | itemType: 对象类型
action: 操作类型(add/edit/delete)
data: 数据
id: 对象ID |

#### 连接配置:

API连接通过SCSAIApi凭证进行配置,包含以下参数:

  • URL: SCSAI服务器地址
  • 用户名
  • 密码
  • 数据库名称
  • 时区

2.2 原生JS执行器 (SCSAINativeJSExecutor.ts)

SCSAINativeJSExecutor.ts 提供了在SCSAI环境中执行JavaScript代码的功能:

#### 主要功能:

| 函数名 | 功能描述 |

|--------|----------|

| executeSCSAIJavaScript | 执行SCSAI原生JavaScript代码 |

| executeAMLQuery | 执行AML查询并返回结果 |

| batchWriteToSCSAI | 批量写入SCSAI数据库 |

| generateJSCodeExample | 生成JavaScript代码示例 |

| validateJSCodeSafety | 验证JavaScript代码安全性 |

3. 在前端PLM项目中使用

3.1 导入现有功能

在前端PLM项目中,可以通过相对路径导入现有功能:

``javascript

// 导入核心API连接功能

import { SCSAIApiRequest, applyAML, queryItems } from '../../nodes-base/nodes/SCSAI/GenericFunctions';

// 导入JavaScript执行器功能

import { executeSCSAIJavaScript, executeAMLQuery } from '../../nodes-base/nodes/SCSAI/SCSAINativeJSExecutor';

`

3.2 基本使用示例

#### 3.2.1 执行AML查询

`javascript

// 构建AML查询

const aml = '';

// 执行查询

const result = await executeAMLQuery(context, aml);

// 处理结果

if (result.success) {

console.log('查询结果:', result.result);

} else {

console.error('查询失败:', result.error);

}

`

#### 3.2.2 创建新对象

`javascript

// 创建对象数据

const itemData = {

name: 'New Item',

description: 'Test description',

status: 'active'

};

// 应用AML创建对象

const result = await applyAML(context, 'ItemType', 'add', itemData);

if (result) {

console.log('对象创建成功,ID:', result.id);

} else {

console.error('对象创建失败');

}

`

#### 3.2.3 执行SCSAI原生JavaScript

`javascript

// JavaScript代码

const jsCode =

// 创建新的Item

var newItem = SCSAI.newItem('ItemType', 'create');

newItem.setProperty('name', 'value');

newItem.setProperty('description', 'Item Description');

newItem.save();

console.log('Item created: ' + newItem.getID());

;

// 执行代码

const result = await executeSCSAIJavaScript(context, jsCode);

if (result.success) {

console.log('JavaScript执行成功:', result.result);

} else {

console.error('JavaScript执行失败:', result.error);

}

`

3.3 权限和安全

#### 3.3.1 凭证管理

确保在n8n配置中设置了SCSAIApi凭证,包含正确的连接信息。

#### 3.3.2 代码安全性

使用validateJSCodeSafety函数验证要执行的JavaScript代码安全性:

`javascript

const { safe, warnings } = validateJSCodeSafety(jsCode);

if (!safe) {

console.warn('代码包含安全风险:', warnings);

// 处理不安全代码

}

`

4. 扩展功能

4.1 创建自定义工具函数

如果需要在前端PLM项目中添加自定义功能,可以创建新的JS文件,但要确保不重复现有功能:

`javascript

// custom-SCSAI-utils.js

import { executeAMLQuery } from '../../nodes-base/nodes/SCSAI/SCSAINativeJSExecutor';

/**

  • 自定义查询函数 - 获取活跃的ItemType列表

*/

export async function getActiveItemTypes(context) {

const aml = '1';

const result = await executeAMLQuery(context, aml);

if (result.success) {

return result.result;

} else {

throw new Error(result.error);

}

}

`

4.2 错误处理

确保在使用SCSAI API时进行适当的错误处理:

`javascript

try {

const result = await executeAMLQuery(context, aml);

return result;

} catch (error) {

console.error('SCSAI API错误:', error);

// 错误处理逻辑

throw error;

}

`

5. 最佳实践

  1. 避免重复代码:始终使用现有的SCSAI原生JS实现,不要创建新的连接或AML操作功能
  2. 使用类型检查:如果使用TypeScript,确保导入正确的类型定义
  3. 安全优先:始终验证用户提供的JavaScript代码
  4. 适当日志:添加必要的日志记录以方便调试
  5. 错误处理:实现适当的错误处理机制

6. 参考文档

  • SCSAI API文档
  • n8n节点开发文档
  • packages/nodes-base/nodes/SCSAI目录下的源代码

7. 维护

如果现有功能需要更新或扩展,应直接在packages/nodes-base/nodes/SCSAI`目录中修改,确保所有项目都能受益于更新。

8. 联系信息

如有任何问题,请联系系统管理员或开发团队。

← 返回案例列表
分享:
🤖 Try Now →
🤖
🎁