paulwong

#

tomcat控制台中文乱码解决办法

1. 打开文件/tomcat/bin/catalina.bat
2. set JAVA_OPTS= 的内容中添加选项-Dfile.encoding=GBK
3. 重启tomcat即可

posted @ 2012-04-25 10:04 paulwong 阅读(4380) | 评论 (1)编辑 收藏

让REST也支持分布式事务

http://ajaxcn.iteye.com/blog/438237

posted @ 2012-04-24 13:14 paulwong 阅读(883) | 评论 (0)编辑 收藏

状态控制VS流程控制

曾经做过一个结算系统,对于一段期间内完成的订单做金额费用的结算,根据订单的金额付款,并计算出一些代理费用等等。
在付款之前,需要结算部门审核,财务部门的审核,上级主管的审核,客户的确认等等。这个是按项目来做的,没有上工作流系统。

对于付款前的那些级别的审核,都是用状态字段来控制的,主要是在结算单中增加审核的字段

财务审核状态,审核日期,审核意见,审核人
客户确认状态,确认日期,确认意见,确认人
上级主管审核状态,审核日期,审核意见,审核人

....

用状态来控制流程的流转的,
结算部门人员,登录系统后,点击 结算单确认,打开所有的未确认过的结算单,进行核对,核对过后,点击审核通过,则确认状态为 已确认。
财务人员登录后,点击 财务审核 菜单,打开所有结算已确认并且财务未通过的结算单,进行财务的核对。核对正确后,点击审核通过,则财务审核状态为 财务审核通过。

客户登录系统后,点击 结算单确认 菜单,打开财务审核通过,客户未确认的结算单,进行确认操作,客户确认后,客户确认状态就变成 已确认了.
....

最后到付款等,都是通过状态字段来控制的。
整个的流转只能是操作人员自己心里清楚,现在流转到那个阶段了,下一步需要谁来处理。


后来需求还在不断的变化,需要增加或减少一些审核,如代理的地方财政审核,代理公司的二级审核,又去掉上级主管的审核等等.....
总之涉及到钱的问题,都会很仔细了,层层审核,还需要加上ca签名认证,在真正付款之前,先核对一下ca签名的数据是否和现在的数据一致,避免审核过后,结算单又做了修改。

在增加审核的时候,就多增加一些字段,或者多增加一些状态值,并修改代码将字段和状态值的修改体现到代码中,使得流程能流转,并重新打包发布程序,最后再测试,发布,正式上线使用

来来回回的总是修改那些状态字段以及状态字段的值,控制页面的记录的显示,审核按钮等操作是否显示,一些只读的,隐藏的等等功能按钮也是靠状态值来控制的。
有时候要减一级的审核,并加一级的审核,就会将减掉的那级审核的状态字段修改到增加的那级审核上。
.....
一段时间后,这些状态字段以及状态字段的控制,就变得很复杂了,整个流转过程,谁也不清楚,或许实施人员心里大概有个底,也没准那个需求变化了,开发人员又“默默的”改了代码了。每次在要走一个流转的时候,会重新了解一下,不清楚的,就打开代码来查看了,大体上就是那样的,有一些审核的过程。


如果用工作流系统来做这个....
首先要在流程设计器中,画一个 结算单审批流程

制定结算单--》结算部确认--》财务部核对--》客户确认--》付款处理--》结束

在流程的设计器中的


结算单中也不需要增加那么多的字段了,只对应一张通用的审核表,有一级的审核,就往通用审核表中增加一条记录。

在结算单表中,也可以增加一个状态字段,记录每个节点的审核结果,便于单独做记录的查询用。

只需要一个菜单“制定结算单”,当结算单制作完成后,流程实例就启动了,下一步的办理,就完全走流程设计器中定义的节点了。
下一步的执行有两种方式:
从我的待办任务列表中链接进去
从流程实例的轨迹图中,点击节点进去,或 轨迹列表中单节行进去



每个流程实例的办理都有轨迹图显示,能清楚明确的看到每张结算单的审核过程


当有需求变化,需要增加一级的审核,则在流程设计器中,多画出一个审核节点,并增加一个结算单审批流程的版本,新的结算单流程按新的版本启动。
有减少一级的审核或处理,也是在设计器中,删除一个节点。

需要查看结算单的审批流程,只要打开流程设计器,查看流程的节点。或者查看流程实例运行的轨迹,也可以查询到结算单的审批过程。


运行工作流系统后,流程变得有迹可循了,不再是杂乱无章的。

posted @ 2012-04-24 00:56 paulwong 阅读(367) | 评论 (0)编辑 收藏

免费的流程设计器

免费的流程设计器:
http://wind2154.iteye.com/blog/1464359

posted @ 2012-04-23 22:35 paulwong 阅读(391) | 评论 (0)编辑 收藏

ACTIVITI在LINUX下查看流程图片中文字体出现乱码的解决方案

问题产生:我配置在linux上的tomcat服务器生成图片时中文,出现很多小方框,不能正常显示。

问题解决过程:通过网络上搜索资料,发现是因为linux上jre对中文支持的问题。后来发现这篇小文章:
----------------------------------------------------------------------------------------------

JDK 6 for linux的中文问题

在linux下做java开发已经好几年了,经历了jdk1.4 -> 6.0。看着java在linux下的中文问题已经在慢慢改善。到6.0不做任配置都已经能正常运行很多中文程序,但可惜还是会有些中文问题。例如运行 jedit, netbeans等程序。甚至是自己写的hello world swing程序的系统菜单都是乱码的。

但解决方法很简单,在JRE 5以上的java环境中,java会自动加载$JAVA_HOME/jre/lib/fonts/fallback目录下的字体。链接或复制宋体或微软雅黑等字体到该目录即可解决。

但官方文档上说此法只适用于swing程序,要让awt程序也支持中文,还要自己设字体配置文件。由于我很少会用到awt程序,也就懒得去改了,有需要的朋友请参考Font Configuration Files

进行操作:
在Windows XP的字体目录下,找到simsun.ttc的字体文件,重命名为simsun.ttf,然后将该文件复制到linux的/usr/local/jdk/jre/lib/fonts/fallback/(这个fallback目录如果不存在则先创建这个目录)下面,因为 simsun.ttf 字体文件对应的是宋体,则在程序中使用的时候设置字体为“宋体”,修改fonts.dir为以下内容。

59
LucidaBrightRegular.ttf -b&h-lucidabright-medium-r-normal--
0-0-0-0-p-0-iso8859-1
LucidaBrightItalic.ttf -b&h-lucidabright-medium-i-normal--
0-0-0-0-p-0-iso8859-1
LucidaBrightDemiBold.ttf -b&h-lucidabright-demibold-r-normal--
0-0-0-0-p-0-iso8859-1
LucidaBrightDemiItalic.ttf -b&h-lucidabright-demibold-i-normal--
0-0-0-0-p-0-iso8859-1
LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-
0-0-0-0-p-0-iso8859-1
LucidaSansDemiBold.ttf -b&h-lucidasans-bold-r-normal-sans-
0-0-0-0-p-0-iso8859-1
LucidaTypewriterRegular.ttf -b&h-lucidatypewriter-medium-r-normal-sans-
0-0-0-0-m-0-iso8859-1
LucidaTypewriterBold.ttf -b&h-lucidatypewriter-bold-r-normal-sans-
0-0-0-0-m-0-iso8859-1
LucidaBrightRegular.ttf -b&h-lucidabright-medium-r-normal--
0-0-0-0-p-0-iso8859-2
LucidaBrightItalic.ttf -b&h-lucidabright-medium-i-normal--
0-0-0-0-p-0-iso8859-2
LucidaBrightDemiBold.ttf -b&h-lucidabright-demibold-r-normal--
0-0-0-0-p-0-iso8859-2
LucidaBrightDemiItalic.ttf -b&h-lucidabright-demibold-i-normal--
0-0-0-0-p-0-iso8859-2
LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-
0-0-0-0-p-0-iso8859-2
LucidaSansDemiBold.ttf -b&h-lucidasans-bold-r-normal-sans-
0-0-0-0-p-0-iso8859-2
LucidaTypewriterRegular.ttf -b&h-lucidatypewriter-medium-r-normal-sans-
0-0-0-0-m-0-iso8859-2
LucidaTypewriterBold.ttf -b&h-lucidatypewriter-bold-r-normal-sans-
0-0-0-0-m-0-iso8859-2
LucidaBrightRegular.ttf -b&h-lucidabright-medium-r-normal--
0-0-0-0-p-0-iso8859-4
LucidaBrightItalic.ttf -b&h-lucidabright-medium-i-normal--
0-0-0-0-p-0-iso8859-4
LucidaBrightDemiBold.ttf -b&h-lucidabright-demibold-r-normal--
0-0-0-0-p-0-iso8859-4
LucidaBrightDemiItalic.ttf -b&h-lucidabright-demibold-i-normal--
0-0-0-0-p-0-iso8859-4
LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-
0-0-0-0-p-0-iso8859-4
LucidaSansDemiBold.ttf -b&h-lucidasans-bold-r-normal-sans-
0-0-0-0-p-0-iso8859-4
LucidaTypewriterRegular.ttf -b&h-lucidatypewriter-medium-r-normal-sans-
0-0-0-0-m-0-iso8859-4
LucidaTypewriterBold.ttf -b&h-lucidatypewriter-bold-r-normal-sans-
0-0-0-0-m-0-iso8859-4
LucidaBrightRegular.ttf -b&h-lucidabright-medium-r-normal--
0-0-0-0-p-0-iso8859-5
LucidaBrightItalic.ttf -b&h-lucidabright-medium-i-normal--
0-0-0-0-p-0-iso8859-5
LucidaBrightDemiBold.ttf -b&h-lucidabright-demibold-r-normal--
0-0-0-0-p-0-iso8859-5
LucidaBrightDemiItalic.ttf -b&h-lucidabright-demibold-i-normal--
0-0-0-0-p-0-iso8859-5
LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-
0-0-0-0-p-0-iso8859-5
LucidaSansDemiBold.ttf -b&h-lucidasans-bold-r-normal-sans-
0-0-0-0-p-0-iso8859-5
LucidaTypewriterRegular.ttf -b&h-lucidatypewriter-medium-r-normal-sans-
0-0-0-0-m-0-iso8859-5
LucidaTypewriterBold.ttf -b&h-lucidatypewriter-bold-r-normal-sans-
0-0-0-0-m-0-iso8859-5
LucidaBrightRegular.ttf -b&h-lucidabright-medium-r-normal--
0-0-0-0-p-0-iso8859-7
LucidaBrightItalic.ttf -b&h-lucidabright-medium-i-normal--
0-0-0-0-p-0-iso8859-7
LucidaBrightDemiBold.ttf -b&h-lucidabright-demibold-r-normal--
0-0-0-0-p-0-iso8859-7
LucidaBrightDemiItalic.ttf -b&h-lucidabright-demibold-i-normal--
0-0-0-0-p-0-iso8859-7
LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-
0-0-0-0-p-0-iso8859-7
LucidaSansDemiBold.ttf -b&h-lucidasans-bold-r-normal-sans-
0-0-0-0-p-0-iso8859-7
LucidaTypewriterRegular.ttf -b&h-lucidatypewriter-medium-r-normal-sans-
0-0-0-0-m-0-iso8859-7
LucidaTypewriterBold.ttf -b&h-lucidatypewriter-bold-r-normal-sans-
0-0-0-0-m-0-iso8859-7
LucidaBrightRegular.ttf -b&h-lucidabright-medium-r-normal--
0-0-0-0-p-0-iso8859-9
LucidaBrightItalic.ttf -b&h-lucidabright-medium-i-normal--
0-0-0-0-p-0-iso8859-9
LucidaBrightDemiBold.ttf -b&h-lucidabright-demibold-r-normal--
0-0-0-0-p-0-iso8859-9
LucidaBrightDemiItalic.ttf -b&h-lucidabright-demibold-i-normal--
0-0-0-0-p-0-iso8859-9
LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-
0-0-0-0-p-0-iso8859-9
LucidaSansDemiBold.ttf -b&h-lucidasans-bold-r-normal-sans-
0-0-0-0-p-0-iso8859-9
LucidaTypewriterRegular.ttf -b&h-lucidatypewriter-medium-r-normal-sans-
0-0-0-0-m-0-iso8859-9
LucidaTypewriterBold.ttf -b&h-lucidatypewriter-bold-r-normal-sans-
0-0-0-0-m-0-iso8859-9
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-ascii-0
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-cns11643-1
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-cns11643-2
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-cns11643-3
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-gb18030.2000-0
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-gb2312.1980-0
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-gbk-0
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-ibm-cp850
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-iso10646-1
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-iso8859-1
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-iso8859-15
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-jisx0208.1983-0
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-jisx0208.1990-0
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-jisx0212.1990-0
:
1:simsun.ttf -misc-NSimSun-medium-r-normal--0-0-0-0-m-0-koi8-r
:
2:simsun.ttf -misc-SimSun_PUA-medium-r-normal--0-0-0-0-c-0-iso10646-1
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-ascii-0
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-cns11643-1
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-cns11643-2
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-cns11643-3
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-gb18030.2000-0
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-gb2312.1980-0
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-gbk-0
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-ibm-cp850
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-iso10646-1
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-iso8859-1
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-iso8859-15
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-jisx0208.1983-0
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-jisx0208.1990-0
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-jisx0212.1990-0
simsun.ttf -misc-SimSun-medium-r-normal--
0-0-0-0-c-0-koi8-r


重新启动tomcat服务,运行程序,中文正确显示。该问题解决。

posted @ 2012-04-23 15:13 paulwong 阅读(3450) | 评论 (1)编辑 收藏

BONITA资源

http://www.ibm.com/developerworks/cn/java/j-bpm1/

用于业务流程管理的 Bonita,第 2 部分 : 配置表单和变量
http://www.ibm.com/developerworks/cn/java/j-bpm2/

社区
http://mybpm.sinaapp.com/forum.php

qq群:125403032
我们是bonita bpm 的北京研发中心 上面是我们的群。

BONITABPM
http://bonitabpm.iteye.com/

posted @ 2012-04-20 11:35 paulwong 阅读(194) | 评论 (0)编辑 收藏

数据库的锁机制

在进行SELECT操作时,通常接下来会进行UPADTE的操作,如果希望COMMIT前,所SELECT的数据不会被其他线程SELECT出来,则两个线程都加FOR UPDATE/FOR UPDATE NOWAIT关键字,这样数据库就会锁定这些记录,加了FOR UPDATE的会进行等待,直到上一线程结束,加了FOR UPDATE NOWAIT的线程则直接抛出异常,这种机制称为数据库的锁机制。

HIBERNATE中的实现:

LockMode.NONE :有缓存用缓存,没缓存则从数据库读 
LockMode.READ :直接从数据库读,不使用缓存数据 
LockMode.WRITE :在insert update数据的时候,HIBERNATE内部使用的。 
以上3种均为HIBERNATE级别的锁,也就是缓存级别的锁。 

下面2种为数据库级别的锁: 
LockMode.UPGRADE:相当于SQL语句select for update,被select的数据都被数据库锁住了,不能被其他事务修改。 
LockMode. UPGRADE_NOWAIT :是ORACLE数据库特有的select for update nowait

posted @ 2012-04-19 17:56 paulwong 阅读(345) | 评论 (0)编辑 收藏

BONITA

无意中发现一个开源的工作流引擎,包括BPM全套
http://www.bonitasoft.org

posted @ 2012-04-19 00:06 paulwong 阅读(354) | 评论 (0)编辑 收藏

一套不错的JQUERY UI框架:EASY UI

一套不错的JQUERY UI框架:EASY UI
http://www.jeasyui.com/

补一个常用的方法:
function closeSelectedTab(){
    
var tab = $('#tt').tabs('getSelected');
    alert(tab.panel('options').href);
    $('#tt').tabs('close',tab.panel('options').title);
    
//reloadTab(title,url);
}

posted @ 2012-04-17 22:57 paulwong 阅读(1543) | 评论 (0)编辑 收藏

神奇的图片

posted @ 2012-04-16 23:15 paulwong 阅读(155) | 评论 (0)编辑 收藏

仅列出标题
共110页: First 上一页 78 79 80 81 82 83 84 85 86 下一页 Last