工作流脚本
当流程中的所有类型的实例,状态转变为完成后执行的脚本。
关于脚本的一般说明详见脚本指南
流程脚本中的变量
domain 变量这里不能使用。
- request
发送微信消息
通过request对象,发送消息到用户绑定的公众号
- public ObjTemplateMsg createWxMsg(String asTemplateId)
创建消息对象
- public int sendWxMsgUser(String asPubAppID,Object aUserId, ObjWxTemplateMsg aMsg)
发送消息给用户, aUserId 可以是任何集合类型 List ,Set , 也可以是长整型,Long表示一个用户。
成功返回1 失败0
- public List<ObjCodeAndId> sendWxMsg(String asAppID,String topicCode, ObjWxTemplateMsg aParam,List<Long> aUserIds)
发送订阅消息吗,userids 为订阅的用户id,topic 消息主题,
- public int sendWxMsgWorkgroup(String asAppID,Long aWorkgroupID,ObjTemplateMsg aMsg)
发送消息给工作组,返回成功发送的用户数量
- public int sendWxMsgFlow(String asAppID,ASDomainWorkflow.ASWfCompInst aObj,ObjWxTemplateMsg aMsg)发送流程消息
发送流程待办任务消息,或者消息组件
- public int sendWxMsgUser(String asAppID,Object aUserId, ObjWxTemplateMsg aMsg)
发送消息给指定的用户, aUsers 可以是任何集合类型 List ,Set , 也可以是长整型,Long表示一个用户。
发送用户订阅的流程消息到指定的公众号。如拓跋公众号,不需要脚本,只需要在消息或任务中勾选消息通知即可。若用户自己的公众号,则需要调用上述方法。
举例:
发送流程任务消息,进入任务的脚本
var lMsg = request.createWxMsg('5BK11EGLYvHxApmfCVSkIzT8iUfYqKdkyzVj2UsSXI0');
var lstore = flow.mainstore();
lMsg.addProp('first','合同'+lstore.fv(0,"ecode"));
lMsg.addProp('keyword1','合同审批'+lstore.fv(0,"ecode"));
lMsg.addProp('keyword2',lstore.fv(0,'c_wldw_ename'));
lMsg.addProp('keyword3','主管审批');
lMsg.addProp('keyword4',ASUtilsDate.formatdt(lstore.fv(0,'createtime'),'yyyy年MM月dd日HH:mm'));
lMsg.addProp('keyword5',ASUtilsDate.formatdt(inst.duetime(),'yyyy年MM月dd日HH:mm'));
lMsg.addProp('remark','备注说明这里是');
request.sendWxMsgFlow("wx57e64f27146325ed",inst,lMsg);
若不同脚本发送消息,系统自动生成的消息的对应关系为
流程主题 ->消息主题
流程详细说明-> 消息类型
任务主题-> 节点名称
任务的开始时间 (当前时间) ->提交时间
任务的到期时间->到期时间
举例:发送订阅信息
var lssub = system.store(".DDJDTZ.SUB","DEFAULT","ddxxtzid",flow.tranid());
var lsmain = flow.mainstore();
var lstopic =lsmain.fv(0,'as_wxtopic_ecode');
var lswldw =lsmain.fv(0,'c_wldw_ename');
var ltrantime = lsmain.fv(0,'trantime');
var ldh = lsmain.fv(0,'lxdh');
var list = new List();
var lrows = lssub.rows(),i,l = lrows.size();
for(i=0;i<l;i++ ){
list.add(lssub.fv(i,'_userid'));
}
var lMsg = request.createWxMsg("AslDnAEbn3qjnwvaWbv3iKtgERATvtHqgP_3IvGzZzI");
lMsg.addProp('first','首先说明');
lMsg.addProp('keyword1',lswldw);
lMsg.addProp('keyword2',flow.shortmemo());
lMsg.addProp('keyword3',ldh);
lMsg.addProp('keyword4',ASUtilsDate.formatdt(ltrantime,'yyyy年MM月dd日HH:mm'));
request.sendWxMsgSub("wx57e64f27146325ed",lstopic,lMsg,list);
请求对象:流程中不能用数据库,所以设计数据库的方法不可用,可用system变量来进行
public Object status(String asPath,String asOperation,Long aId)
设置实体数据的状态,包括所有的数据服务的操作
public int setFieldValue(String asPath,Long aRecId, String asFieldCode, Object aValue)
设置字段的值,包括数据服务和字段值主题域
public Object getFieldValue(String asPath,Long aRecId, String asFieldCode)
获得字段值。 包括数据服务和字段值。
public Long userId()
当前用户的id
public String userCode()
当前用户的代码
public String userName()
当前用户的名字
public Long employeeId()
当前用户的在系统中的人员id
public String employeeName()
当前用户的在系统中的人员名字
public String userProperty(String asPropertyCode)
当前用户的在系统中的人员属性
public void sendMail(String asTo,String asSubject,String asContent)
发送邮件,asTo邮件地址,asSubject 主题,asContent邮件内容。 邮件由系统服务邮箱发出
public ObjWxTemplateMsg createWxMsg(String asTemplateId)
发送微信模板消息到系统用户
public ObjDatastore getStoreById(String asPath,String asAlias,Long aRecId) throws ASException
public ObjDatastore getStoreByIdList(String asPath,String asAlias,List<Object> aIds) throws ASException
根据id查询数据集
public void updateStore(String asPath,ObjDatastore aStore) throws ASException
更新数据集
- ObjDatastore
Object fv(int recno,String fieldname)
Object fv(ObjRow,String )
获取值
void fvSet(int ,String,Object)
void fvSet(ObjRow,String,Object)
/更新值
- system
系统变量增加了数据查询的方法。 以便解决request不能访问数据库的问题。
public ObjDatastore store(String asPath,String asAlias,Object ids) throws ASException
public ObjDatastore store(String asPath,String asAlias,String asParam,Object aValue) throws ASException
public Object status(String asPath, String asOperation, Long aRecId) throws ASException
public int setFieldValue(String asPath, Long aRecId, String asFieldCode, Object aValue) throws ASException
public Object getFieldValue(String asPath, Long aRecId, String asFieldCode) throws ASException
- flow
流程实例对象
- Long tranid() 当前业务的主键
- ObjParamIds tranids(); 当前业务的主键的对象形式
- ObjDatastore mainstore(); 当前业务的主数据集
- inst
当前执行脚本的组件或转移对象。
- String status() 当前对象的状态
- List<Long> users() 只有任务和消息存在,任务和消息中的所有用户,包括工作组,动态用户和固定用户
- event
事件对象
- Object paramValue(String asParamCode) 获得事件参数值
- ObjDatastore store();事件实体的主数据集,只有自定义的事件有该属性
- Object fieldValue(String asFieldCode) 获得事件来源实体的主数据集的字段值
如果是点评有两个参数
"comresult" 点评的结果,如同意或者不同意
"comcontent" 点评的内容,即输入的点评文字内容
event.paramValue("comresult")
- 举例:点评后审核单据
if( event.paramValue("comresult") =='同意') {
request.status(".XSDD.DATA","audit",flow.tranid());
}
操作类型:事件执行后推动任务状态变化。其内容是任务的状态值。
表达式: 是操作类型的表达式形式,这个选项如果填写,将忽略操作类型中的值,通过表达式确定其值。
举例: if(estatus=='7','4','2') 标识如果单据处于审核状态,就设定任务状态为完成,否则设定任务状态为撤销。
在执行脚本和状态转移前执行。
表达式返回值是指工作流实例和任务状态,值和含义如下:"0" : 未确定 "1" : 就绪 "2" : 撤销 "3": 暂停 "4": 完成
所有流程组件先执行脚本后转移,只有任务事件,先转移,后执行脚本。以为其目的是推动任务状态变化而并非自身需要。
Created with the Personal Edition of HelpNDoc: Create cross-platform Qt Help files