起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: hua_love2011

[结贴] 启动流程时,可以启动指定环节吗?

[复制链接]

170

主题

838

帖子

2136

积分

金牌会员

Rank: 6Rank: 6

积分
2136
QQ
 楼主| 发表于 2014-5-22 14:27:08 | 显示全部楼层
zhaixin 发表于 2014-5-22 14:15
接口是直接写入数据表的?
如果是这样,就用定时器,定时检查吧
参考 如何实现定时调用X5动作

是的,它是直接传入数据表的
你不向前奔跑,没有人愿意停下来等你!
回复 支持 反对

使用道具 举报

128

主题

557

帖子

1012

积分

金牌会员

Rank: 6Rank: 6

积分
1012
发表于 2014-5-22 14:40:40 | 显示全部楼层
hua_love2011 发表于 2014-5-22 13:31
大神可以说详细点吗?咋是初学者。

我不知道你说的不定时发送数据你们这边是如何接受的,是直接插入数据库数据还是向平台接口推送数据,我建议这种情况采用接口推送的方式,也就是平台这边开发一个webservice接口,三方系统调用接口传入数据,平台在接受数据后插入的同时调用API启动流程,代码启动的时候是可以制定流程环节的,至于2.7版本如何代码启动流程我还没用过,只用过2000版本的API,平时也在关注这块内容,到2.4之后API更完善,调用也更方便了,论坛应该有例子才对
回复 支持 反对

使用道具 举报

170

主题

838

帖子

2136

积分

金牌会员

Rank: 6Rank: 6

积分
2136
QQ
 楼主| 发表于 2014-5-22 15:22:23 | 显示全部楼层
pikachu 发表于 2014-5-22 14:40
我不知道你说的不定时发送数据你们这边是如何接受的,是直接插入数据库数据还是向平台接口推送数据,我建 ...

数据是直接通过接口传入数据表中的,我现在需要将数据查询处理,在启动流程并流转
你不向前奔跑,没有人愿意停下来等你!
回复 支持 反对

使用道具 举报

128

主题

557

帖子

1012

积分

金牌会员

Rank: 6Rank: 6

积分
1012
发表于 2014-5-22 15:40:12 | 显示全部楼层
hua_love2011 发表于 2014-5-22 15:22
数据是直接通过接口传入数据表中的,我现在需要将数据查询处理,在启动流程并流转 ...

你这种方式就只能使用timer周期轮询数据库,对新增数据调用PAI用代码启动流程并指定环节,我建议将timer独立出来,免得影响平台性能。启动流程的方式demo里面有
回复 支持 反对

使用道具 举报

170

主题

838

帖子

2136

积分

金牌会员

Rank: 6Rank: 6

积分
2136
QQ
 楼主| 发表于 2014-5-22 15:49:02 | 显示全部楼层
pikachu 发表于 2014-5-22 15:40
你这种方式就只能使用timer周期轮询数据库,对新增数据调用PAI用代码启动流程并指定环节,我建议将timer ...

是的,我现在的思路就是,写一个java程序,将通过接口传送过来的数据查询出来后,去调用x5平台启动流程的Action,但是我在Action中写的时候,有个疑问
public static String dxjStartFlow(String fId) {
        Document startDom = ProcessUtils.startProcess("/sbwxgl/sbwxxx/process/sbwxxx/sbwxxxProcess", "问题录入:设备维修信息", fId,"E5F584AA6B904B2BBA7DB4213EF3AFA6");
        String firstTask = startDom.selectSingleNode("/items/item/task").getText();
        ProcessUtils.advanceProcess(firstTask, null);
        String pi = TaskDB.queryFlowIdByTask(firstTask);
        return pi;
}
后面那个参数我可以不指定么?在环节上去指定流转给谁
我现在给了一个固定的用户fID,但老是报“必须指定执行者”
请问怎么解决呢?
你不向前奔跑,没有人愿意停下来等你!
回复 支持 反对

使用道具 举报

128

主题

557

帖子

1012

积分

金牌会员

Rank: 6Rank: 6

积分
1012
发表于 2014-5-22 16:21:10 | 显示全部楼层
本帖最后由 pikachu 于 2014-5-22 16:22 编辑
hua_love2011 发表于 2014-5-22 15:49
是的,我现在的思路就是,写一个java程序,将通过接口传送过来的数据查询出来后,去调用x5平台启动流程的 ...


这样的方式你就要注意区分数据是否已发起过流程,避免重复发送。这个执行人是必须指定,如果不指定会报错的。你可以指定给相应的人,也可以指定有权限的人,demo里面也有重载执行人的方法,你可以按里面的写

评分

参与人数 1 +5 收起 理由
jishuang + 5 赞一个!

查看全部评分

回复 支持 反对

使用道具 举报

170

主题

838

帖子

2136

积分

金牌会员

Rank: 6Rank: 6

积分
2136
QQ
 楼主| 发表于 2014-5-22 16:32:17 | 显示全部楼层
pikachu 发表于 2014-5-22 16:21
这样的方式你就要注意区分数据是否已发起过流程,避免重复发送。这个执行人是必须指定,如果不指定会报错 ...

我按照实例做的时候,他在执行这句代码的时候会报错 ,就是报刚才那个错误,我看视频或者示例都是这样写的啊
ProcessUtils.advanceProcess(firstTask, null);
你不向前奔跑,没有人愿意停下来等你!
回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-5-22 16:44:32 | 显示全部楼层
看一下这里面的代码示例,执行者参数传的不对
http://bbs.justep.com/forum.php? ... 7&pid=164970939
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

128

主题

557

帖子

1012

积分

金牌会员

Rank: 6Rank: 6

积分
1012
发表于 2014-5-22 16:48:02 | 显示全部楼层
本帖最后由 pikachu 于 2014-5-22 16:52 编辑
hua_love2011 发表于 2014-5-22 16:32
我按照实例做的时候,他在执行这句代码的时候会报错 ,就是报刚才那个错误,我看视频或者示例都是这样写的 ...


Document startDom = ProcessUtils.startProcess("/sbwxgl/sbwxxx/process/sbwxxx/sbwxxxProcess", "问题录入:设备维修信息", fId,"E5F584AA6B904B2BBA7DB4213EF3AFA6");
你这一句代码有问题,最后一个参数是人员的FID。是发起流程的代码,你可以看demo,流转到下一个环节
回复 支持 反对

使用道具 举报

170

主题

838

帖子

2136

积分

金牌会员

Rank: 6Rank: 6

积分
2136
QQ
 楼主| 发表于 2014-5-22 17:19:06 | 显示全部楼层
pikachu 发表于 2014-5-22 16:48
Document startDom = ProcessUtils.startProcess("/sbwxgl/sbwxxx/process/sbwxxx/sbwxxxProcess", "问题 ...

哦,我已经改成这样了,还是报这个错

String sFId=ContextHelper.getPersonMember().getFID();
Document startDom = ProcessUtils.startProcess("/sbwxgl/sbwxxx/process/sbwxxx/sbwxxxProcess", "问题录入:设备维修信息", fId,sFId);
你不向前奔跑,没有人愿意停下来等你!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-23 10:04 , Processed in 0.060868 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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