2

我正在编写一个自定义操作按钮,我想进入我的javascript

(function() {
    YAHOO.Bubbling.fire("registerAction",
    {
        actionName: "onActionVerify",
        fn: function JSC_onActionVerify(record) {
             var ticket = sessiontickets.getTicket();
        }
    });
})();

我单击操作按钮的文件的路径,例如:

/数据字典/电子邮件模板/activities/activities-email.ftl

以及用于身份验证的票证。

我在共享客户端做这个。

两者都有解决方案吗?

我的问题没有重复,因为我想要操作中文件的路径,而我关于票证的问题是传递给 Web 服务......我需要的不仅仅是假设“重复”的问题......

4

1 回答 1

3

像往常一样,有不同的选择:

1)直接从浏览器调用您的外部服务。

在这种情况下,您可以生成票证并将其传递给服务。该服务将使用它来访问 alfresco。

要生成票证,您可以编写 webscript。带有返回 session.ticket 的 ftl 的非常简单的 webscript

您不需要发送用户名和密码,因为您可以使用 share 作为代理:您调用 /share/proxy/alfresco 而不是 /alfresco/service 并且调用会自动进行身份验证。

2)浏览器调用一个Alfresco webscript(使用共享作为代理)并且webscript调用你的外部服务。webscript 可以从会话中获取票证并将其传递给外部服务。

在单击操作时接收事件的函数,正如您在代码片段中所写的那样,接收一个参数:记录。

此对象的字段之一是文件的 nodeRef。为什么你认为你需要这条路?直接使用这个nodeRef不是更容易吗?

无论如何,如果你真的需要路径并且你选择了选项 1),当你调用 webscript 来获取票证时,也传递 nodeRef 并使 webscript 与票证一起返回节点的路径。所以你会打电话:

/share/proxy/alfresco/your-custom-webscript?nodeRef=workflow://SpaceStore/xxx...

并且 webscript 将返回一个 json,如:

{
    "ticket": "TICKET_121321_...",
    "qnamePath": "...."  
} 

如果您选择选项 2),请像前面的示例一样调用传递 nodeRef 的 webscript,该 webscript 将获取必要的信息并将其传递给外部服务。

于 2016-02-16T21:57:13.137 回答