技术标签: jsp 修改的员工select怎么
1. 工作流分支控制
1.1. 工作流分支自定义函数(Since:V5.6)
开发人员通过自定义函数在工作流分支原有的函数基础上进行扩展,完成预置函数不能完成的逻辑。
可从外部系统取数控制表单流程流转,比如可以在处理时实时从ERP取数决定流转的分支。
代码实现非常简单,定义任意类,加上相关注解,在Spring中注册即可
package com.seeyon.ctp.common.function.test;
import com.seeyon.ctp.util.annotation.Function;
public class ERPFunctions {
@Function(title = "wffuncdemo.checkbudget.title", description = "wffuncdemo.checkbudget.description", category = "wf_branch_function")
public static boolean isBudgetAvailable(String department, double amount) {
System.out.println("部门:" + department + "未超出预算.");
return true;
}
@Function(title = "wffuncdemo.checkmember.title", description = "wffuncdemo.checkmember.description", category = "wf_branch_function")
public static boolean checkMember(String member, int month) {
System.out.println("人员" + member + " " + month + "全勤");
return true;
}
}
方法上添加Function注解,声明当前方法是自定义函数。
在函数列表中显示的标题的国际化资源的key。
在函数列表中显示的函数描述国际化资源的key。
固定使用wf_branch_function,表明用于工作流分支。
函数的名称,使用方法名称,工作流分支自定义函数要求是返回值为boolean型的静态方法。
注意:只有部署了自定义函数的环境,分支函数对话框才会出现“自定义函数”,请参照示例代码。
1.2. 节点人员匹配规则自定义接口(Since:V6.1SP1)
1.2.1. 功能说明
在选人界面新增一个页签,是指在如下图所示的选人界面红色框位置增加一个页签,同时在流程图添加节点时可以选择该页签下的内容,并根据选择的内容进行节点人员匹配。
1.2.2. 开发步骤
每个实现了选人界面面板接口的实现类都有一个类型标识,比如是JoinAccountTag,需要修改的文件列表如下:
序号
文件路径
文件作用
备注
1
/seeyon/common/SelectPeople/js/orgDataCenter.js
选人界面处理逻辑
-
2
/seeyon/common/SelectPeople/js/Panel.js
选人界面处理逻辑
-
3
/seeyon/WEB-INF/jsp/common/SelectPeople/SelectPeople.jsp
选人界面页签国际化
-
4
/seeyon/WEB-INF/cfgHome/spring/spring-workflow-manager.xml
工作流添加节点页签控制
-
5
/seeyon/WEB-INF/jsp/ctp/workflow/workflowEditSubProcess_js.jsp
工作流子流程发起人控制
如果子流程发起人不使用这个,可以不修改这个文件。
6
VJAccountTagMatchImpl
人员匹配实现类
-
7
/seeyon/common/workflow/monitor.swf
流程图FLASH节点显示图标
这块文件不对外开放,需要走“研发人员支持申请”流程申请致远研发支持。
修改orgDataCenter.js文件
修改Panel.js文件
修改SelectPeople.jsp文件
修改spring-workflow-manager.xml文件
修改workflowEditSubProcess_js.jsp文件
新增人员匹配类VJAccountTagMatchImpl
public class VJAccountTagMatchImpl extends HumenNodeMatchAbstract {
public static final Logger log = Logger.getLogger(VJAccountTagMatchImpl.class);
private OrgManager orgManager;
private JoinOrgManagerDirect joinOrgManagerDirect;
@Override
public String getCatagory() {
return "vjoin";
}
@Override
public String getTypeId() {
return V3xOrgEntity.ORGENT_TYPE_JOINACCOUNTTAG;
}
@Override
public String getTypeName() {
return "vjoin单位标签";
}
@Override
public int getOrder() {
return 0;
}
@Override
public WorkflowOrgnazitionVO findMatchedOrgVo(String preNodeType, String preNodeId, Map formDataMap,String baseMasterId) {
WorkflowOrgnazitionVO vo= new WorkflowOrgnazitionVO();
vo.setId(preNodeId);
vo.setType(OrgConstants.ORGENT_TYPE.Account);
return vo;
}
@Override
public WorkflowNodeUsersMatchResult getMatchedUsers(String partyId, Map matchContext) throws BusinessException {
try{
WorkflowNodeUsersMatchResult result= new WorkflowNodeUsersMatchResult();
Long enumItemId= Long.parseLong(partyId);
List members = joinOrgManagerDirect.getMembersByEnumId(enumItemId);
result.setMembers(members);
String matchMsg = "该vjoin单位标签人员匹配结果为"+WorkflowUtil.getMemberNames(members);
result.setMatchRuleMsg(matchMsg);
result.setNodeOrgType(getTypeName());
return result;
}catch(Throwable e){
WorkflowNodeUsersMatchResult result= new WorkflowNodeUsersMatchResult();
String matchMsg = "该单位节点人员匹配发生异常:"+e.getMessage();
result.setMatchRuleMsg(matchMsg);
log.error(matchMsg,e);
result.setNodeOrgType(getTypeName());
return result;
}
}
public OrgManager getOrgManager() {
return orgManager;
}
public void setOrgManager(OrgManager orgManager) {
this.orgManager = orgManager;
}
public void setJoinOrgManagerDirect(JoinOrgManagerDirect joinOrgManagerDirect) {
this.joinOrgManagerDirect = joinOrgManagerDirect;
}
}
这个类实现的接口定义如下:
接口定义:com.seeyon.ctp.workflow.wapi.HumenNodeMatchAbstract
接口方法定义:
/**
* 节点分类
* @return
*/
public String getCatagory();
/**
* 组织模型类型标识
* @return
*/
public String getTypeId();
/**
* 组织模型类型名称
* @return
*/
public String getTypeName();
/**
* 节点显示序号
* @return
*/
public int getOrder();
/**
* 获得节点人员列表
* @param partyId
* @param matchContext
* @return
* @throws BusinessException
*/
public WorkflowNodeUsersMatchResult getMatchedUsers(String partyId,Map matchContext) throws BusinessException;
/**
* 获得节点的真正的组织模型类型
* @param preNodeType上节点类型
* @param partyId 节点ID
* @param formDataMap 表单数据
* @param baseMasterId 表单数据ID
* @return
*/
public WorkflowOrgnazitionVO findMatchedOrgVo(String preNodeType, String partyId, Map formDataMap,String baseMasterId);
1.3. 动态函数自定义接口(Since:V6.1SP1)
1.3.1. 功能说明
动态函数自定义接口,提供了一套工作流分支函数扩展机制,开发人员通过开发动态函数,并注册到V5系统中,然后在工作流分支条件设置的地方就可以使用动态函数进行分支条件设置,从而实现使用动态函数实现流程分支判断。
1.3.2. 开发步骤
公式配置
用单位管理员登录系统,进入公式配置页面,如下图所示:
新建动态函数
注意工作流函数的返回值必须是布尔值,否则工作流分支设置时不会识别。
在上图右侧黑色框中写好groovy脚本后,单击【校验】按钮,如图看到如下图所示的提示,则表示动态函数设置是正确的,单击【确定】按钮进行保存即可。
设置工作流分支条件
根据新建公式函数时选择的应用范围(全局、协同模板、表单制作和公文模板),用对应的账号登录系统进行公式函数的绑定。
如果应用范围是【全局】,则表示该公式函数可以在协同模板、表单模板和公文模板的分支设置中使用。
如果应用范围是【协同模板】,则需要用单位管理员登录系统,在协同模板的分支设置中使用。
如果应用范围是【表单制作】,则需要用表单管理员登录系统,在表单制作的应用绑定的分支设置中使用。
如果应用范围是【公文模板】,则需要用单位管理员登录系统,在公文模板的应用绑定的分支设置中使用。
在对工作流分支条件进行设置时,对动态函数的配置过程如下图所示:
文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文
文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作 导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释: cwy_init/init_123..._达梦数据库导入导出
文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js
文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6
文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输
文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...
文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure
文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割
文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答
文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。
文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入
文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf