- 浏览: 151386 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
hx0637:
楼主!小弟要面临面试了,能否指导下小弟?
面试 深圳一家公司的 -
kljismi:
你好,我现在正在开这项目的代码,但是我不明白@Privileg ...
权限管理模块分析 -
yzhw:
终于找到了
ImageSizer.java -
sunloveny:
国
struts国际化 -
jackotty:
谢谢楼主的分享
struts validator验证框架
oa_18:
实现WorkflowManager接口,以及流程管理的界面
需注意几个编程技巧:
1、如果页面上显示的图片数据并非磁盘上的一个图片文件,如何显示?
- 定义一个Action来读取图片,并直接写入HttpResponse对象
2、如果不知道XML文件的编码格式,如何正确读取这些XML文件,并转换为字符串?
- 利用DOM4J
3、如何在页面上显示格式良好的XML文件?
- <c:out/>标签的使用
- <pre></pre>标签的使用
实现WorkflowManager接口,以及流程管理的界面
需注意几个编程技巧:
1、如果页面上显示的图片数据并非磁盘上的一个图片文件,如何显示?
- 定义一个Action来读取图片,并直接写入HttpResponse对象
2、如果不知道XML文件的编码格式,如何正确读取这些XML文件,并转换为字符串?
- 利用DOM4J
3、如何在页面上显示格式良好的XML文件?
- <c:out/>标签的使用
- <pre></pre>标签的使用
package com.bjsxt.oa.manager.impl; import java.util.List; import com.bjsxt.oa.manager.JbpmFacade; import com.bjsxt.oa.manager.WorkflowManager; import com.bjsxt.oa.model.Workflow; public class WorkflowManagerImpl extends AbstractManager implements WorkflowManager { private JbpmFacade jbpmFacade; public void addOrUpdateWorkflow(byte[] processDef, byte[] processImage) { String workflowName = jbpmFacade.deployProcessDefinition(processDef); //首先根据流程名称,查询是否已有Workflow对象 Workflow wf = (Workflow)getSession().createQuery("select w from Workflow w where w.name = ?") .setParameter(0, workflowName) .uniqueResult(); if(wf == null){ wf = new Workflow(); wf.setName(workflowName); wf.setProcessDef(processDef); wf.setProcessImage(processImage); getHibernateTemplate().save(wf); }else{ wf.setProcessDef(processDef); wf.setProcessImage(processImage); getHibernateTemplate().update(wf); } } public void delWorkflow(int workflowId) { Workflow wf = findWorkflow(workflowId); jbpmFacade.delProcessDefinition(wf.getName()); getHibernateTemplate().delete(wf); } public Workflow findWorkflow(int workflowId) { return (Workflow)getHibernateTemplate().load(Workflow.class, workflowId); } public List searchAllWorkflows() { return getHibernateTemplate().find("from Workflow"); } public void setJbpmFacade(JbpmFacade jbpmFacade) { this.jbpmFacade = jbpmFacade; } }
package com.bjsxt.oa.web.actions; import java.io.ByteArrayInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; import org.dom4j.io.SAXReader; import com.bjsxt.oa.manager.WorkflowManager; import com.bjsxt.oa.model.Workflow; import com.bjsxt.oa.web.forms.WorkflowActionForm; public class WorkflowAction extends BaseAction { private WorkflowManager workflowManager; //打开主界面 @Override protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //获取所有流程信息进行显示 request.setAttribute("workflows", workflowManager.searchAllWorkflows()); return mapping.findForward("index"); } //上传流程定义和流程图片的信息 public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { WorkflowActionForm waf = (WorkflowActionForm)form; if(waf.getProcessDef() != null && waf.getProcessImage() != null){ workflowManager.addOrUpdateWorkflow( waf.getProcessDef().getFileData(), waf.getProcessImage().getFileData()); } return mapping.findForward("add_success"); } public ActionForward del(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { WorkflowActionForm waf = (WorkflowActionForm)form; workflowManager.delWorkflow(waf.getId()); return mapping.findForward("pub_del_success"); } //打开查看流程图片的界面 public ActionForward viewImage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { WorkflowActionForm waf = (WorkflowActionForm)form; Workflow workflow = workflowManager.findWorkflow(waf.getId()); request.setAttribute("workflow", workflow); return mapping.findForward("view_image"); } //获取流程图片信息进行显示 public ActionForward image(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { WorkflowActionForm waf = (WorkflowActionForm)form; Workflow workflow = workflowManager.findWorkflow(waf.getId()); byte[] processImage = workflow.getProcessImage(); response.setContentType("image/jpeg"); response.getOutputStream().write(processImage); return null; } //查看流程定义界面 public ActionForward viewDef(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { WorkflowActionForm waf = (WorkflowActionForm)form; Workflow workflow = workflowManager.findWorkflow(waf.getId()); request.setAttribute("workflow", workflow); byte[] processDef = workflow.getProcessDef(); String def = new SAXReader().read(new ByteArrayInputStream(processDef)).asXML(); request.setAttribute("def", def); return mapping.findForward("view_def"); } public void setWorkflowManager(WorkflowManager workflowManager) { this.workflowManager = workflowManager; } }
发表评论
-
oa_22
2009-02-04 22:20 1817oa_22: 结合Freemarker,将动态表单显示在公文 ... -
oa_21
2009-02-04 22:18 1222oa_21: 添加动态表单呈现层代码 - 理解批量数据的 ... -
oa_20
2009-02-04 22:15 1294oa_20: 1、创建动态表单的领域模型 FieldInp ... -
oa_17
2009-02-04 22:03 1229集成JBPM到OA系统,并实现JbpmFacade接口 - ... -
oa_16
2009-02-04 21:58 949oa_16: 根据用例分析的结果,创建WorkflowMan ... -
oa_15:
2009-02-04 21:55 889oa_15: 根据公文流转领域模型创建相关的实体类,并使用x ... -
oa_14
2009-02-04 21:51 1338利用JSTL函数实现即时认证 - SecurityFunc ... -
oa_13
2009-02-04 21:35 1393oa_13: 实现登录功能 - LoginAction ... -
oa_11
2009-02-04 20:51 919初步实现授权管理的界面,重点在于: 1、理解DWR如何使用,理 ... -
oa_10
2009-01-18 12:54 1136提供初始化数据的代码 ... -
oa_09
2009-01-18 12:48 1780提供人员管理、模块管理、角色管理、用户管理相关的代码。 同时 ... -
oa_08
2009-01-18 12:08 1065创建AclManager接口,并实现 - 理解权限管理子系统 ... -
oa_07
2009-01-18 11:54 1290引入Ant和Xdoclet的支持, ... -
oa_06
2009-01-18 11:48 1059利用ThreadLocal实现分页参数的透明传输(通过使用Th ... -
oa_05
2009-01-18 11:41 988从现有的分页处理方案中,抽象出AbstractManager, ... -
oa_04
2009-01-18 11:30 1173利用Pager-Taglib实现机构 ... -
oa_03
2009-01-18 11:22 1190在做完机构管理的业务逻辑之后,下面考虑呈现层的实现。 1、 ... -
oa_02
2009-01-18 11:05 1024整合Spring和Hibernate之后,对于业务逻辑类的测试 ... -
oa_01+
2009-01-18 10:55 1242package com.bjsxt.oa.manager.im ... -
oa_01
2009-01-18 10:48 1281oa_01: 1、建立机构管理的实体类,并映射【重点理解多对 ...
相关推荐
"oa_20"和"oa_18"可能涉及到数据库操作,这是为了存储和检索工作流实例和任务的相关信息,确保数据的安全性和一致性。 7. **异常处理与日志** "oa_4"和"oa_3"可能包含了错误处理和日志记录的代码,这些对于系统的...
18. **学习借鉴**:开发人员应从其他CMS或程序中汲取灵感,优化代码质量。 19. **严谨的逻辑判断**:在编写业务逻辑时,要预设所有可能的情况,添加必要的判断,确保逻辑无遗漏。 20. **代码质量**:代码要求清晰...
《OA_ICESat2_guide.pdf》使用说明详细解读 该文档是关于如何使用开放测高系统(OpenAltimetry)的指南,特别是针对ICESat-2(冰川卫星2号)的数据处理和分析。ICESat-2是美国国家航空航天局(NASA)发射的一颗卫星...
1.下载项目、把oasys.sql(原tr18lx.sql)导入本地数据库 2. 修改application.properties, 3. 修改数据源,oasys——>自己本地的库名,用户名和密码修改成自己的 4. 修改相关路径,配置图片路径、文件路径、附件...
<constant name="struts.i18n.encoding" value="gbk"></constant> <result name="add_success" type="redirect">/common/pub_add_success.jsp <result name="del_success" type="redirect">/...
18. **OA_OpenNewOrigin**:启动新的Origin实例。 19. **OA_PE_mkdir**:在Origin项目目录下创建新目录。 20. **OA_PlotWksCols**:根据工作表中的列绘制图形。 21. **OA_Save**:保存Origin项目或工作簿。 22. **OA...
OA-100BASE-T1-Interoperability-Test-Suite-V1.0-18
SMIC18MMRF 模拟库,包含工艺、仿真和验证(DRC/LVS)
标题中的“SMIC_018_MMRF OA 格式”指的是SMIC(中芯国际)的018纳米工艺节点下的MMRF(Multi-Metal Reference Frame)开放访问(Open Access,OA)格式。在集成电路设计(ICDESIGN)领域,这种格式是用于电路布局与...
本资源“smic18mmrf-oa版(工艺库)”是针对SMIC(中芯国际)18纳米射频(RF)工艺的一个开放访问(OA)版本工艺库,主要用于IC版图设计。这个工艺库的独特之处在于,用户无需经过通常的CDB(Cadence Design Base)...
本教程主要关注的是TSMC(台湾半导体制造公司)18纳米工艺库的安装及CDB(Common Data Base)到OA(OpenAccess)的转换过程。TSMC18工艺库适用于CMOS(互补金属氧化物半导体)技术,广泛应用于高性能、低功耗的集成...
标题“smic18mmrf”暗示我们正在讨论与SMIC(中芯国际)相关的18毫米射频(RF)技术。"SPDK18MMRF_1833_CDS"可能是该技术的一个特定版本或开发套件,其中“SPDK”可能代表“System-on-Chip Physical Design Kit”,...
"SPDK018MS_and_BCD_1850100120200350400_OA_CDS_V1.14_REV2_0_CCIQRC"是压缩包内的一个具体文件名,可能是SMIC的180纳米BCD工艺的某个版本的PDK文件,可能包含了OpenAccess数据库、电路模型和其他相关资料。...
1. 导入模型:将TSMC提供的tsmc18rf_model_ADS模型文件导入到ADS环境中,确保模型库设置正确,以便在设计电路时调用。 2. 设计电路:利用ADS的电路编辑器,基于0.18um RF模型构建电路拓扑,包括晶体管、电容、电阻...
这个模板可以帮助开发者快速搭建一个功能完备、界面友好的OA系统,减少从零开始编写代码的工作量。 OA系统,全称为Office Automation System,即办公自动化系统,是现代企业信息化管理的重要工具,主要用于提高办公...
7. 为了使新版本的 Virtuoso 使用转换后的 OA 格式库,需要将生成的 "smic18mmrf" 库替换原有库中的同名库文件。至此,工艺库的 CDB 转换至 OA 格式完成。 8. 最后,通过 Virtuoso 的库导入功能,导入已转换的 OA ...
在修改WEB服务端口这一环节,致远OA的修改流程在第18页,通达OA在第21页。这可能暗示通达OA对于端口配置的设置相对复杂,需要更多步骤。对于企业来说,灵活的端口配置能够满足不同的网络环境需求,因此这一点在选择...
泛微OA 8.0 数据字典,仅供参考 号 表名 中文名称 表类型 说明 1 outerdatawfdetail 输出数据流程详情表 2 outerdatawfperiodset 外部数据触发周期设置表 3 outerdatawfset 外部数据触发设置表 4 ...
SMIC 0.18BCD工艺库的文件“smic18msbcd_1850100120200350400_oa_cds_v1.14_rev0_0_cciqrc”可能是一个包含所有必需信息的压缩包,如模型参数、版图形状和寄生参数等。"cciqrc"可能是表示这个库包含了Cadence的电路...
通达OA2010 3.6 110610 补丁自动升级-纯净版(含全套热门组件破解版本)——通达OA2010完美平台版最新OA补丁集成“OA破解补丁、通达即时通讯服务器版本IM、OA精灵 去官方链接及去除通达官方相关信息版(通达OA精灵去...