我的java学习笔记之项目-2015-12-2…

本文详细记录了在黑马平台赵栋老师的课程中关于JBPM和OA项目流程管理的笔记,涉及jQuery、流程变量等知识点。文章阐述了如何在工作中流线化流程、使用ERP进行数据分析与BI辅助决策、协同工作与权限模块的功能实现。同时介绍了Struts2框架的设计原则、数据与流程设计、开闭原则,以及如何在实际应用中解决AJAX集成、JSON结合等问题。此外,文章还对ZTree节点属性、异步处理、ThreadLocal、synchronized等概念进行了深入剖析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个是在黑马听赵栋老师讲jbpm和OA项目的时候做的笔记,jquery,jbpm流程变量等等一些东西,
过几天我们写的那个工作流相关的东西应该可以借鉴一下吧.
笔记散乱.不多说直接上原始笔记


OA:
办公自动化;
工作流
ERP:
用工作流工作;可以统计数据;
数据分析;BI:business intelligence商务智能;

在执行流程的过程中,会产生很多的数据,对数据进行详细的统计分析;
从而得出一些实用的结论,在今后的决策过程中会更加的合理;

协同工作:
协同OA:多部门协同工作;

值栈的生命周期就是当前请求;

js文件的引入顺序要对;

涉及到懒加载使用OpenSessionInview要在所有的action名称后面加;.action;

action中要慎用getXXx方法开头;

可否用监听器将部门和position放在application中;


struts2的设计原则:
 1 数据的设计原则
 2 流程的设计原则
 3 开闭的设计原则



action中可以直接测试;
ActionConfig:可以获取到配置文件中的所有东东
ActionContext:action上下文;
ActionInvocation:struts2的上下文;

拦截器不是执行两次,而是方法栈的延伸;
第一个拦截器的拦截方法生命周期最长;
struts不好的地方:对ajax集成的不是很好,当服务器端出错时;
客户端收不到对应的状态码提示;只是将错误消息发给客户端;
服务端可以手动通过response.setStatus();来完成;

struts2结合json时,对应输出到客户端的数据要用Json(serializ=false)注解进行标示,否则会出现错误;

1 struts2集成json时;对应的结果视图设置type=json,同时如果指定root为某个属性,并且该属性在对应的action中有
  set,get方法,那么在客户端接收数据可以直接用data,而不用data.xxx;
  同时需要注意的是,客户端接收的数据要放在栈顶中;

---客户端发送的数据要是json格式;


z-tree中的节点有这么几个属性;
1 节点id
2 父节点id
3 节点名称(显示);
4 节点对应的url,因为点击节点肯定是跳到一个地方去;
5 节点对应的url是新开一个页面,还是在原来的页面上增加内容;
----这就囊括了zTree的所有的东西了;我们用就是通过这些个东东去用的
而且这些数据都是以json格式进行组织的;key/value;

所谓的异步可不可这样理解,客户端开了两个线程,一个负责执行js代码,一个负责监听服务器端的响应并执行相关代码;
如果客户端执行的代码要用到服务端返回的数据;
必须要放入到监听服务端响应中的代码块中;
ThreadLocal:以空间换时间;
synchronized:以时间换空间;

getJSON();
getScript();
----支持跨域请求;
json格式的对象可以通过增强for循环给弄出来
for(var i in json){
json[i]=xx;---这里的i是json的key;
}

函数对象的typeof---返回function;
普通对象的typeof---返回Object;
数组对象的typeof---也是object;


回调函数是不是类似于java中的策略设计模式;

js边解释边执行;


权限模块的三个法则:用户,角色,权限----oracle数据库中;


js----看ext源码;
java---看spring的源码;

return false;----??这是希望当我点击设置权限的时候不立即提交,而是由下面的保存按钮来提交;


结构设计:
 init{
   
}

 data:

 operation:


node.js:c++写的,jdk8将支持他;性能很好,必须要学会;
定义一个函数:
function fun(){};
fun();
实际上上面其实是省略了
window.fun();--也就是说他是window对象的一个方法;

给一个对象动态添加属性;
总结一句话:
在js中,任何一个对象都有可能成为任何一个对象的属性;
 构造器函数:


a.b.c.d.f.fun();//a.b.c.d.f称之为fun函数的命名空间,
//但是前提是a.b.c.d.f都要存在;
prototype:是任何一个对象都有prototype属性;
prototype是一个对象; alert(typeof fun.prototype);--返回object;
利用构造器创建出来的对象就拥有prototype的属性;
var i=new Itheima();
alert(i.constuctor);//输出i的构造器;
闭包:在函数内部定义的函数,在外部要使用,就叫闭包;
1 继承的封装机制;
2 面向对象的封装;

()();---匿名函数,闭包范式;

学js要有分模块的思想,其实不仅仅js要有这种思想,学java也需要;

笔记要自己写,自己定义,印象就更加的深刻;


jquery内核解析;
(function(window,undefined){

})
(window,undefined);
--一个匿名自调函数;定义即调用;
jquery是一个函数,是一个对象,是一个构造器函数;

jquery内核解析要好好弄弄;
多弄几遍;

利用jquery的构造器创建出来的对象拥有prototype中的方法;
利用jquery的选择器创建出来的对象也拥有prototype中的方法;

window.jquery=window.$=jquery;

jquery.fn=jquery.prototype;

全局方法:直接$.post类似方式调用
和对象方法:需要通过jquery对象来调用;
$("username").each();
js中引入插件包的顺序要对象,被引用到的要放到前面;







用户的权限模块功能;
1  当你点击设置权限的时候,显示你的用户名,因为你是针对某个用户进行操作的,因此要显示用户名;
2  显示div
3  加载权限树;
4  完成全选复选框功能;
5  权限的回显;
6  保存用户,建立用户和权限之间的关系;

企业中js的组织关系:
1 初始化工作:包括事件和数据的初始haunted;
2 数据的传递;
3 操作




加载整个树,发送post请求;路径问题,需要注意;

移除属性:removeAttr(name);


接口前面加I

struts2全局错误处理;


如果数据是 复杂数据可以用ajax方法;
调用方法一定要加();--这个已经犯了恩次了;;;血的教训;


某个对象是一个持久化对象,是针对某个session而言的;

每个按钮加上一个id,标示当前操作的权限;--对应于权限表中的某条记录;

ajax用的是浏览器的缓存;需要浏览器要强大;




知识管理的分法:
按照种类分;
txt:
PDF;
WORD
按功能划分;
分医疗
  教育
  儿童
  物业

版本管理:有利于历史信息的管理;保留历史信息;

观察者模式
oracle中的触发器,当发生某个请求时,触发器中的代码执行;
java中的监听器;如果被监听对象状态发生改变,则对应的处理代码执行;
javascript中的ajax的回调函数:当服务端响应完成时自动触发该函数,执行相关操作;
javascript中事件触发机制;
java中的awt,swing即安卓中的:事件监听机制;

js右键:contextMenu事件;右键事件都是来源于此;
trim操作


权限的控制方案:
1 注解
2 spring aop;
3 struts2拦截器;

权限控制自己做一遍;

actionError,
actionMessage
fieldError;
的区别;

struts2中配置文件的统配符不能加到结果集中
:可以的name属性可以;


对知识管理树的维护
对树上每一个节点的版本管理;
对输入的信息进行分析;用lucene做全文检索;

设置controller层时,
设计一个action;BaseAction:所有的action都要直接或者间接的继承他;
在这里定义业务逻辑中需要用到的常量;

然后设计两个子类:这两个子类继承自基类;
一个实现模型驱动ModelDrivenAction,一个只继承ActionSupport;即:SubActionSupport;
在这两个类中写一些公有的代码功能;
比如常量等等;
如果你的action想用模型驱动,请继承ModelDrivenAction;
如果你不想用模型驱动:请使用SubActionSupport


用jpa的注解;来顶替Hibernate;

用过滤器来实现自动登录

ideal开发工具;

浏览器右键事件:oncontextmenu:右键事件;

服务端不能接收客户端发送的复杂的json格式的对象
比如:
kynamic:{
   kid:1,
   pid:0,
   ...
}
然后你在服务端用
kynamic对象进行接收,这样不行
但是记得老师讲过可以用$.ajax方式进行发送,服务端就可以接收了;


jbpm:jboss business process management;

主流:
jbpm5(完全新的东西), activiti5(在jbpm4的基础上发展而来,核心团队离职):
产品

分离关注;责任链(),在整个流程过程中,必须严格的把控流程的进程;
不可能跳过一个节点;

web service很重要;

申请请假,等等流程节点必须要由人执行;
mongodb;


jbpm数据库及事务交给hibernate;
jbpm的链式编程:C语言的东西;


三个表比较重要:
jbpm4_deployment:
jbpm4_lob:存放流程定义文件和图片;

jbpm4_deploymentprop;

  每部署一次pdid和deploymentid是一对一的关系;
  pdid:pdkey+pdversion;


对hibernate封装的很死:即是优点又是缺点;优化无能为力;
  delete:删除的时候比较难;

http协议:
多线程;
servlet;
设计模式;
js:
oracle数据库;sql语句;
ssh框架
项目:
SVN:分支branch;
  


临时表JBPM4_TASK:为什么任务执行完成了要删除临时表中的任务数据;?
1 因为任务执行的数据由*_hist_task存储;
这张表只存储当前正在执行的任务,这样职责更加分明;
利于执行任务的线程查询数据,这样更加高效;


当执行流程可以存在并发时一个process instance:有多个execution:
即每一个分支就是一个execution;

  
jbpm api中的每个id的意思,一定要搞懂;

流水线:类似;

事件触发机制;



流程控制工作及用户自定义进行分离;---分离关注;
流程变量是给执行流程的执行者进行赋值;
这是流程变量的意义所在;

固化任务执行者;当任务执行者不会变的时候;

任务执行者动态的分配;


可以给任务的执行者分配任务;
 
可以给任务分配任务执行人;

jbpm的事务交给谁去处理;
在发布流程时;每发布一次,版本号加一;

transition:流转;更加专业;
连线节点:节点节点之间互相连接;
JBPM开发绘制图:就是UML中的活动图: 
UML中有九种图:

流出节点:结束节点没有
流入节点:开始节点没有;
判断节点;decision
分支节点;fork;

使用ExcutionService.signalExecutionById();
如果当前的transition名称没有时,可以只指定
executionId,如果当前transition有name属性;
需要加收transition的name属性;---结束时也不需要;

流程可以有多个结束节点;
但是只能有一个开始节点;

state:等待节点:状态节点;
需要调用executionService.signalByExecutionId();
方法调用下一个流程节点;
state:让程序控制流转;
区别于任务节点:比如说发送邮件;
当前程序是要等待(一般都会启动一个线程去干这个事),待邮件发送完成后,
程序继续向后流转;
由于这个过程是由程序本身控制的,他内部会调用
signalByExecutionId方法执行下一个流程节点;
state不是任务,但是是活动节点;

decision节点非常重要:
表达式方式;
handler方式:
如果两者都有,以表达式为准;

decision可以实现循环流转;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值