1、数据查询
var dql1 = "select * from tlk_aa where istmp=0 ";
var datas1 = queryBySQL(dql1); //
if(datas1!=null && datas1.size()>0){
for(var iter1 = datas1.iterator();iter1.hasNext();){
var doc1 = iter1.next();
}
}
2、选项脚本
var opts=createOptions();
opts.add("","");
var dql1 = "select * from tlk_aa where istmp=0 ";
var datas1 = queryBySQLNoPage(dql1); //
if(datas1!=null && datas1.size()>0){
for(var iter1 = datas1.iterator();iter1.hasNext();){
var doc1 = iter1.next();
opts.add(doc1.getItemValueAsString("AA") , doc1.getId())
}
}
opts
3、部门
//当前人默认部门Id
getWebUser().getDefaultDepartment();
//根据部门id获取部门名称
var process = createProcess("cn.myapps.core.department.ejb.DepartmentProcess");//部门业务处理类
var dept=process.doView(id);//id为部门ID,获取部门对象
var name=dept.getName();//获取部门名称
4、获取当前人
var rtn = getItemValueAsString("申请人");
if(!isNotNull(rtn)){
rtn = getWebUser().getName();
}
rtn;
5、获取当前日期
var retvar =getItemValueAsDate("Fd_Time");
if(retvar==null) {
retvar = getToday();
}
format(retvar,"yyyy-MM-dd");
6、抄送角色和指定人员
#include "SystemRole"
var sp1 = getNewRoleIdByName2("董事会");
var sp2 = getCurrentDocument().getAuthor().getId(); //申请人
var allspr = sp1+";"+sp2
var arr = splitText(allspr,";");
var userlist = createObject("java.util.ArrayList");
for (var i=0;i<arr.length;i++){
if(arr[i] != null && arr[i].trim().length() > 0){
userlist.add(getUserById(arr[i]));
}
}
userlist;
7、创建表单
//创建有流程的表单
var curdoc = getCurrentDocument();
var LXID = getItemValueAsString("LXID");
var bdid = curdoc.getId();
var Fd_ProjName = getDocItemValueAsString(LXID,"Fd_ProjName");
var process = getDocumentProcess();
var formProcess = new Packages.cn.myapps.core.dynaform.form.ejb.FormProcessBean();
var flowid="11e9-f3cf-60c2ce60-b04c-6f92c4c166e6";
var form = formProcess.doViewByFormName("FMPM_DesiTaskCardBySign",getApplication());
var xmjl = curdoc.getItemValueAsString("Fd_RWXDR");
var user = getUserById(xmjl);
var tuser = new Packages.cn.myapps.core.user.action.WebUser(user);
var doc = process.doNew(form,tuser,new Packages.cn.myapps.base.action.ParamsTable());
doc.setFlowid(flowid);
var params =new Packages.cn.myapps.base.action.ParamsTable();
doc.addStringItem("pid",LXID);
doc.addStringItem("Fd_ReQueMan",xmjl);
doc.addStringItem("Fd_ProjName",Fd_ProjName);
doc.addStringItem("QRDId",bdid);
params.setParameter("_flowid",flowid);
getDocumentProcess().doStartFlowOrUpdate(doc,params,tuser);
//创建普通表单
var user = getUserById(xmjl);
var tuser = new Packages.cn.myapps.core.user.action.WebUser(user);
var processfunc = getDocumentProcess();
var formProcessfunc = new Packages.cn.myapps.core.dynaform.form.ejb.FormProcessBean();
var arr = splitText(names, ",");
for (var i=0;i<arr.length;i++){
if(!arr[i].equals("")){
var form2 = formProcessfunc.doViewByFormName("Fm_ScoringEdit",getApplication());
var doc2 = processfunc.doNew(form2,tuser,new Packages.cn.myapps.base.action.ParamsTable());
doc2.addStringItem("GLID",pid);
doc2.addStringItem("XMID",xmid);
doc2.addDateItem("Fd_Stime",getToday());
doc2.addDateItem("Fd_PlanEtime",etime);
doc2.addStringItem("Fd_FormName",formnames);
doc2.addStringItem("Fd_flowNames",flownames);
doc2.addStringItem("Fd_Name",arr[i]);
doc2.setParent(pid);
processfunc.doCreate(doc2);
}
}
8、表单链接
//弹出新表单连接:
getParamsTable().getContextPath()+"/portal/dynaform/document/new.action?_formid=11e8-bd41-118a72d5-82e3-b9c966406ea7&_isJump=1"
//弹出旧表单链接:
var url = getContextPath()+"/portal/dynaform/document/view.action?";
url += "_docid="+getCurrentDocument().getId()+"&_formid="+getCurrentDocument().getFormid();
url += "&application="+getApplication();
//弹出模板表单链接:
url += getContextPath()+"/portal/dynaform/document/view.action?";
url += "_docid="+getCurrentDocument().getId()+"&_formid="+getCurrentDocument().getFormid();
url += "&application="+getApplication()+"&_templateForm="+mudeID+"&isRelate=false";
9、Java函数的使用
var util = new Packages.cn.myapps.core.dynaform.custom.action.HuahanDataHelper;
util.updateProjectSpaceName("11e9-f3a4-98eebed7-b237-9b24b2212da4");
10、系统函数
//弹出对话框是否执行,和js的confirm一样
createConfirm("是否提交?")
11、JavaScript
//打开层方法
function OpenDiaDialog(url){
var opener = window.top;//从哪个页面打开弹出框,例如:window本页面/window.parent父页面/top顶级页面...
opener.JHKJ.dialog.show({
refreshOpener: false,//是否刷新弹出框的打开页面
refreshTrigger:false,//是否刷新触发弹出框的页面
trigger: window,//传入触发弹出框的本页面,默认值无值时为打开弹出框的页面
maximized: false,//是否允许弹出框最大化,默认不填则允许最大化
width: '1500',//弹出框宽度
height: '800',//弹出框高度,不能为百分比
url: url,//弹出框的地址
args: {},//传入弹出框的参数,这里的形式自己定义,可为数组/对象/字符串...
title: '',//弹出框的标题
close: function(rtVal) {//弹出框的回调函数,返回值
dy_refresh("")
}
});
}
//普通打开
function openForms(url,backurl,target){
if(backurl==""){
backurl = window.location.href;
}if(target==""){
target = "_self";
}
if(url.indexOf("&")!=-1){
window.open(url+"&_backURL="+encodeURIComponent(backurl),target)
}else{
window.open(url+"?_backURL="+encodeURIComponent(backurl),target)
}
}
12、截取字符串
AA.substr(0,0)
13、HashMap的使用
var map = createObject("java.util.HashMap");
map.put("apple", "新鲜的苹果"); //向集合中添加对象
map.put("computer", "配置优良的计算机");
map.put("book", "堆积成山的图书");
var key = "book";
map.containsKey(key);//map是否包含了某个key
for(var iter2 = map.entrySet().iterator();iter2.hasNext();){
var maps = iter2.next();
var keyI = maps.getKey(); //key[员工编号]
}
map.size(); //数量
14、json的使用
//json例子
var content = '[{"类型":"项目负责人","姓名":"张三", "比例":"50"},{"类型":"项目负责人","姓名":"李四", "比例":"20"}]'
var json1 = createObject("net.sf.json.JSONArray"); //net.sf.json.JSONObject = = = = net.sf.json.JSONArray
var jsonArray = json1.fromObject(content);
for(var i = 0 ; i < jsonArray.size() ; i++){
var jsonObject = jsonArray.getJSONObject(i);
//println("啊啊啊啊啊啊啊啊啊啊啊啊:"+jsonObject.get("姓名"))
}
15、视图选择框缺陷处理
var rtn = getItemValueAsString("Fd_Mark");
rtn = replaceString(rtn,"\r",""); //视图选择框要去掉换行符,否则无法选择
rtn = replaceString(rtn,"\n",""); //视图选择框要去掉换行符,否则无法选择
rtn
16、数据库操作
//设置密码为a
update t_user set loginpwd = '0ceb614c418d06e3b9b1ee4c2fc43685'
//多个审批环节的时候删除某个
SELECT * FROM t_flow_intervention WHERE docid="11e9-5ab1-b2a9947f-b41b-fd2e1f293e2e"
#流程状态
SELECT * FROM t_flowstatert WHERE docid="11e8-0700-ed8c9dce-bad4-558174c9ae7c"
#流程节点信息表
SELECT * FROM t_nodert WHERE docid="11e9-5ab1-b2a9947f-b41b-fd2e1f293e2e"
#表单信息表
SELECT id,statelabel FROM tlk_xxx WHERE id="11e9-5ab1-b2a9947f-b41b-fd2e1f293e2e"
#文档信息表
SELECT id,statelabel FROM t_document WHERE id="11e9-5ab1-b2a9947f-b41b-fd2e1f293e2e"
//数据库操作:设置流程管理【挂起】
UPDATE t_nodert SET ISSUSPEND = 1 WHERE docid='11e9-5a76-45242c17-b41b-fd2e1f293e2e'
//删除多余的数据
var sql = " DELETE FROM tlk_Fm_AttendaceResult WHERE ";
sql += " id NOT IN ( ";
sql += " SELECT dt.maxID FROM( SELECT MAX(id) AS maxID FROM tlk_Fm_AttendaceResult GROUP BY item_recdate , item_Fd_UserName) dt ";
sql += " ) ";
deleteByDSName("huahangl",sql)
17、流程
//流程设计的表结构
t_flowstatert 是存储当前文档流程状态的表 通过docid 与t_document 表关联
t_t_nodert 存储的是文档流程状态下的所处的节点信息 通过 flowstatert_id 与t_flowstatert关联
t_actorrt 储存的是文档流程状态所处的某个节点的处理人信息 通过 nodert_id与t_t_nodert 关联
18、底层
HttpSession session = request.getSession();
//获取application
String appid = (String) session.getAttribute(Web.SESSION_ATTRIBUTE_APPLICATIONID);
//获取当前登录人
WebUser webUser = (WebUser) session.getAttribute(Web.SESSION_ATTRIBUTE_FRONT_USER);
19、流程BUG用iscript修复
//iscript修复【暂无审批人】,然后在流程管理调整审批环节即可。
var OneSequence2 = createObject("cn.myapps.util.sequence.Sequence");
var thisId = OneSequence2.getSequence();
var flowName = "设计院/中心";
var noderId = "1515059436718";
var flowId = "11e9-f0a9-061e780a-a3b8-c7065e657909";
var docId = "11ec-7e4b-f5d3fb96-b469-e326b91ec60d"
var FLOWSTATERT_ID = "11ec-7e4b-f6217f10-b469-e326b91ec60d"; //找到对应的t_flowstatert的id
var domainId = "11e6-b837-4a81a076-8be2-bb4bf4ae2c4b";
var applicationId = getApplication();
var parentNoderId = "1515057330427";
var DEADLINE = format(getToday() , "yyyy-MM-dd HH:mm:ss");
var sql22 = " insert into t_nodert (ID,NAME,NODEID,FLOWID,DOCID,FLOWSTATERT_ID,SORTID,NOTIFIABLE,DOMAINID,APPLICATIONID,STATELABEL,FLOWOPTION,SPLITTOKEN,PASSCONDITION,PARENTNODERTID,DEADLINE,ORDERLY,APPROVAL_POSITION,STATE,LASTPROCESSTIME,REMINDER_TIMES,ISSUSPEND,RETRACEMENT) values ('"+thisId+"','"+flowName+"','"+noderId+"','"+flowId+"','"+docId+"','"+FLOWSTATERT_ID+"',null,'','"+domainId+"','"+applicationId+"','"+flowName+"','80','','0','"+parentNoderId+"','"+DEADLINE+"',null,null,null,'0000-00-00 00:00:00',null,0,null)";
insertByDSName("apcegl",sql22);
20、数据库表单信息
表名 | 描述 |
T_APPLICATION | 应用信息表 |
T_ACTORRT | 流程角色信息表 |
T_ACTIVITY | 按钮信息表 |
T_ACTORHIS | 流程处理人的历史信息表 |
T_APPVALIDATE | 阿里软件的入口验证信息表 |
T_BILLDEFI | 定制流程信息表 |
T_COMMONINFO | 公共数据信息表 |
T_COMPONENT | 组件信息表 |
T_CROSSREPORT | 交叉信息表 |
T_CALENDAR | 日历信息表 |
T_COUNTER | 计数信息表 |
T_COLUMNMAPPING | 列配置信息表 |
T_DEPARTMENT | 部门信息表 |
T_DYNAFORM_FORM | 动态保存表信息表 |
T_DOCUMENT | 文档对象信息表 |
T_DATAPREPARE | 预备日期信息表 |
T_DATASOURCE | 数据源信息表 |
T_DOMAIN | 域信息表 |
T_DOMAINLEVEL | 域等级信息表 |
T_FLOWSTATERT | 流程状态信息表 |
T_HELPER | 帮助信息表 |
T_HOMEPAGE | 主页信息表 |
T_IMAGEREPOSITORY | 图片库信息表 |
T_MODULE | 模块信息表 |
T_MAPPINGCONFIG | Excel的导入配置表 |
T_MULTILANGUAGE | 多语言信息表 |
T_NODERT | 流程节点信息表 |
T_PANDING | 待办信息表 |
T_PAGE | 页信息表 |
T_PERMISSION | 角色和菜单的权限信息表 |
T_QUERY_PARAMETER | 报表查询范围信息表 |
T_QUERY | 报表查询信息表 |
T_RELATIONHIS | 流程审批历史信息表 |
T_PERSONALMESSAGE | 站内邮件信息表 |
T_ROLE | 角色信息表 |
T_RESOURCE | 菜单信息表 |
T_REMINDER | 提醒信息表 |
T_REMOTESERVERT | 运程配置表 |
T_REPOSITORY | 报表信息表 |
T_REPORTCONFIG | 报表配置信息表 |
T_SUPERUSER | 超级管理员信息表 |
T_SHORTMESSAGE_RECEIVED | 收到短信信息表 |
T_SHORTMESSAGE_SUBMIT | 发送短信信息表 |
T_SQLSENTENCE | Sql语句保存表 |
T_STYLEREPOSITORY | 样式库的信息表 |
T_STATELABEL | 流程状态信息表 |
T_SPECIALDAY | 特殊日期信息表 |
T_STANDARDDAY | 标准日期信息表 |
T_TASK | 定时任务信息表 |
T_TASK_DAYSOFWEEK | 定时任务运行天数信息表 |
T_USER | 用户信息表 |
T_VALIDATEREPPSOTPRY | 验证库数据信息表 |
T_VIEW | 视图信息表 |
T_APPLICATION_SUPERUSER_SET | 对多关联表(t_application && t_superuser) |
T_REPORT_MAPPING_SET | 对多关联表(t_reportconfig && t_mappingconfig) |
T_DOMAIN_APPLICATION | 对多关联表(t_application && t_domain) |
T_DOMAIN_SUPERUSER_SET | 对多关联表(t_domain && t_superuser) |
T_USER_DEPARTMENT | 对多关联表(t_Department && t_user) |
T_USER_ROLE_SET | 对多关联表(t_user && t_role) |
T_PENDING_ACTOR_SET | 对多关联表(t_pending && t_actorrt) |