经过前面两天的学习,大家应当掌握了一定的JBPM开发的技能,从今天开始,我们将进行6天的OA实战开发演练,经过这6天的学习,希望大家能够熟练掌握JBPM办公自动化系统的开发。好了,我们继续吧!
1. 在前面ITCASTBBS学习中,我们使用ThreadLocal<Session>来保证请求过程中始终对应同一个Session,在OA开发中,JBPM中的JbpmContext会产生一个Session,所以,我们应该使用ThreadLocal<JbpmContext>而不是ThreadLocal<Session>来保证请求过程中始终对应同一个Session
2. 对于经常用到的对象,我们应当抽象出它的方法,需要用到对象时,调用该方法获取它的实例对象。这里我们可以有一个JbpmContextManager的工具类,然后定义一个getJbpmContext()的方法用于获取JbpmContext的实例对象。这样的思路在开发中经常使用到,以后,我就不重申了,希望大家牢牢掌握
3. 使用Filter来操作事务,这里直接使用JbpmContext来管理事务
4. 在页面中显示树状部门列表:使用Xtree,Xtree的使用方法很简单,可以参考Xtree提供的官方文档
5. 将从数据库查询得到的数据展示成Xtree样式,这里需要使用到递归算法,提供一个实例供大家参考:
public static String showCode(Collection<Department> depts, String node) {
String allCode = "";
for (Department dept : depts) {
String nodeAction = "javascript:selMe('" + dept.getId() + "', '" + dept.getName() + "')";
String code = "var item_" + dept.getId() + " = " + node + ".add(new WebFXTreeItem('" + dept.getName() + "', /""
+ nodeAction + "/"));/n";
allCode += code;
allCode += showCode(dept.getChildren(), "item_" + dept.getId()); // "item_" + dept.getId()
}
return allCode;
}
6. 在页面中显示模式对话框:这个步骤主要使用JS和HTML的知识,主要流程:在需要弹出模式对话框的选项栏设置readonly属性为true,这里打开模式对话框使用的方法是window.showMedalDialog(),可以通过传入参数来定制模式对话框大小
7. 在模式对话框中选择一个部门,更新员工所属部门的信息:模式对话框默认点击打开一个新的窗口,这里需要指定模式对话框页面属性<base target="_self">;更新员工所属部门信息需要调用Dom对象的forms属性为当前window窗口的对应属性赋值