与工作流无关的管理员任务

5 篇帖子 / 0 篇最新
最新文章
#1 周日, 03/15/2015 - 14:52
admin
admin的头像

与工作流无关的管理员任务

我有一款定制的 MVC 应用程序,能够向用户展示工作列表,并允许用户对各自的任务进行操作。我要实现的需求是提供以下功能:(1) 流程发起人能取消相应流程 (2) 有个管理员的组能编辑或者取消一个流程。之前我曾经考虑直接在START下创建一个 "Admin" 任务权限,用于创建管理员任务,MVC 应用能够从此处提供管理员功能。但是,这项任务可能对于某个流程来说并不是必须的,因此永远无法完成。我有相同的情况就是假设有一组人可能会被授予“调查”的任务,我根本不在乎他们有没有操作他们的任务,反而是根据流程的关键路径去完成。请问有没有一种方式去创建一个流程节点或者任务而不需要被执行的,而不影响流程主线路的完成?

周四, 04/09/2015 - 17:42
joyce2
joyce2的头像

您好Jensor,
如果我没有理解错的话,您提出的问题应该是指当主流程完成时,并行任务(子工作流)对于发起人和管理员组仍然可用。
如果想要解决这一问题,
1. 创建一项Place holder 节点,并且命名为 "Completed"。不要向这项活动添加任何流程的线。
2. 创建一个虚拟的默认客户端事件,并且为该事件分配 k2服务账为审批用户(目的在于确保没有任何人会对该事件执行任何操作)。添加一个在 1 秒钟后执行的过期提醒规则,并运行 "go to activity" 模板,跳转至在上文第(1)步中创建的节点。将流程节点线连到 (1)。
3. 针对每个子流程的最后流程节点(主要、发起人和管理员组),在(2)中画一条线到节点上。
上述设置能够确保一旦任何子流程完成时,即执行 "go to activity" 过期提醒,然后使所有其他活动失效。继而保证一旦过程完成,即不存在任何其他活跃的活动。
希望我的建议对您有帮助。

周四, 04/09/2015 - 17:43
joyce2
joyce2的头像

大家好,
看到了JK提出的建议,我并不认为可以让一个流程节点没有任何流程线与其相连。流程会编译不过。 你可以把它连接起来,但是在线规则里设置“1 = 2”那这样永远不会为真而流程不会继续运行下去。
1. 工作流发起人可撤销工作流。通过K2 API可以非常简单地实现这一目标。只需通过流程的实例id,然后模拟一个管理员账户(或者作为管理员打开连接,并模拟应用程序的身份用户)您可以获得过程发起人的信息,然后将其姓名与应用程序身份用户进行比较,确保他们只撤销了由他们自己发起的过程。
2. 这一方法同样适用于您的第二个问题,您现在可以通过和数据库比对例如你可以保存管理员的账户号信息于数据库,在取消流程时做比对。
我觉得您也可以使用过期提醒,比如说,如果您拥有一个流程节点分配给了5个人。您并不关心他们是否切实执行了这些活动。只需要等一天,如果没有任何人执行,那么您就可以使用 gotoactivity 将流程跳至下一节点。
希望我的建议有帮助。

周四, 04/09/2015 - 17:43
joyce2
joyce2的头像

您可以使用K2 API实现您提到的所有功能。以前也提到过,涉及实际流程中节点的解决方案只会带来更多的痛苦和麻烦。而且,如果你没有流程的管理员权限是不能终止流程的。但是使用 K2 API,您可以实现您想要的任何功能。
但是,您应该考虑您所提到问题可能会对审计产生的影响。如果你的审批任务完成后会更新流程数据,那么审计的功能就会没了。虽然这一问题对于您的流程可能重要也可能无关紧要,但是应该知道这一点。

周一, 06/01/2015 - 21:40
Xiang
Xiang的头像

good