天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
楼主: jariy

关于流程回撤~~~~2个问题

[复制链接]
 楼主| jariy 发表于 2011-9-27 18:07:52 | 显示全部楼层
晕 怎么确认,而且好像也不用确认了吧,上面不是给出了错误提示Cannot find function getFlowStateRTsByDocId吗?
JavaScriptRunning:[Activity(11e0-e8d2-76b5d8d5-ad70-855d2986e918).回撤.beforeActionScript]: TypeError: Cannot find function getFlowStateRTsByDocId. (11e0-e8d2-76b5d8d5-ad70-855d2986e918).回撤.beforeActionScript#5)
shary 发表于 2011-9-27 18:09:03 | 显示全部楼层
我是说你看下那个类里有没有那个方法.源码里。
 楼主| jariy 发表于 2011-9-28 16:42:15 | 显示全部楼层
接着昨天的来继续,忙了一早上了才有空弄这个。
我有2个问题:假设节点A已经发送给节点B,节点B有3个处理人,
第一种情况:节点A的处理人和节点B的某个处理人同时进入当前流程表单,这个相当于并发,只是节点A点回撤按钮,节点B的某个处理人点发送按钮,假如A先点回撤,那么正常的来讲这里是允许其回撤的,因为节点B没有处理人处理过,假如节点B的某个处理人先点发送按钮,成功后,节点A的处理人点了回撤按钮,此时,平台的逻辑是允许回撤的,但是我要的效果是不允许回撤,因为该流程已经有人处理过了,是不允许回撤的。
第二种情况:节点B的处理人先发送了并处理了该流程成功之后,节点A进入当前流程点了回撤按钮,此时当然是不允许回撤的,这个跟上面差不多;
第三种情况:节点B的处理人没有处理过,节点A的处理人可以回撤。

不知道为什么,讲了半天不知道看的人明不明白我的意思?感觉讲得很清楚了。
1.我现在想要的是怎么拿到当前处理节点的所有处理人,注意是所有的,包括已处理和未处理的。
2.如果节点B的某个处理人只是保存了该表单而没有点击发送执行流程处理那么这种情况算不算流程处理过了?

我这个主题好像拖了很久了吧,除了那个回撤清空日期控件的问题可以缓一缓,麻烦其它的问题能帮我尽快解决一下
shary 发表于 2011-9-28 16:44:54 | 显示全部楼层
昨天不是给你代码你自己说当前处理节点的所有处理人可以了。只是需要拿到流程节点所有的处理人的问题吗?
 楼主| jariy 发表于 2011-9-28 17:56:46 | 显示全部楼层
我查了一下数据结构图,是不是关联了
T_ACTORHIS,T_RELATIONHIS,T_NODERT

直接给我一个查询的sql就行了,java代码都省了.
 楼主| jariy 发表于 2011-9-29 10:58:34 | 显示全部楼层
拜托 没解决问题还说我说可以了 我有点火大了
shary 发表于 2011-9-29 15:51:53 | 显示全部楼层
再次跟研发的同事确认了。通过下面的脚本就可以拿到流程的所有节点:
FlowStateRT flowState = doc.getState();//获得流程实例
Collection<NodeRT> noderts = flowState.getNoderts();//获取所有节点集合
for (Iterator<NodeRT> iterator = noderts.iterator(); iterator.hasNext();) {
   NodeRT nodeRT = iterator.next();//获得单个流程节点对象  
  Collection<ActorRT> actors =  nodeRT.getActorrts();//获得节点的所有处理人信息
//然后迭代 处理人
for (Iterator<ActorRT> iterator1 = actors .iterator(); iterator1.hasNext();) {
var ActorRT =iterator.next();
ActorRT.getIsprocessed()==true  //返回结果为true 说明这个处理人已经处理过
}
}
您可以仔细去看下并根据您的实际业务修改
 楼主| jariy 发表于 2011-9-29 17:34:08 | 显示全部楼层
  1. Collection<ActorRT> actors =  nodeRT.getActorrts();//获得节点的所有处理人信息
  2. //然后迭代 处理人
  3. for (Iterator<ActorRT> iterator1 = actors .iterator(); iterator1.hasNext();) {
  4. var ActorRT =iterator.next();
  5. ActorRT.getIsprocessed()==true  //返回结果为true 说明这个处理人已经处理过
  6. }
复制代码
我在群里面已经明确的跟你说过你的这段代码获得的是当前待处理的所有处理人的数据而不是所有的,你的这个所有人是不包括已处理的处理人,汗,不要给我这些代码了,把对应的需要查询的表结构告诉我吧。我在看你们的MyApps数据库结构说明书V2.5.doc里找了一下相关的表 但是我还是没有办法找到我要的数据,
下面是你提供给我的表:

t_flowstatert 是存储当前文档流程状态的表 通过docid 与t_document 表关联
t_t_nodert 存储的是文档流程状态下的所处的节点信息 通过 flowstatert_id 与t_flowstatert关联
t_actorrt 储存的是文档流程状态所处的某个节点的处理人信息 通过 nodert_id与t_t_nodert 关联


但是上面的表远远不能拿到所有处理人的数据,
--1 取到的是当前文档流程状态的待处理人(根本就不包括已处理人)
SELECT tn.name,ta.*
FROM T_FLOWSTATERT vo, T_ACTORRT ta,t_nodert tn
WHERE vo.id=ta.FLOWSTATERT_ID and tn.id=ta.nodert_id
        and vo.DOCID='11e0-ea76-532578cb-b92b-911f46e3f481' AND vo.FLOWID='11e0-804e-26c2f499-a55c-e55e3996d2a3'

我还找了一下相关的表,
2. T_RELATIONHIS 这个表能查到相关流程的已处理过的处理人

看到这里感觉好像所有的人出来了,未处理的人在1可以找到,已处理的人在2可以找到,但是问题是2里面包括的是所有已处理过的处理人,而不是当前节点已处理过的处理人,到了这里我就想到如果我能拿到当前流程的所有节点以及当前处理节点是不是就能过滤掉一些不需要的数据了呢。

拜托不要把我说过的话 想听的就听进去了 不想听的就过去了 这样弄得大家都会很上火 没必要不是 工作上的问题还是要解决的 多的话我就不说了
admin 发表于 2011-10-13 10:12:57 | 显示全部楼层
跟研发的同事沟通过无法通过脚本拿到流程所有节点的处理人。因为流程节点处理人会存在不确定性。比如:脚本指定或者通过指定审批人的方式。都是需要通过后台程序在节点处理前进行计算的。
 楼主| jariy 发表于 2011-10-28 16:15:00 | 显示全部楼层
那我要的这种功能就没办法实现了?

本版积分规则

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

GMT+8, 2026-8-12 16:04

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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