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

 找回密码
 注册成为天翎用户
查看: 2336|回复: 12

[已解决] 如何自动发起一个已经定义的流程

[复制链接]
云南腾俊 发表于 2012-8-22 09:22:04 | 显示全部楼层 |阅读模式
本帖最后由 irene 于 2012-8-23 10:52 编辑

我想在后台做一个定时任务,检查t_user有没有新增记录(通过t_user的扩展字段标记),如果发现有新增记录(表明有新员工入职),这个定时任务发起一个“新员工自我介绍”的新流程,并当这个新员工登陆oa时,‘新员工自我介绍’出现在‘代办任务’中,新员工提交后,接下来就是手动流程了。
irene 发表于 2012-8-22 09:33:25 | 显示全部楼层
您好,请问您现在的问题是不是不知道该如何自动启动一个流程嘛?如果是,您可以参考该贴子:http://www.teemlink.com/bbs/view ... 2%C6%F0%C1%F7%B3%CC
 楼主| 云南腾俊 发表于 2012-8-22 10:55:15 | 显示全部楼层
要的就是你说的这个啦,谢谢。能解决我的问题。
irene 发表于 2012-8-22 10:56:21 | 显示全部楼层
谢谢您的反馈
 楼主| 云南腾俊 发表于 2012-8-22 13:59:42 | 显示全部楼层
13:56:17,114  WARN Task:585 - Run TaskScript Error: JavaScriptRunning:[TASK(11e1-ec1c-09d55218-85ee-9bba9188f5a3).&aelig;<96>°&aring;<91><98>&aring;·&yen;&auml;&raquo;<8B>&ccedil;&raquo;<8D>.TaskScript]: error instantiating (0): class cn.myapps.core.dynaform.document.ejb.DocumentProcess is interface or abstract (11e1-ec1c-09d55218-85ee-9bba9188f5a3).&aelig;<96>°&aring;<91><98>&aring;·&yen;&auml;&raquo;<8B>&ccedil;&raquo;<8D>.TaskScript#5)
13
irene 发表于 2012-8-22 14:04:43 | 显示全部楼层
您好,请问您这个错误是任务启动时报的错误吗?如果不是,请问您做了什么操作呢?
 楼主| 云南腾俊 发表于 2012-8-22 14:25:07 | 显示全部楼层
本帖最后由 云南腾俊 于 2012-8-22 14:29 编辑

程序的第一行和最后一行已经成功执行了。
但是没有生成代办事务。
我检查了 业务库的t-actorhis 表,表单表ClerkIntroduce的数据都已经更新,但是好像发起流程不成功。

QQ截图20120822142242.jpg
println("----------------------------------------");
var formProcess = new Packages.cn.myapps.core.dynaform.form.ejb.FormProcessBean();//申明表单业务处理类
var form = formProcess.doViewByFormName("ClertIntroduce",getApplication());  //根据表单名查询出表单(fm_purchase_materials为对应的插入记录的表单名)
var userProcess = createProcess("cn.myapps.core.user.ejb.UserProcess");
var process = getDocumentProcess();//申明文档业务处理类
var params =new Packages.cn.myapps.base.action.ParamsTable();

var flowid="11e1-ec15-3ebe6938-85ee-9bba9188f5a3";
var user = null;
var webuser=null;
var doc=null;
var loginno="";
var sql = "select id, name item_name,loginno item_loginno, '" +getDomainid()+"' domainid  from obpm.t_user where field10 is null";
var rs = queryBySQL(sql);  var rec=null;
for (var iter1 = rs.iterator(); iter1.hasNext();) {               
        rec = iter1.next(); loginno=rec.getItemValueAsString("loginno");
        user=userProcess.getUserByLoginno(loginno,getDomainid());//根据用户名查询表单的创建者(wgs为对应的作者用户名)
        webuser = new Packages.cn.myapps.core.user.action.WebUser(user);
        doc = process.doNew(form,webuser,new Packages.cn.myapps.base.action.ParamsTable());//创建记录
        doc.setFlowid(flowid);//flowid为对应的流程Id.
        params.setParameter("_flowid", flowid)//value为对应的流程Id.
        process.doStartFlowOrUpdate(doc,params,webuser);//启动流程
        updateByDSName("datasource-oa","update obpm.t_user set field10='yes' where loginno='"+loginno+"'");
}
 楼主| 云南腾俊 发表于 2012-8-22 14:26:13 | 显示全部楼层
根据监控,好像getDomainid返回的是null,不知跟这是否有关。
irene 发表于 2012-8-22 14:48:13 | 显示全部楼层
您好,跟同事沟通,结合您5#和7#提供的信息,问题出现在var process = getDocumentProcess();这一句代码。您实例化了一个接口或抽象类,所以报错。您可以将上句代码改为var process = new Packages.cn.myapps.core.dynaform.document.ejb.DocumentProcessBean();
 楼主| 云南腾俊 发表于 2012-8-22 14:50:54 | 显示全部楼层
我用var process = new Packages.cn.myapps.core.dynaform.document.ejb.DocumentProcessBean(); 才出错,才改成 getdocumentprocess 程序才得以运行的。

不能用var process = new Packages.cn.myapps.core.dynaform.document.ejb.DocumentProcessBean();, 这个是个虚接口

麻烦看看为啥不能生成代办的流程

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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