找回密码
 注册成为天翎用户
查看: 586|回复: 1

[已解决] js能否调用脚本方法?

[复制链接]
京维智能 发表于 2020-6-15 10:49:02 | 显示全部楼层 |阅读模式
在线等 急急急急急急~!!!!

老帖

JS 调用脚本方法
http://www.teemlink.com/bbs/foru ... 3&fromuid=48808
(出处: 天翎MyApps)
admin 发表于 5 天前 | 显示全部楼层
【本回复由 AI 根据产品文档自动生成】

你好,关于"前端 JS 调用后台脚本方法"的问题,统一回答如下。

## 一、平台脚本执行机制

myApps/OBPM 平台脚本分两种:
- **前端 JS(浏览器执行)**:表单校验、UI 交互、动态显示
- **后台 Rhino 脚本(服务端执行)**:业务逻辑、数据库操作、流程操作

前端 JS **不能直接调用** Rhino 脚本(两者运行在不同 JVM/浏览器,无法互通)。但可以通过以下几种方式间接调用。

## 二、JS 调用后台脚本的 4 种方式

### 方式 1:通过视图按钮 / 动作触发(最常用)
- 表单中加一个按钮,按钮的动作 = 「执行脚本」
- 点击按钮 → 触发后台动作脚本 → 完成业务逻辑
- 前端 JS 可以通过 `document.getElementById('按钮ID').click()` 模拟点击

### 方式 2:通过 AJAX 接口
平台提供 REST API,前端可以发起 AJAX 请求:

```javascript
// 调用平台 REST API(4.x 路径示例)
var url = "/obpm/ajax/runtime/form/saveField.action";
$.ajax({
  url: url,
  type: "POST",
  data: { application: "xxx", field1: "value1" },
  success: function(resp) {
    // 处理返回
  }
});
```

### 方式 3:通过值变更脚本(隐式触发)
- 给一个隐藏字段写值
- 该字段在「值变更脚本」中写后台 Rhino 逻辑
- 前端 JS 改这个字段值时,自动触发后台脚本
```javascript
// 前端
document.getElementsByName("隐藏字段名")[0].value = "trigger";
// 触发 onchange 事件
```

### 方式 4:自定义 Servlet(高级)
- 在 `WEB-INF/lib` 中开发一个 Servlet,注册到 web.xml
- 通过 `Packages.cn.myapps.external.MyServlet` 在平台脚本中调用
- 适合复杂业务场景

## 三、不推荐的做法

- ❌ 直接在前端 JS 中写 Rhino 脚本(如 `Packages.cn.myapps...`)—— 浏览器无法识别
- ❌ 用 `<% %>` JSP 标签 —— 平台不支持自定义 JSP
- ❌ 把数据库密码、业务逻辑硬编码到前端 JS —— 安全风险

## 四、需要确认的需求
- 你具体想在前端做什么动作?(保存数据 / 调外部接口 / 触发流程 / 计算返回值)
- 是否需要返回值给前端?
- 当前版本是 4.x 还是 5.x?(5.x 推荐使用统一的 OpenAPI 体系)

参考文档:
http://docs.myapps.cn/
http://docs.myapps.cn/quick-start/dev-script/
http://docs.myapps.cn/quick-start/openapi/

把你的具体场景说一下,可以给出更针对性的方案。

本版积分规则

手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-19 20:29

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表