如何获取控制器中流程实例的ID?

2024-04-11

我的环境:

Alfresco Share v5.2.d(r134641-b15、Aikau 1.0.101.3、Spring Surf 5.2.d、Spring WebScripts 6.13、Freemarker 2.3.20-alfresco-patched、Rhino 1.7R4-alfresco-patched、Yui 2.9.0-alfresco-20141223)

Alfresco 社区 v5.2.0 (r134428-b13) 架构 10005

当我启动工作流程时,我可以分配执行者 - 将参与业务流程的用户列表。我需要获取所有这些用户的列表,并在 reviewTask 屏幕中显示该列表。

为了显示此数据,我有自定义 FreeMarker 模板。我将从此模板中调用我的 Web 脚本。

为了通过 REST 与存储库交互,我使用 Web 脚本框架 MVC - 该控制器执行接收用户列表和 JSON 响应的 FreeMarker 模板的逻辑。

我已被提供好主意 https://stackoverflow.com/questions/42745913/how-to-queries-all-the-assignments-from-the-repository,如何做到这一点。但我遇到了一些问题。

假设我启动了业务流程的多个实例。在工作流控制台中我可以看到以下内容:

id: activiti$1801 , desc: DESCRIPTION_1 , start date: Sun Mar 12 19:19:09 GST 2017 , def: activiti$activitiParallelReview v1
id: activiti$2005 , desc: DESCRIPTION_2 , start date: Sun Mar 12 20:11:57 GST 2017 , def: activiti$activitiParallelReview v1
id: activiti$2138 , desc: DESCRIPTION_3 , start date: Sun Mar 12 20:12:55 GST 2017 , def: activiti$activitiParallelReview v1

因此我有三个ID:

activiti$1801
activiti$2005
activiti$2138

这些 ID 仅在工作流程控制台中可供我使用。

如何在控制器中获取这些标识符?

例如,我可以编写一个由 Activiti 调用的类吗?比方说,

public class SomeListener implements TaskListener {
...
    @Override
    public void notify(DelegateTask task) {
        ...
        String taskId = task.getId();
        ...
    }
}   

然后将其附加到某个任务的完成事件并将 ID 传递给控制器​​。

这是正确的方法吗?...

我将非常感谢您提供的信息。谢谢大家。


我写了一个类来实现ExecutionListener http://docs.alfresco.com/5.1/concepts/wf-process-def-listeners-execution.html界面。然后将其添加为转换的侦听器mswf:submitParallelReviewTask to mswf:activitiReviewTask.

我需要的所有属性,我都可以在这里获得(感谢加格拉瓦尔 https://stackoverflow.com/users/685641/gagravarr为了他的answer https://stackoverflow.com/questions/33798544/alfresco-get-username-in-workflow):

public class PropertiesReceiver implements ExecutionListener {
    private static final long serialVersionUID = 1L;
    private static Log logger = LogFactory.getLog(PropertiesReceiver.class);

    @Override
    public void notify(DelegateExecution delegateExecution) throws Exception {
        // TODO Auto-generated method stub
        String processInstanceId = delegateExecution.getProcessInstanceId();
        logger.debug("processInstanceId == " + processInstanceId);

        ActivitiScriptNodeList assignees = 
                (ActivitiScriptNodeList) delegateExecution.getVariable("bpm_assignees"); 
        for (ActivitiScriptNode personNode : assignees) {
            String username = (String) personNode.getProperties().get("cm:userName");
            logger.debug("username == " + username);
        }
    }
}

alfrescotomcat-stdout.2017-03-13.log:

...
2017-03-13 11:03:12,244  DEBUG [mswf.bpm.PropertiesReceiver] [http-apr-8080-exec-3] processInstanceId == 26205
2017-03-13 11:03:12,248  DEBUG [mswf.bpm.PropertiesReceiver] [http-apr-8080-exec-3] username == first
2017-03-13 11:03:12,250  DEBUG [mswf.bpm.PropertiesReceiver] [http-apr-8080-exec-3] username == second
...

但这是一个单独的项目,打包在 AMP 文件中。


好吧,另一种方式。我可以获取流程实例的 idScriptExecutionListener http://dev.alfresco.com/resource/docs/java/org/alfresco/repo/workflow/activiti/listener/ScriptExecutionListener.html:

execution.getProcessInstanceId();

并打电话露天 REST API https://api-explorer.alfresco.com/api-explorer从共享端检索我需要的所有信息(感谢马丁·埃赫 https://community.alfresco.com/people/mehe).

例如,此调用允许获取所有执行程序:

http://localhost:8080/alfresco/api/-default-/public/workflow/versions/1/processes/26205/variables

,where 26205 == id流程实例的。

但是我应该在哪里保存这个 ID 才能从共享中访问它?我可以在工作流模型中添加方面吗?它是否正确?


请尝试这个。

public JSONObject test(String userName) {


        JSONObject allTasks = new JSONObject();

        companyHome = repository.getCompanyHome();
        try {
            List<WorkflowTask> wft=serviceRegistry.getWorkflowService().getAssignedTasks(userName,WorkflowTaskState.IN_PROGRESS );

                JSONArray ja = new JSONArray();
                System.out.println("WF sizes = "+wft.size());
                for (WorkflowTask  temp : wft) {
                    JSONObject userWFDetails = new JSONObject();

                    userWFDetails.put("taskId", temp.getId());
                    userWFDetails.put("taskDesc", temp.getDescription());
                    userWFDetails.put("wfInstanceId", temp.getPath().getInstance().getId());

                    System.out.println("wf tasks-"+temp);
                    System.out.println("task id-"+temp.getId());
                    System.out.println("wf instance id-"+temp.getPath().getInstance().getId());
                    System.out.println("wf path id-"+temp.getPath().getId());
                    ja.put(userWFDetails);
                }           
                allTasks.put("userTasksDetails", ja);
            } catch (Exception e) {
            e.printStackTrace();
        }
        return allTasks;
    }

传递您的用户名。您将获得所有用户任务详细信息。 json 格式的工作流实例详细信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取控制器中流程实例的ID? 的相关文章

  • springboot整合activiti7

    一 添加依赖
  • activiti学习--06流程变量:流程变量+变量的类型+流程变量api+设置流程变量1或2+查询流程变量的历史表

    流程变量 1流程变量的作用域范围是只对应一个流程实例 所以只要设置就行了 不用管在哪个阶段设置 2各个流程实例的流程变量是不相互影响的 3流程实例结束完成以后流程变量还保存在数据库中 存放到流程变量的历史表中 4基本类型设置流程变量 在ta
  • 《5分钟说完一个概念》:什么是Bootstrap采用

    想知道中国人的平均身高 群体均值 群体方差为 每次抽样 1000 人 抽样了 次 每次抽样的 1000人 的平均身高是一次随机抽样 这
  • Activiti / Camunda 用变量改变边界计时器

    我有一个关于 Activiti Camunda 中用户任务的计时器边界事件的特殊问题 启动流程时 我使用流程变量设置计时器持续时间 并使用边界定义中的表达式来解析该变量 边界事件是在用户任务上定义的
  • 如何获取具有特定关联类型 Alfresco 的所有子关联 (Java)

    我是java和Alfresco的新手 我有一个简单的问题 我需要获取关联类型 risposteAssociate 的noderef的所有子关联 在 Javascript 中我做了类似的事情 var risposte node childAs
  • 如何通过 RESTful API 在 Alfresco 中创建文件夹

    我在用新鲜文档适用于安卓 我可以使用以下 API 调用登录 Alfresco 服务器 GET alfresco service api login u username pw password 但是如何在 Alfresco 中创建新文件夹呢
  • Alfresco Workflow 表单中的多个受让人控件

    我需要构建一个工作流程 允许管理员在工作流程的第一个任务中从两个不同的组中选择两个受让人 我可以在一种表单中使用两个受让人控件吗 如何 你需要 在任务内容模型中 将 2 个受让人定义为任务类型的 2 个独立关联
  • cmis或web脚本使用?

    我想使用 alfresco 和 activiti 工作流引擎构建一个 JavaEE GED 应用程序 用于管理和监控组织的邮件 信件 传真 邮件等 由于我是 alfresco 的新手 我想知道在我的情况下与 alfresco 进行通信的最佳
  • 如何禁用 Alfresco 主菜单项?

    Alfresco Share 应用程序上的主菜单包含我们部署的项目团队希望禁用的几个项目 特别是 我的文件 和 共享文件 隐藏就足够了 但如果我们能完全禁用它们那就更好了 这些是用户无权访问的功能 他们所有的互动都应该通过网站进行 是否有支
  • 如何从远程服务器使用 file_get_contents 后获取文件的 mime 类型

    我正在从 Alfresco 读取 PHP 文件 然后将其输出到浏览器 唯一的问题是 mime 类型或文件的扩展名 这是我正在使用的代码
  • 如何将候选用户列表传递给 alfresco 中的 activiti 工作流任务?

    我希望能够传递作为任务候选者的用户列表 用户是从数据列表中检索的 不能作为一个组使用 Activiti candidateUsers 似乎是正确的方法 假设已获取用户并将其设置在变量 ipw reviwers 中
  • 如何管理露天的访问权限

    大家好 提前感谢您的帮助 我正在尝试在露天配置访问权限 但现在陷入了一个场景如果有人定义实现此功能的正确方法 那将会有很大帮助现在我的问题是 我想创建一个网站 所有用户都可以访问 然后将在该站点中创建文件夹和子文件夹 如果需要 我准备自定义
  • Ftp 仅在 .NET 4.0 中抛出 WebException

    我有以下 C 代码 当针对 NET Framework 3 5 或 2 0 编译时 它运行得很好 我没有针对 3 0 进行测试 但它很可能也能工作 问题是 当针对 NET Framework 4 0 构建时它会失败 FtpWebReques
  • Alfresco:定义新的控制参数

    我正在开发一个自定义表单控件 需要定义一个名为字符串类型的新控制参数helptext 我了解如何在我的 share config custom 中调用它 如何在我的自定义表单控件中使用它 但不知道如何最初声明它 我看到其他控制参数使用以下格
  • Activiti 6.0.0 完成任务时无法获取表单属性

    我是 Activiti 6 0 0 的新手 我创建了一个包含用户任务的进程 第二个用户任务有两个表单属性 但是当我完成第一个用户任务并尝试完成第二个用户任务时 表单属性不显示 我无法完成用户任务 下面是我的 bpm 流程
  • 开源 BPM 工具(如 Activiti、bonita)和 Windows Workflow Foundation 之间有什么区别

    我试图找到一个基于asp net的免费开源BPM工具 但不幸的是我没有找到这样的工具 但最近我读到一篇关于Windows Workflow Foundation的文章 那么它是否提供了类似于开源BPM工具如Activiti bonita J
  • 复杂的 Activiti + JPA 查询

    我们正在尝试在一个新项目中使用Activiti 我创建了一个设置 它通过 JPA 使用 Hibernate 来持久保存流程中涉及的实体 并且 JPA 与 Activiti 互连 因此我们可以将这些实体用作 JPA 变量 看 Activiti
  • Alfresco 和 Nuxeo 哪个更容易扩展? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在考虑做一个rewrite http kato agency blogspot com 2009 12 kato redesign html
  • 露天的类型和方面是什么?

    现在我开始与露天工作 但不清楚什么是类型 什么是方面 请详细举例 创建时的每个节点都有一个给定的类型 并且只有一种类型 例如 文档 或 文件夹 另一方面 一个节点可以有很多方面 例如 可标记 or and 可版本化 节点的节点类型可以随着时
  • 使用 C++ REST SDK Casablanca 发送 HTTP POST 请求以更新文件内容

    我正在尝试使用 C Rest sdk 更新 alfresco 服务器中的文件内容 我正在使用 alfresco CMIS url 发送请求 更具体地说 它是 Alfresco CMIS 浏览器绑定 我必须坚持浏览器绑定而不是原子绑定 当我发

随机推荐

  • cakephp - 获取表名称及其列详细信息

    有谁知道如何从模型名称获取表名称 另外我想获取该模型 表名称的所有列名称及其类型 是否有可能获得给定型号名称的此类详细信息 Thanks 表名 要获取该表 请参阅 this gt Model gt table 或者检查类变量的模型 useT
  • geocomplete 不是使用自动完成的函数

    您好 我正在使用自动填充代码 收到错误 geocomplete 不是一个函数 如果在本地 单独的文件 中使用它 它对我有用 可能是什么错误 function location geocomplete alert gine details g
  • 如何知道 RecyclerView / LinearLayoutManager 是否滚动到顶部或底部?

    目前我正在使用以下代码来检查是否应启用 SwipeRefreshLayout private void laySwipeToggle if mRecyclerView getChildCount 0 mRecyclerView getChi
  • 无法连接到数据库来执行身份功能

    我使用 ASP NET MVC5 创建了一个新应用程序 使用个人用户帐户来确保安全性 并使用代码优先迁移来进行模型 数据库建模 所有选项均为默认 我想为其设置自定义用户和角色 所以我使用创建了一个种子RoleManager and User
  • Mongodb findAndModify节点js

    以下代码在 Node js 中给了我一个异常 需要删除或更新 var args query id id update set data new true remove false db collection COLLECTION INVEN
  • 如何使用 PHP 将 XPath 表达式作为 XSL 参数传递?

    我有一个非常大的 XML 文件 我要从中提取信息 并将其转换为不同的 XML 格式 我已经完美地运行了转换本身 所以现在我想通过使用 PHP 传递变量来使其更加灵活select 标准 以下是我正在使用的工作 XSLT 代码 为简单起见 进行
  • ansible 有 yaml 编辑模块吗?

    我需要修改 yaml 文件 施洛德配置 http schleuder2 nadir org documentation v2 2 index html 并且我想从 ansible 剧本中执行此操作 是否有模块可以执行此操作 很难用谷歌搜索这
  • scanf("%d", &value) 中的字符输入[重复]

    这个问题在这里已经有答案了 简而言之 我的代码是 include
  • 非负矩阵分解中的评分预测

    我正在关注这个博客http www quuxlabs com blog 2010 09 matrix factorization a simple tutorial and implementation in python http www
  • 在Android Studio中编译Cordova时出现“java:package org.apache.cordova不存在”

    Android 开发世界的新手 我才刚刚开始 无论如何 我们正在努力 我已经下载了 Cordova 2 8 可能需要升级 Java JDK 1 7 和新的 Android Studio Andriod SDK 安装了所有 4 x 软件包 并
  • 通过 Jquery 从 Datebox 中清除日期

    下面的代码在日期框模式弹出窗口中显示一个按钮 但我想清除单击该按钮时的日期 我尝试了很多东西 但无法通过 jQuery 方法做到这一点
  • 函数只能在主线程中调用,为什么?

    在下面的代码中 我调用函数 displayMyAlertMessage 两次 我调用的第一个函数工作完美 但第二个函数给我一个错误 指出该函数只能从主线程调用 在我的情况下我该如何做到这一点 我正在使用这段代码 IBAction func
  • Android WebRTC 自定义捕获器

    我已经编译了 webRTC 演示应用程序 我看到捕获帧是由VideoCaptureAndroid java与本机代码紧密耦合的文件 我需要添加将我自己的帧推送到 webRTC 库以在视频通道上发送的功能 我可以用 C NDK 或 Java
  • linux 相当于“host.docker.internal”的东西是什么[重复]

    这个问题在这里已经有答案了 在 Mac 和 Windows 上可以使用host docker internal Docker 18 03 在容器内 是否有一种适用于 Linux 的工具可以开箱即用 无需传递环境变量或使用各种 CLI 命令提
  • HttpWebRequest.GetResponse() 失败时如何获取错误信息

    我正在启动 HttpWebRequest 然后检索它的响应 有时 我会收到 500 或至少 5 错误 但没有描述 我可以控制两个端点 并希望接收端获得更多信息 例如 我想将异常消息从服务器传递到客户端 使用 HttpWebRequest 和
  • MapBox水/陆检测

    我开始使用MapBox iOS SDK https www mapbox com mapbox ios sdk 有没有可能的方法通过坐标查询 MapView 并返回地形类型 水 土地 作为结果 我一直在读API doc https www
  • Spark 应用程序在 1 小时后在 EMR 中突然被终止,并且 livy 会话过期。原因和解决方案是什么?

    我在 AWS EMR 集群上使用 JupyterHub 我使用的是 EMR 版本 5 16 我使用 pyspark3 笔记本提交了 Spark 应用程序 我的应用程序正在尝试将 1TB 数据写入 s3 我正在使用 EMR 的自动缩放功能来缩
  • 检查 Android 中我的应用程序是否是首次用户

    在我的应用程序中 首先它显示一个启动屏幕 在另一项活动之后 必须显示我的主要活动 这是我的设计计划 第二个活动 即在主要活动之前 必须向应用程序的首次用户显示 如果他 她关闭应用程序 启动屏幕将自动重定向到主要活动 我该怎么做呢 有任何想法
  • 一台控制器多条路线

    我已经搜索了一段时间 但我似乎不知道这是否可能 我需要的是一个控制器用于两条不同的路径 我拥有的是一种模型 有两种类型 自己的和竞争的 所以我想要的是这样的两条路径 都到达一个控制器 example com hotels example c
  • 如何获取控制器中流程实例的ID?

    我的环境 Alfresco Share v5 2 d r134641 b15 Aikau 1 0 101 3 Spring Surf 5 2 d Spring WebScripts 6 13 Freemarker 2 3 20 alfres