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/POSTendpoint: 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 = '
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. 最佳实践
- 避免重复代码:始终使用现有的SCSAI原生JS实现,不要创建新的连接或AML操作功能
- 使用类型检查:如果使用TypeScript,确保导入正确的类型定义
- 安全优先:始终验证用户提供的JavaScript代码
- 适当日志:添加必要的日志记录以方便调试
- 错误处理:实现适当的错误处理机制
6. 参考文档
- SCSAI API文档
- n8n节点开发文档
- packages/nodes-base/nodes/SCSAI
目录下的源代码
7. 维护
如果现有功能需要更新或扩展,应直接在packages/nodes-base/nodes/SCSAI`目录中修改,确保所有项目都能受益于更新。
8. 联系信息
如有任何问题,请联系系统管理员或开发团队。
BossAgents