BonitaSoft社区版7.6.3创建CMIS连接器对接Alfresco 5.2的技术咨询
嘿,我刚好熟悉Bonita和Alfresco的对接场景,针对你遇到的旧版本CMIS连接器消失、UI Designer走不通的问题,用REST API确实是最靠谱的方案,我给你一步步拆解怎么实现:
1. 先明确Alfresco 5.2可用的REST API端点
Alfresco 5.2提供了原生的REST API(比CMIS绑定更直观),用来列出文件夹和文档的核心端点有两个:
- 获取根目录下的所有内容:
GET /alfresco/api/-default-/public/alfresco/versions/1/nodes/-root-/children - 获取指定文件夹下的内容:把上面URL里的
-root-替换成目标文件夹的nodeId即可,比如GET /alfresco/api/-default-/public/alfresco/versions/1/nodes/{folderId}/children
如果需要过滤(只看文件夹或只看文档),可以追加查询参数:
- 仅列出文件夹:
?include=properties&filter=cm:objectTypeId='cm:folder' - 仅列出文档:
?include=properties&filter=cm:objectTypeId='cm:content'
2. 在BonitaSoft 7.6.3中配置REST调用
Bonita 7.6.3自带了REST API Connector,直接用它来对接就行,步骤如下:
- 打开Bonita Studio,进入你的流程设计画布,从左侧工具栏拖拽「REST API Connector」到流程的合适位置(比如启动事件之后、或者某个用户任务之前)。
- 进入连接器的配置界面,先填基础信息:
- 请求方法:选择
GET - 请求URL:填入刚才的Alfresco API地址,记得替换成你的Alfresco主机地址(比如
http://192.168.1.100:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/-root-/children) - 认证方式:选「Basic Authentication」,填入Alfresco的用户名和密码(默认是admin/admin,生产环境记得用专用账号)
- 请求方法:选择
- (可选)如果需要分页或者更精细的过滤,在「Parameters」标签页添加对应的查询参数,比如
skipCount(跳过多少条)、maxItems(最多返回多少条)。
3. 处理API返回的结果
Alfresco的REST API会返回JSON格式的数据,Bonita可以把结果存储到流程变量里,方便后续使用:
- 切换到连接器的「Output」标签页,添加一个输出变量,比如命名为
alfrescoContentList,类型选择java.util.List或者org.json.JSONObject,对应API返回里的list.entries字段(这部分是具体的文件夹/文档列表)。 - 如果要在UI Designer的表单里展示这个列表,可以:
- 在表单中添加一个「重复控件(Repeat)」,绑定刚才的
alfrescoContentList变量。 - 在重复控件里添加文本组件,分别绑定每个条目的
entry.name(显示名称)和entry.id(显示节点ID,后续操作可能用到)。
- 在表单中添加一个「重复控件(Repeat)」,绑定刚才的
4. 避坑注意事项
- 确保Bonita服务器能访问到Alfresco的API地址,检查防火墙、端口是否开放(Alfresco默认端口8080)。
- 如果Alfresco开启了CSRF防护,需要先调用
GET /alfresco/api/-default-/public/alfresco/versions/1/csrf/token获取CSRF令牌,然后在后续的REST请求头里添加X-CSRF-Token字段,值为获取到的令牌。 - 跨域问题:如果Bonita和Alfresco部署在不同域名下,需要在Alfresco的
web.xml里配置CORS,允许Bonita的域名发起请求。
内容的提问来源于stack exchange,提问作者Patrícia Lopes
相关产品推荐
相关产品推荐

