工作流系统集成表单的过程,其实就是一个调用流程引擎api函数的集成过程。
工作流引擎只负责抽象的流程的流转,业务模块的实现,是在业务表单中完成。在和工作流系统集成的时候,完成表单提交的同时,再调用流程引擎的api执行流程的流转。
通常一套业务系统中,业务模块的实现,体现在一套MVC的框架中,无论是struts,spring,jsf等等都是为实现分层管理的mvc的框架。
一个业务功能的实现,在m,v,c这三个层面都有体现,好的mvc框架,能通过简单的配置来达到新增模块,只需要实现v展现层,m层的和数据库的交互。且需要维护的地方很少,集成度越高的框架越接近于自定义表单引擎,类似半自动化的表单系统。
无论用那种mvc的框架,在集成工作流系统的时候,流程只负责业务的流转,业务千变万化,业务模块的实现还是不可避免的要自己实现。
当工作流系统集成自定义的表单系统时,自定义表单引擎也会包含一种mvc框架,达到自己的定制实现。只是有了表单引擎+表单设计器,能更快捷方便的实现业务模块。
应用自定义表单时,会有很多的优势,只需要通过可视化的编辑设置,就能完成业务模块的实现,达到人机交互。当然也无需重新编译打包,无需发布,就能直接运行了。和工作流引擎的集成也已经做好,只需要通过可视化的功能调用,就能完成了和工作流系统的集成。这些集成的代码已经封装好了,用户只需可视化的设置。无需了解引擎的api功能。
工作流系统结合自定义表单系统,可以开放给终端的用户去做可视化的设计流程,定义表单,完成新增业务流程的功能。
当流程引擎集成第三方的jsp表单时,程序员就需要调用流程引擎的api来完成流程的流转功能。
流程引擎对外提供一系列的api,可以读出流程定义文档的整个定义串,得到任意节点信息。通过节点id也能获得节点定义类对象。
下面是eworkflow工作流系统在集成jsp表单时的调用过程。
为了方便表述,没有使用框架来实现业务模块的提交,只在jsp页面中嵌入java的代码来说明如何调用流程引擎的api。
页面表单中增加隐藏域,保存流程相关的参数。
<form id="frm" method="POST" action="leave_new_submit.jsp" onsubmit="return checkInput()">
<input type="hidden" name="wfName" value="<%=wfName%>">
<input type="hidden" name="wfVersion" value="<%=wfVersion%>">
<input type="hidden" name="wfId" value="<%=wfId%>">
<input type="hidden" name="actionId" value="<%=actionId%>">
<input type="hidden" name="leaveId" value="<%=leaveId%>">
.........
流程名称,版本,流程实例id,动作id,业务表主键id
在表单提交的时候
//获得流程参数
String wfName = request.getParameter("wfName");
String wfVersion = request.getParameter("wfVersion");
String wfId = request.getParameter("wfId");
String actionId = request.getParameter("actionId");
String dynamicId = request.getParameter("dynamicInstanceId");
//获得业务参数
String leaveType = request.getParameter("leaveType");
String leaveDays = request.getParameter("leaveDays");
String startDate = request.getParameter("startDate");
String endDate = request.getParameter("endDate");
String applyDate = request.getParameter("applyDate");
String remark = request.getParameter("remark");
然后,再先做业务记录的提交。
//先做业务记录的保存
StringBuffer sql = new StringBuffer();
sql.append("insert into ex_leave_apply");
sql.append(" (LEAVE_ID");
sql.append(" ,START_DATE");
sql.append(" ,REMARK");
sql.append(" ,END_DATE");
sql.append(" ,LEAVE_DAYS");
sql.append(" ,APPLY_DATE");
sql.append(" ,LEAVE_TYPE");
sql.append(" ,APPLY_USER");
sql.append(" ,WF_ID )");
sql.append(" values ( '" + IDUtils.getEformRecNumNo(env.getCon(),"BBB") + "'");
sql.append(",'" + startDate + "'");
sql.append(",'" + remark + "'");
sql.append(",'" + endDate + "'");
sql.append("," + leaveDays);
sql.append(",'" + applyDate + "'");
sql.append(",'" + leaveType + "'");
sql.append(",'" + userid + "'");
sql.append("," + wfId );
sql.append(")");
DBUtils.go(env.getCon(),sql.toString());
再启动流程引擎
执行流程的api,达到流程的流转
Workflow wf = new BasicWorkflow(userid,env);
wf.doAction(Long.parseLong(wfId), Integer.parseInt(actionId), inputs);
这样,就完成了一个流程节点的办理,既提交了业务数据,又执行了流程的流转。
在流程设计器中,节点上挂接jsp表单:
在流程实例运行时,执行到此节点,既打开挂接的jsp表单。
点击提交后,执行上面的代码过程,达到业务记录的提交,又调用流程引擎的api达到流程的流转。
标签: web开发平台, java工作流, 流程设计器, 自定义工作流, web工作流, 自定义表单, 工作流引擎, 工作流软件产品, web自定义表单, 电子表单
相关推荐
7. **插件集成**:蓝凌系统支持第三方JS库的集成,如jQuery、Vue.js等,可以引入这些库来增强表单功能,如日期选择器、下拉树、多级联动选择等。 8. **错误处理和提示**:良好的错误处理机制是必不可少的,JS可以...
开发者可以通过查看源码学习如何在JSP环境中集成第三方JavaScript库,以及如何利用Jeesite的框架特性来构建高效的企业级应用。同时,对于熟悉Java和JSP的开发者来说,这是一个很好的实践案例,可以深入了解Web应用的...
这可能通过HTTP基本认证、表单登录或基于OAuth的第三方登录实现。Spring Security或Apache Shiro等库可以提供强大的安全支持。 **7. 前端技术** 除了JSP,系统可能还使用了JavaScript库如jQuery或Vue.js,以及CSS预...
开发者需要掌握JSP的EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)来简化页面逻辑,以及使用第三方支付API,如支付宝或微信支付。 6. 论坛系统:论坛系统包含发帖、回帖、用户注册、...
商城系统通常需要集成第三方支付平台,如支付宝、微信支付,以便用户在线支付。这需要处理支付回调、交易状态同步等问题,确保交易的顺利完成。 10. **权限管理**: 对于管理员和普通用户,系统可能有不同的权限...
3. **文件上传组件**:实现文件上传功能通常需要借助第三方库,如Apache Commons FileUpload或Java 7及更高版本内置的Part接口。这些组件能处理多部分表单数据,解析文件流,并将其存储到指定位置。 4. **文件管理*...
实战篇中,可能包括每日一个主题的实践任务,如第一天可能涉及环境搭建,第二天可能深入工作流设计,第三天可能是报表开发,第四天可能关注接口集成,最后一天进行系统测试和部署。 通过这个五天实战篇的学习,...
Java标准库并不直接支持FTP,但我们可以使用第三方库,如Apache Commons Net,它提供了一个完善的FTPClient类,方便进行FTP操作。在项目中引入该库后,可以创建FTPClient对象,设置服务器地址、端口、用户名和密码,...
可能还需要集成第三方支付接口,如支付宝或微信支付。 10. **错误处理与日志记录**:为了确保系统的稳定性和可维护性,开发者需要编写异常处理代码,并设置日志记录,以便于追踪和调试问题。 通过这个"jsp课程设计...
- 另外,还可以使用第三方控件,如`RadCalendar`来自Telerik,它提供了丰富的功能和自定义选项。 3. **PHP** - PHP本身并不提供内置的日历控件,但可以通过JavaScript库如`jQuery Datepicker`或HTML5的`...
5. 支付模块:集成第三方支付接口,如支付宝、微信支付等,完成支付流程。 6. 后台管理模块:管理员进行商品管理、订单处理、用户管理等操作。 三、技术选型与框架 开发过程中,通常会结合其他技术和框架以提高...
在实际应用中,购物商城可能需要集成第三方支付平台,如支付宝、微信支付等,以实现在线支付。这部分涉及与外部API的交互,可能需要用到OAuth、JSON Web Tokens(JWT)等技术。 9. **错误处理与日志记录** 为了...
【标题】"JAVA 开发音乐网站...同时,对于有经验的开发者,这个项目也可以作为一个起点,进一步优化和扩展功能,例如引入更现代的前端框架(如React或Vue.js)、集成第三方API(如音乐流媒体服务)或实施微服务架构。
虽然现代开发中常常使用JavaFX或第三方库,但基础理解仍然必要。 3. **Java API**:学习Java的核心API,包括输入输出流、多线程、网络编程和反射注解。反射允许你在运行时检查和修改类的行为,注解则是元数据的一种...
4. **组织机构建模**:支持部门、角色和用户管理,以及与第三方组织结构接口(如DB、LDAP、NDS)的集成。 5. **安全性**:提供安全加密和参与者令牌驱动模型,确保数据安全。 6. **监控与分析**:提供流程动态监控和...
7. **插件集成**: FCKeditor 2.6支持插件扩展,你可以根据需求安装和配置第三方插件,以增强编辑器的功能,例如图片上传、视频插入等。插件通常放在`fckeditor/plugins`目录下,并需要在`fckconfig.js`中注册。 8. ...
- **基于JBOSS JBPM的系统核心**:该组件是整个工作流系统的基石,负责管理业务流程定义及执行中的业务流程实例,并包含一个任务分配器用于指派任务执行者。 - **客户端组件**:主要包括任务列表、表单播放器以及...
SpringBoot 是由 Pivotal 团队提供的一个用来简化 Spring 应用初始搭建以及开发过程的框架,它集成了大量常用的第三方库配置,如 JDBC、MVC、DataJPA、Security 等,极大地提高了开发效率。而 Activiti 是一个开源的...
SharePoint 2010 的 ECM 功能不仅限于其内置工具,还包括与第三方应用程序和服务的集成,形成了一个广泛的生态系统。这使得企业可以根据自身需求选择最适合的技术解决方案。 #### 3.3 成功实施 ECM 项目的指导原则 ...
在项目结构上,`web-inf`目录是Web应用的标准组成部分,其中的`lib`子目录存放了所有必需的第三方库文件,如Servlet API、JSTL、Struts2等。虽然原始压缩包未包含这些具体的jar文件,但开发者需要根据项目需求自行...