创建表单并启动流程.

第一种办法.

var doc=getCurrentDocument();
var webUser=getWebUser().getId();

var docProcess = getDocumentProcess();
var formProcess = getFormProcess();
var nForm = formProcess.doViewByFormName("到账",getApplication());  //必须的
var nDoc = docProcess.doNew(nForm,getWebUser(),createParamsTable());  //必须的

nDoc.setParent(newDocId); 
nDoc.setId(记录id);  //这个id可以不加入.直接使用系统默认生成<不添加这个set即可>
nDoc.setAuthor(webUser);
nDoc.setState("");
nDoc.setStateInt(256);
nDoc.setIstmp(false);
nDoc.setApplicationid(getApplication());
nDoc.setDomainid(getWebUser().getDomainid());
nDoc.setStateLabel("部门收入员认领到账");
//内容添加

nDoc.addDateItem("到账日期",doc.getItemValueAsDate("到账日期"));
nDoc.addDoubleItem("到账金额",doc.getItemValueAsDouble("到账金额"));
nDoc.addStringItem("付款单位",doc.getItemValueAsString("付款单位"));

//创建表单
docProcess.doCreate(nDoc);

var params=createParamsTable();
params.setParameter("_flowid","11e4-adc4-fb24905a-b517-695d7f9ea8d3");//流程id  去系统表 t_bL....查询

//根据记录id获取文档对象
var noDoc=findDocument(记录id);
把对象注入当前环境.
var sessionid = $WEB.getParamsTable().getParameterAsString("sessionid");
var currDocJsUtil = new Packages.cn.myapps.core.macro.util.CurrDocJsUtil(noDoc);
var scriptRunner = Packages.cn.myapps.core.macro.runner.JavaScriptFactory.
getInstance(sessionid, getApplication());
scriptRunner.declareBean("$CURRDOC", currDocJsUtil, currDocJsUtil.getClass());

//保存并启动流程.
docProcess.doStartFlow(noDoc,params,getWebUser()); 第二个节点
//保存并启动流程
docProcess.doStartFlowOrUpdate(noDoc,params,getWebUser());//启动流程 在第一个节点
把对象还原.
var sessionid = $WEB.getParamsTable().getParameterAsString("sessionid");
var currDocJsUtil = new Packages.cn.myapps.core.macro.util.CurrDocJsUtil(doc);
var scriptRunner = Packages.cn.myapps.core.macro.runner.JavaScriptFactory.
getInstance(sessionid, getApplication());
scriptRunner.declareBean("$CURRDOC", currDocJsUtil, currDocJsUtil.getClass());

另外一种生成表单的方式.

//生成流程代办!
 var webUser=getWebUser(); 
 var docProcess = getDocumentProcess();
 随机生成id
var sequence=createObject("cn.myapps.util.sequence.Sequence");
 var newDocId=sequence.getSequence();

 var nDoc = new Packages.cn.myapps.core.dynaform.document.ejb.Document(); 
 nDoc.setFormid("11e3-3f7f-6be939a0-91cc-5120eb2e5dd3");  //必须的
 nDoc.setFormname("JSPTPD OA System/项目管理/到账/到账");  //必须的

 nDoc.setId("记录id"); //必须使用随机生成id,插入此id,否者出错.
 nDoc.setAuthor(webUser.getId());
 nDoc.setState("");
 nDoc.setStateInt(256);
 nDoc.setIstmp(false);
 nDoc.setApplicationid(getApplication());
 nDoc.setDomainid(webUser.getDomainid());
 nDoc.setStateLabel("部门收入员认领到账");
 //内容添加
 nDoc.addDateItem("钱","1亿");
 nDoc.addStringItem("name","name");

 var params=createParamsTable();
 params.setParameter("_flowid","11e4-adc4-fb24905a-b517-695d7f9ea8d3");//到帐认领流程id  

 docProcess.doStartFlow(nDoc,params,webUser);

流程启动的时候要注意一点,那就是启动流程的人必须在第一个节点内.请注意

文档更新时间: 2023-09-16 04:05   作者:admin