<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_自由港</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/11281/rss</id><updated>2011-08-05T16:07:07Z</updated><author><name>自由港</name><uri>http://www.cnblogs.com/yg_zhang/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yg_zhang/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/11281/rss"/><entry><id>http://www.cnblogs.com/yg_zhang/archive/2011/08/06/2129117.html</id><title type="text">spring 读取资源文件方法</title><summary type="text">1.spring配置文件&amp;lt;beanid=&amp;quot;configproperties&amp;quot;class=&amp;quot;org.springframework.beans.factory.config.PropertiesFactoryBean&amp;quot;&amp;gt;&amp;lt;propertyname=&amp;quot;location&amp;quot;value=&amp;quot;classpath:jdbc.properties&amp;quot;/&amp;gt;&amp;lt;/bean&amp;gt;2.读取属性方法ApplicationContextc=newClassPathXmlApplicationContext(&amp;quot</summary><published>2011-08-05T16:07:00Z</published><updated>2011-08-05T16:07:00Z</updated><author><name>自由港</name><uri>http://www.cnblogs.com/yg_zhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yg_zhang/archive/2011/08/06/2129117.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yg_zhang/archive/2011/08/06/2129117.html"/><content type="html">&lt;p&gt;1.spring配置文件&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;bean&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="configproperties"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="org.springframework.beans.factory.config.PropertiesFactoryBean"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;property&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="location"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="classpath:jdbc.properties"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;bean&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;2.读取属性方法&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;ApplicationContext&amp;nbsp;c&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ClassPathXmlApplicationContext(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;classpath:applicationContext-datasource.xml&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;Properties&amp;nbsp;p&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;(Properties)c.getBean(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;configproperties&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;System.out.println(p.getProperty(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;jdbcOrcale.driverClassName&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yg_zhang/aggbug/2129117.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yg_zhang/archive/2011/08/06/2129117.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yg_zhang/archive/2011/08/01/2123805.html</id><title type="text">转 java 读取文件的字符集</title><summary type="text">public static String getCharset(File file) { String charset = &amp;quot;GBK&amp;quot;; byte[] first3Bytes = new byte[3]; try { boolean checked = false; BufferedInputStream bis = new BufferedInputStream( new FileInputStream(file)); bis.mark(0); int read = bis.read(first3Bytes, 0, 3); if (read == -1) return c</summary><published>2011-08-01T06:02:00Z</published><updated>2011-08-01T06:02:00Z</updated><author><name>自由港</name><uri>http://www.cnblogs.com/yg_zhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yg_zhang/archive/2011/08/01/2123805.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yg_zhang/archive/2011/08/01/2123805.html"/><content type="html">&lt;pre&gt;public static String getCharset(File file) {&#xD;
        String charset = "GBK";&#xD;
        byte[] first3Bytes = new byte[3];&#xD;
        try {&#xD;
            boolean checked = false;&#xD;
            BufferedInputStream bis = new BufferedInputStream(&#xD;
                  new FileInputStream(file));&#xD;
            bis.mark(0);&#xD;
            int read = bis.read(first3Bytes, 0, 3);&#xD;
            if (read == -1)&#xD;
                return charset;&#xD;
            if (first3Bytes[0] == (byte) 0xFF &amp;amp;&amp;amp; first3Bytes[1] == (byte) 0xFE) {&#xD;
                charset = "UTF-16LE";&#xD;
                checked = true;&#xD;
            } else if (first3Bytes[0] == (byte) 0xFE &amp;amp;&amp;amp; first3Bytes[1]&#xD;
                == (byte) 0xFF) {&#xD;
                charset = "UTF-16BE";&#xD;
                checked = true;&#xD;
            } else if (first3Bytes[0] == (byte) 0xEF &amp;amp;&amp;amp; first3Bytes[1]&#xD;
                    == (byte) 0xBB&#xD;
                    &amp;amp;&amp;amp; first3Bytes[2] == (byte) 0xBF) {&#xD;
                charset = "UTF-8";&#xD;
                checked = true;&#xD;
            }&#xD;
            bis.reset();&#xD;
            if (!checked) {&#xD;
                int loc = 0;&#xD;
                while ((read = bis.read()) != -1) {&#xD;
                    loc++;&#xD;
                    if (read &amp;gt;= 0xF0)&#xD;
                        break;&#xD;
                    //单独出现BF以下的，也算是GBK&#xD;
                    if (0x80 &amp;lt;= read &amp;amp;&amp;amp; read &amp;lt;= 0xBF)&#xD;
                        break;&#xD;
                    if (0xC0 &amp;lt;= read &amp;amp;&amp;amp; read &amp;lt;= 0xDF) {&#xD;
                        read = bis.read();&#xD;
                        if (0x80 &amp;lt;= read &amp;amp;&amp;amp; read &amp;lt;= 0xBF)// 双字节 (0xC0 - 0xDF)&#xD;
                            // (0x80 -&#xD;
                            // 0xBF),也可能在GB编码内&#xD;
                            continue;&#xD;
                        else&#xD;
                            break;&#xD;
                     // 也有可能出错，但是几率较小&#xD;
                    } else if (0xE0 &amp;lt;= read &amp;amp;&amp;amp; read &amp;lt;= 0xEF) {&#xD;
                        read = bis.read();&#xD;
                        if (0x80 &amp;lt;= read &amp;amp;&amp;amp; read &amp;lt;= 0xBF) {&#xD;
                            read = bis.read();&#xD;
                            if (0x80 &amp;lt;= read &amp;amp;&amp;amp; read &amp;lt;= 0xBF) {&#xD;
                                charset = "UTF-8";&#xD;
                                break;&#xD;
                            } else&#xD;
                                break;&#xD;
                        } else&#xD;
                            break;&#xD;
                    }&#xD;
                }&#xD;
                System.out.println(loc + " " + Integer.toHexString(read));&#xD;
            }&#xD;
            bis.close();&#xD;
        } catch (Exception e) {&#xD;
            e.printStackTrace();&#xD;
        }&#xD;
        return charset;&#xD;
    }&lt;/pre&gt;&lt;!--/entry --&gt;&lt;img src="http://www.cnblogs.com/yg_zhang/aggbug/2123805.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yg_zhang/archive/2011/08/01/2123805.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yg_zhang/archive/2011/07/29/2121281.html</id><title type="text">dwr 读取cookie</title><summary type="text">import org.directwebremoting.WebContextFactory;HttpServletRequest req= WebContextFactory.get().getHttpServletRequest();HttpSession session=WebContextFactory.get().getSession();</summary><published>2011-07-29T09:22:00Z</published><updated>2011-07-29T09:22:00Z</updated><author><name>自由港</name><uri>http://www.cnblogs.com/yg_zhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yg_zhang/archive/2011/07/29/2121281.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yg_zhang/archive/2011/07/29/2121281.html"/><content type="html">&lt;p&gt;import org.directwebremoting.WebContextFactory;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;HttpServletRequest req= WebContextFactory.get().getHttpServletRequest();&lt;br /&gt;&amp;nbsp;&amp;nbsp;HttpSession session=WebContextFactory.get().getSession();&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yg_zhang/aggbug/2121281.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yg_zhang/archive/2011/07/29/2121281.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yg_zhang/archive/2011/03/22/1991173.html</id><title type="text">JAVA实现AD验证</title><summary type="text">package service;import java.util.Hashtable;import javax.naming.Context;import javax.naming.NamingException;import javax.naming.directory.DirContext;import javax.naming.directory.InitialDirContext;public class AuthAd{/*** @param args*/public static void main(String[] args) {// TODO Auto-generated met</summary><published>2011-03-22T03:33:00Z</published><updated>2011-03-22T03:33:00Z</updated><author><name>自由港</name><uri>http://www.cnblogs.com/yg_zhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yg_zhang/archive/2011/03/22/1991173.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yg_zhang/archive/2011/03/22/1991173.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;package service;&lt;br /&gt;import java.util.Hashtable;&lt;/p&gt;&#xD;
&lt;p&gt;import javax.naming.Context;&lt;/p&gt;&#xD;
&lt;p&gt;import javax.naming.NamingException;&lt;/p&gt;&#xD;
&lt;p&gt;import javax.naming.directory.DirContext;&lt;/p&gt;&#xD;
&lt;p&gt;import javax.naming.directory.InitialDirContext;&lt;/p&gt;&#xD;
&lt;p&gt;public class AuthAd&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;/**&lt;/p&gt;&#xD;
&lt;p&gt;* @param args&lt;/p&gt;&#xD;
&lt;p&gt;*/&lt;/p&gt;&#xD;
&lt;p&gt;public static void main(String[] args) {&lt;/p&gt;&#xD;
&lt;p&gt;// TODO Auto-generated method stub&lt;/p&gt;&#xD;
&lt;p&gt;String userName = "aaa";&amp;nbsp;&amp;nbsp; //用户名称&lt;/p&gt;&#xD;
&lt;p&gt;String password = "&lt;a href="&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#116;&amp;#111;&amp;#58;&amp;#122;&amp;#104;&amp;#97;&amp;#110;&amp;#103;&amp;#121;&amp;#103;&amp;#64;&amp;#50;&amp;#48;&amp;#49;&amp;#48;&amp;#48;&amp;#50;&amp;#49;&amp;#48;"&gt;bbb&lt;/a&gt;";&amp;nbsp;&amp;nbsp; //密码&lt;/p&gt;&#xD;
&lt;p&gt;String host = "192.168.40.17";&amp;nbsp; //AD服务器&lt;/p&gt;&#xD;
&lt;p&gt;String port = "389";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //端口&lt;/p&gt;&#xD;
&lt;p&gt;String domain = "@xxxx.xx";&amp;nbsp;&amp;nbsp; //邮箱的后缀名&lt;/p&gt;&#xD;
&lt;p&gt;String url = new String("ldap://" + host + ":" + port);&lt;/p&gt;&#xD;
&lt;p&gt;String user = userName.indexOf(domain) &amp;gt; 0 ? userName : userName + domain;&lt;/p&gt;&#xD;
&lt;p&gt;Hashtable&amp;lt;String, String&amp;gt; env = new Hashtable&amp;lt;String, String&amp;gt;();&lt;/p&gt;&#xD;
&lt;p&gt;DirContext ctx;&lt;/p&gt;&#xD;
&lt;p&gt;env.put(Context.SECURITY_AUTHENTICATION, "simple");&lt;/p&gt;&#xD;
&lt;p&gt;env.put(Context.SECURITY_PRINCIPAL, user);&amp;nbsp; &lt;/p&gt;&#xD;
&lt;p&gt;env.put(Context.SECURITY_CREDENTIALS, password);&lt;/p&gt;&#xD;
&lt;p&gt;env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");&lt;/p&gt;&#xD;
&lt;p&gt;env.put(Context.PROVIDER_URL, url);&lt;/p&gt;&#xD;
&lt;p&gt;try {&lt;/p&gt;&#xD;
&lt;p&gt;ctx = new InitialDirContext(env);&lt;/p&gt;&#xD;
&lt;p&gt;ctx.close();&lt;/p&gt;&#xD;
&lt;p&gt;System.out.println("验证成功！");&lt;/p&gt;&#xD;
&lt;p&gt;} catch (NamingException err) {&lt;/p&gt;&#xD;
&lt;p&gt;err.printStackTrace();&lt;/p&gt;&#xD;
&lt;p&gt;System.out.println("验证失败！");&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yg_zhang/aggbug/1991173.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yg_zhang/archive/2011/03/22/1991173.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yg_zhang/archive/2011/03/12/1982481.html</id><title type="text">JBPM FAQ</title><summary type="text">1.如果在assignhandler 中取得当前的节点：((ExecutionImpl) openExecution).getActivity()2.动态创建连接。publicvoidcreateNewTransition(ProcessInstanceprocessInstance,StringstartActivity,StringendActivity){StringprocessDefinitionId=processInstance.getProcessDefinitionId();ProcessDefinitionImplprocessDefinition=(ProcessDefi</summary><published>2011-03-12T15:41:00Z</published><updated>2011-03-12T15:41:00Z</updated><author><name>自由港</name><uri>http://www.cnblogs.com/yg_zhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yg_zhang/archive/2011/03/12/1982481.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yg_zhang/archive/2011/03/12/1982481.html"/><content type="html">&lt;p&gt;1.如果在assignhandler 中取得当前的节点：&lt;/p&gt;&#xD;
&lt;p&gt;((ExecutionImpl) openExecution).getActivity()&lt;br /&gt;2.动态创建连接。&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;createNewTransition(ProcessInstance&amp;nbsp;processInstance&amp;nbsp;,String&amp;nbsp;startActivity&amp;nbsp;,&amp;nbsp;String&amp;nbsp;endActivity){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;processDefinitionId&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;processInstance.getProcessDefinitionId();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProcessDefinitionImpl&amp;nbsp;processDefinition&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;(ProcessDefinitionImpl)processEngine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.getRepositoryService()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.createProcessDefinitionQuery()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.processDefinitionId(processDefinitionId)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.uniqueResult();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Execution&amp;nbsp;execution&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;processInstance.findActiveExecutionIn(startActivity);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(execution&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;在&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;processDefinitionId&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;中没有找到startActivity活动名称&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;startActivity);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecutionImpl&amp;nbsp;executionImpl&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(ExecutionImpl)&amp;nbsp;execution;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Activity&amp;nbsp;activity&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;executionImpl.getActivity();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ActivityImpl&amp;nbsp;activityFind&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;processDefinition.findActivity(endActivity);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;判断在流程中是否有这个结点&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(activityFind&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;在&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;processDefinitionId&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;中没有找endActivity活动名称&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;endActivity);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TransitionImpl&amp;nbsp;transition&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;activityFind.createOutgoingTransition();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;transitionName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;startActivity&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;-to-&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;endActivity;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transition.setName(transitionName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transition.setDestination(activityFind);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((ActivityImpl)activity).addOutgoingTransition(transition);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;验证&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Execution&amp;nbsp;executionTemp&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;processInstance.findActiveExecutionIn(startActivity);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExecutionImpl&amp;nbsp;executionImplTemp&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(ExecutionImpl)&amp;nbsp;execution;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ActivityImpl&amp;nbsp;activitytemp&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;(ActivityImpl)executionImpl.getActivity();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Transition&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;transitions&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;activitytemp.getOutgoingTransitions();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt;(Transition&amp;nbsp;transition1&amp;nbsp;:&amp;nbsp;transitions){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;transition&amp;nbsp;name&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;transition1.getName());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;3.整合spring后如和从AssignHandler获取bean&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;把jbpm4与spring整合之后。&lt;/p&gt;&#xD;
&lt;p&gt;可以在assignmenthandler中通过EnvironmentImpl.getFromCurrent()获得spring中定义的bean。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;在jpdl.xml中，直接设置了class，因此assignmenthandler没有被spring托管，不被spring管理的bean是不会从spring获得依赖的 &lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;4.&lt;strong&gt;&lt;font size="2"&gt;获取当前流程实例所处的节点名字&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;List&amp;lt;ProcessInstance&amp;gt; processInstanceList = executionService.createProcessInstanceQuery().list();&lt;br /&gt;for(ProcessInstance pi : processInstanceList){&lt;br /&gt;pi.findActiveActivityNames()&lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;5.&lt;strong&gt;&lt;font size="2"&gt;概念 processinstance和execution的区别&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;两者是存储在一张表里的，两个接口的具体实现类也是一样的，都是ExecutionImpl。&lt;br /&gt;&lt;br /&gt;区别是，当流程中拥有多个分支并发execution时，处于最顶级的execution就叫做ProcessInstance。&lt;br /&gt;&lt;br /&gt;如果流程中没有并发，只有一条主线，那么这个execution就是processInstance。&lt;/p&gt;&#xD;
&lt;p&gt;在使用fork分支之后，一个processInstance下就会出现多个execution，每个execution指向对应的分支。&lt;/p&gt;&#xD;
&lt;p&gt;如果没有分支，就只有一个process instance，它既是execution又是process instance。所谓的process isntance就是没有parent的特殊execution。&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;6.从事件中获取Session&lt;/p&gt;&#xD;
&lt;p&gt;Session session = EnvironmentImpl.getFromCurrent(Session.class);&lt;br /&gt;&lt;br /&gt;7.查询已完成的任务&lt;/p&gt;&#xD;
&lt;p&gt;historyService中没有提供直接查询已完成任务的途径，需要自己通过hibernate查询HistoryTaskImpl，查询条件为endTime is not null。&lt;br /&gt;8.获取开始的活动。&lt;/p&gt;&#xD;
&lt;p&gt;processDefinitionImpl.getInital()就是第一个start活动&lt;/p&gt;&#xD;
&lt;p&gt;9.execution和task的关系是，task.getExecutionId()，通过task的executionId可以查询到对应的execution.&lt;br /&gt;&lt;br /&gt;10.默认情况下，流程会按照顺序执行，第一个任务结束后才会创建第二个任务&lt;br /&gt;&lt;br /&gt;如果想并行同时发起任务，使用fork join&lt;/p&gt;&#xD;
&lt;p&gt;11.获取当前活动对应的活动节点，要先通过task的name去查询任务对应的activity，然后获得activity所有的outgoingTransition，然后获得每个outgoingTransition的destination，也就是连线后面的节点了。&lt;/p&gt;&#xD;
&lt;p&gt;12.获取 TaskImpl task = (TaskImpl) taskService.getTask(taskId);&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;13.获取join活动完成的活动的个数，获得processInstance，找到childExecutions，判断有几个状态不是inactive-join。 &lt;/p&gt;&#xD;
&lt;p&gt;14.通过historyService查询HistoryProcessInstance，没有结束时间的，是未完成的。有结束时间的，是已完成的。&lt;/p&gt;&#xD;
&lt;p&gt;15.Task是Execution执行到TaskActivity创建出来的，task完成后，会触发对应的Execution继续执行。&lt;/p&gt;&#xD;
&lt;p&gt;16.任务分配后，可以使用taskService.assignTask()进行任务的重新分配。 &lt;/p&gt;&#xD;
&lt;p&gt;17.在监听器中获取任务实例的方法。TaskImpl task = EnvironmentImpl.getFromCurrent(DbSession.class).findTaskByExecution(execution);&lt;br /&gt;18.任务节点&lt;/p&gt;&#xD;
&lt;p&gt;* 任务创建&lt;br /&gt;&amp;nbsp;&amp;nbsp; * 1.创建任务&lt;br /&gt;&amp;nbsp;&amp;nbsp; * &amp;nbsp;设置任务参数。&lt;br /&gt;&amp;nbsp;&amp;nbsp; * 2.设置人员&lt;br /&gt;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; 设置执行人&lt;br /&gt;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; 设置候选人&lt;br /&gt;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; 设置候选组&lt;br /&gt;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; 处理AssignHandler&lt;br /&gt;&amp;nbsp;&amp;nbsp; * 3.创建历史任务。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yg_zhang/aggbug/1982481.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yg_zhang/archive/2011/03/12/1982481.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yg_zhang/archive/2011/03/12/1982469.html</id><title type="text">JBPM使用assignHandler进行用户分派思路</title><summary type="text">任务分派实现思路：指派分两种情况：1.定义流程的时候进行指派。在流程定义的过程中，我们对步骤进行定义，指派执行人或者角色。2.在流程运行的过程中指。在流程执行过程中对下一步的任务进行指定执行人。我们可以使用AssignHandler来实现这个具体的步骤。我们可以事先定义好指定的流程变量如：startUser,assign等。如果发现流程变量中有这几个变量，就可以对流程的任务进行分派。如果流程变量中没有定义这些流程变量，我们可以尝试从定义的数据库中取出该节点的人员进行任务指派。</summary><published>2011-03-12T15:16:00Z</published><updated>2011-03-12T15:16:00Z</updated><author><name>自由港</name><uri>http://www.cnblogs.com/yg_zhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yg_zhang/archive/2011/03/12/1982469.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yg_zhang/archive/2011/03/12/1982469.html"/><content type="html">&lt;p&gt;任务分派实现思路：&lt;/p&gt;&#xD;
&lt;p&gt;指派分两种情况：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.定义流程的时候进行指派。&lt;/p&gt;&#xD;
&lt;p&gt;在流程定义的过程中，我们对步骤进行定义，指派执行人或者角色。&lt;/p&gt;&#xD;
&lt;p&gt;2.在流程运行的过程中指。&lt;/p&gt;&#xD;
&lt;p&gt;在流程执行过程中对下一步的任务进行指定执行人。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们可以使用AssignHandler来实现这个具体的步骤。&lt;/p&gt;&#xD;
&lt;p&gt;我们可以事先定义好指定的流程变量如：&lt;/p&gt;&#xD;
&lt;p&gt;startUser,assign等。&lt;/p&gt;&#xD;
&lt;p&gt;如果发现流程变量中有这几个变量，就可以对流程的任务进行分派。&lt;/p&gt;&#xD;
&lt;p&gt;如果流程变量中没有定义这些流程变量，我们可以尝试从定义的数据库中取出该节点的人员进行任务指派。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yg_zhang/aggbug/1982469.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yg_zhang/archive/2011/03/12/1982469.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yg_zhang/archive/2011/03/12/1982447.html</id><title type="text">直接修改jpbm xml流程定义字段的方法</title><summary type="text">找到了一个直接修改流程定义字段的方法。package org.jbpm.pvm.internal.cmd;import java.io.IOException;import java.io.InputStream;import org.jbpm.api.JbpmException;import org.jbpm.api.cmd.Command;import org.jbpm.api.cmd.Environment;import org.jbpm.pvm.internal.session.RepositorySession;import org.jbpm.pvm.internal.util.Io</summary><published>2011-03-12T14:39:00Z</published><updated>2011-03-12T14:39:00Z</updated><author><name>自由港</name><uri>http://www.cnblogs.com/yg_zhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yg_zhang/archive/2011/03/12/1982447.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yg_zhang/archive/2011/03/12/1982447.html"/><content type="html">&lt;p&gt;找到了一个直接修改流程定义字段的方法。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;package org.jbpm.pvm.internal.cmd;&lt;/p&gt;&#xD;
&lt;p&gt;import java.io.IOException;&lt;br /&gt;import java.io.InputStream;&lt;/p&gt;&#xD;
&lt;p&gt;import org.jbpm.api.JbpmException;&lt;br /&gt;import org.jbpm.api.cmd.Command;&lt;br /&gt;import org.jbpm.api.cmd.Environment;&lt;br /&gt;import org.jbpm.pvm.internal.session.RepositorySession;&lt;br /&gt;import org.jbpm.pvm.internal.util.IoUtil;&lt;/p&gt;&#xD;
&lt;p&gt;/**&lt;br /&gt;&amp;nbsp;* @author Tom Baeyens&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;public class UpdateDeploymentResourceCmd implements Command&amp;lt;Void&amp;gt; {&lt;/p&gt;&#xD;
&lt;p&gt;private static final long serialVersionUID = 1L;&lt;/p&gt;&#xD;
&lt;p&gt;protected String deploymentId;&lt;br /&gt;&amp;nbsp; protected String resourceName;&lt;br /&gt;&amp;nbsp; protected byte[] bytes;&lt;/p&gt;&#xD;
&lt;p&gt;public UpdateDeploymentResourceCmd(String deploymentId, String resourceName,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStream inputStream) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.deploymentId = deploymentId;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.resourceName = resourceName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bytes = IoUtil.readBytes(inputStream);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (IOException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new JbpmException("could not read resource: " + resourceName, e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IoUtil.close(inputStream);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;/p&gt;&#xD;
&lt;p&gt;public Void execute(Environment environment) throws Exception {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RepositorySession repositorySession = environment.get(RepositorySession.class);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; repositorySession.updateDeploymentResource(deploymentId, resourceName, bytes);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;&amp;nbsp; }&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yg_zhang/aggbug/1982447.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yg_zhang/archive/2011/03/12/1982447.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yg_zhang/archive/2011/03/03/1969871.html</id><title type="text">找到一篇jbpm session closed解决办法的文章</title><summary type="text">在处理删除参数的过程中，发现报org.hibernate.LazyInitializationException:failed to lazily initialize a collection of role: org.jbpm.pvm.internal.model.ExecutionImpl.variables, no session or session was closed 代码如下：ExecutionService executionService = processEngine.getExecutionService();ProcessInstance executionServi</summary><published>2011-03-03T06:12:00Z</published><updated>2011-03-03T06:12:00Z</updated><author><name>自由港</name><uri>http://www.cnblogs.com/yg_zhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yg_zhang/archive/2011/03/03/1969871.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yg_zhang/archive/2011/03/03/1969871.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在处理删除参数的过程中，发现报org.hibernate.LazyInitializationException:failed to lazily initialize a collection of role: org.jbpm.pvm.internal.model.ExecutionImpl.variables, no session or session was closed &lt;/p&gt;&#xD;
&lt;p&gt;代码如下：&lt;/p&gt;&#xD;
&lt;p&gt;ExecutionService executionService = processEngine.getExecutionService();&lt;br /&gt;ProcessInstance executionService.createProcessInstanceQuery().processDefinitionId(processInstanceId).list();&lt;br /&gt;((ExecutionImpl)processInstance2).removeVariable("aa");//删除变量aa时报错。因为Variable设置是延迟加载解决方式一：如果采用的是BS开发模式可以在web.xml中配制OpenSessionInViewFilter（注意：必须写在struts的配置下面）&amp;lt;filter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filter-name&amp;gt;OpenSessionInViewFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filter-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/filter-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/filter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filter-name&amp;gt;OpenSessionInViewFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/filter-mapping&amp;gt;在application.xml中加入&lt;br /&gt;&amp;lt;!-- 支持 @Transactional 标记 --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tx:annotation-driven transaction-manager="transactionManager"/&amp;gt; &lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;!-- 支持 @AspectJ 标记--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;aop:aspectj-autoproxy /&amp;gt; &lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;aop:config proxy-target-class="true"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;aop:advisor pointcut="execution(* org.jbpm..*.*(..))"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; advice-ref="txAdvice" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;aop:advisor pointcut="execution(* com.jihong.jbpm.api.JbpmTemplate.*(..))" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; advice-ref="txAdvice"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/aop:config&amp;gt; &lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;tx:advice id="txAdvice"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tx:attributes&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tx:method name="get*" read-only="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tx:method name="find*" read-only="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tx:method name="pagedQuery*" read-only="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tx:method name="load*" read-only="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tx:method name="remove*" read-only="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tx:method name="*" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tx:attributes&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tx:advice&amp;gt; &lt;/p&gt;&#xD;
&lt;p&gt;解决方式二：通过processEngine的execute方式可以将一段代码放到一个Hibernate的事务里执行这样就可以避免延迟加载。&lt;br /&gt;public class RemoveVarCommand implements Command&amp;lt;Void&amp;gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String processInstanceId;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String varKey;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public RemoveVarCommand(String processInstanceId,String varKey){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.processInstanceId=processInstanceId;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.varKey=varKey;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Void execute(Environment environment) throws Exception {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExecutionService executionService = environment.get(ExecutionService.class);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessInstance processInstance= executionService.findProcessInstanceById(processInstanceId);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((ExecutionImpl)processInstance).removeVariable(varKey);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;} &lt;/p&gt;&#xD;
&lt;p&gt;processEngine.execute(new RemoveVarCommand(processInstance.getId(), "aa"));&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;每个命令都是一个独立的事务操作，每个excuete方法都被一个hibernate事务所包含,jbpm推荐使用这种方式扩展相关的功能。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yg_zhang/aggbug/1969871.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yg_zhang/archive/2011/03/03/1969871.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yg_zhang/archive/2011/02/10/1950674.html</id><title type="text">jsp 自定义标签的写法</title><summary type="text">1.定义标签类。标签扩展 BodyTagSupport 类。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&amp;gt;packagetesttag;importjava.io.IOException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.jsp.JspException;importjavax.servlet.jsp.JspTagException;impor</summary><published>2011-02-10T04:44:00Z</published><updated>2011-02-10T04:44:00Z</updated><author><name>自由港</name><uri>http://www.cnblogs.com/yg_zhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yg_zhang/archive/2011/02/10/1950674.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yg_zhang/archive/2011/02/10/1950674.html"/><content type="html">&lt;p&gt;1.定义标签类。&lt;/p&gt;&#xD;
&lt;p&gt;标签扩展 BodyTagSupport 类。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('0119afc9-8230-4405-b70e-6393094734e0')"&gt;&lt;br/&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/&gt;http://www.CodeHighlighter.com/&lt;br/&gt;&lt;br/&gt;--&gt;&lt;span style="color: #0000ff"&gt;package&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;testtag;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;java.io.IOException;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;javax.servlet.http.HttpServletRequest;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;javax.servlet.jsp.JspException;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;javax.servlet.jsp.JspTagException;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;javax.servlet.jsp.JspWriter;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;javax.servlet.jsp.tagext.BodyTagSupport;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;javax.servlet.jsp.tagext.TagSupport;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LinkTag&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;extends&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;BodyTagSupport&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LinkTag()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;TODO&amp;nbsp;Auto-generated&amp;nbsp;constructor&amp;nbsp;stub&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;String&amp;nbsp;href&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;String&amp;nbsp;getHref()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;href;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;setHref(String&amp;nbsp;href)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.href&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;href;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;doStartTag()&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throws&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;JspTagException&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;EVAL_BODY_BUFFERED;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;doEndTag()&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throws&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;JspTagException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;body&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.getBodyContent().getString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HttpServletRequest&amp;nbsp;request&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(HttpServletRequest)pageContext.getRequest();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JspWriter&amp;nbsp;writer&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;pageContext.getOut();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;str&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;a&amp;nbsp;href='&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.href&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;'&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;body&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pageContext.getOut().print(str);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;catch&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(IOException&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;JspTagException(e.getMessage());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SKIP_BODY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2.定义标签文件 MyTagLib.tld。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('11c9d731-df9d-45e1-bd0d-d0b0251ea1dc')"&gt;&lt;br/&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/&gt;http://www.CodeHighlighter.com/&lt;br/&gt;&lt;br/&gt;--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff"&gt;xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="ISO-8859-1"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;taglib&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tlib-version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;1.0&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tlib-version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;jsp-version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;1.2&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;jsp-version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tag&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;linktag&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tag-class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;testtag.LinkTag&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tag-class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;body-content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;jsp&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;body-content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;attribute&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;href&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;required&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;true&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;required&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;rtexprvalue&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;true&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;rtexprvalue&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;attribute&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tag&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;taglib&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.在web.xml中添加引用。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/&gt;&lt;br/&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/&gt;http://www.CodeHighlighter.com/&lt;br/&gt;&lt;br/&gt;--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;jsp-config&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;taglib&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;taglib-uri&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;MyTagLib&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;taglib-uri&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;taglib-location&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;/WEB-INF/MyTagLib.tld&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;taglib-location&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;taglib&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;jsp-config&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;4.在页面中调用自定义标签。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/&gt;&lt;br/&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/&gt;http://www.CodeHighlighter.com/&lt;br/&gt;&lt;br/&gt;--&gt;&lt;span style="background-color: #ffff00; color: #000000"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;@taglib&amp;nbsp;uri&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;=&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;MyTagLib&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;&amp;nbsp;prefix&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;=&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;mytag&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;"&lt;/span&gt;&lt;span style="background-color: #ffff00; color: #000000"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;mytag:linktag&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;href&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://www.baidu.com"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;测试标签&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;mytag:linktag&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yg_zhang/aggbug/1950674.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yg_zhang/archive/2011/02/10/1950674.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yg_zhang/archive/2011/01/14/1935643.html</id><title type="text">jbpm 错误解决方法</title><summary type="text">1.执行流程出现如下错误：org.jbpm.pvm.internal.type.variable.UnpersistableVariable出现错误的原因：变量没有实现Serializable 接口解决办法：变量需要实现 Serializable 接口。2.java.lang.ClassCastException: $Proxy53 cannot be cast to oracle.sql.BLOB出现错误原因：我使用的是Hibernate 3.6版本。解决办法：在网上查到解决办法 使用 hibernate3.5.4替换3.6.3.项目启动第一次访问，发布流程没问题。但是第二次启动项目，再发布</summary><published>2011-01-14T07:38:00Z</published><updated>2011-01-14T07:38:00Z</updated><author><name>自由港</name><uri>http://www.cnblogs.com/yg_zhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yg_zhang/archive/2011/01/14/1935643.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yg_zhang/archive/2011/01/14/1935643.html"/><content type="html">&lt;p&gt;1.执行流程出现如下错误：&lt;/p&gt;&#xD;
&lt;p&gt;org.jbpm.pvm.internal.type.variable.UnpersistableVariable&lt;/p&gt;&#xD;
&lt;p&gt;出现错误的原因：&lt;/p&gt;&#xD;
&lt;p&gt;变量没有实现&amp;nbsp;&amp;nbsp;Serializable 接口&lt;/p&gt;&#xD;
&lt;p&gt;解决办法：&lt;/p&gt;&#xD;
&lt;p&gt;变量需要实现&amp;nbsp;&amp;nbsp; Serializable 接口。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2.java.lang.ClassCastException: $Proxy53 cannot be cast to oracle.sql.BLOB&lt;/p&gt;&#xD;
&lt;p&gt;出现错误原因：&lt;/p&gt;&#xD;
&lt;p&gt;我使用的是Hibernate 3.6版本。&lt;/p&gt;&#xD;
&lt;p&gt;解决办法：&lt;/p&gt;&#xD;
&lt;p&gt;在网上查到解决办法 使用 hibernate3.5.4替换3.6.&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.项目启动第一次访问，发布流程没问题。但是第二次启动项目，&lt;wbr&gt;再发布一个新流程的时候报如下错误.&lt;/p&gt;&#xD;
&lt;p&gt;2010-10-14 19:51:58,234 ERROR [org.hibernate.util.&lt;wbr&gt;JDBCExceptionReporter] - 流已被关闭&lt;/p&gt;&#xD;
&lt;p&gt;org.hibernate.exception.&lt;wbr&gt;GenericJDBCException: could not initialize a collection: [org.jbpm.pvm.internal.&lt;wbr&gt;repository.DeploymentImpl.&lt;wbr&gt;resources#1]&lt;br clear="all" /&gt;出现错误的原因是：&lt;/p&gt;&#xD;
&lt;p&gt;hibernate自动创建数据库时，配置文件中某些字段被hibernate解析成long类型。&lt;/p&gt;&#xD;
&lt;p&gt;在生成表后手动将LONG类型修改为字符串类型。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;4.在发布流程的时候 使用addResourceFromString方法发布流程，资源名称应该是 以 .jpdl.xml 结尾的。&lt;/p&gt;&#xD;
&lt;p&gt;如果不是发布会不成功。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;5.流程定义文件读取乱码的问题。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;使用PL/SQL直接在数据库中查看是乱码，以为是Hibernate的问题。发现其他的数据都是正常的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;java.io.InputStream&amp;nbsp;ss&amp;nbsp;=&amp;nbsp;repositoryService.getResourceAsStream(deployment,&lt;span &gt;&lt;font color="#0000ff"&gt;"process.jpdl.xml"&lt;/font&gt;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;//在这里指定字符编码UTF-8。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;BufferedReader&amp;nbsp;in = new BufferedReader(new InputStreamReader(ss,"UTF-8")); &lt;/p&gt;&#xD;
&lt;p&gt;StringBuffer&amp;nbsp;buffer&amp;nbsp;=&amp;nbsp;&lt;span &gt;&lt;strong&gt;&lt;font color="#7f0055"&gt;new&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;StringBuffer(); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span &gt;&lt;strong&gt;&lt;font color="#7f0055"&gt;while&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;((line&amp;nbsp;=&amp;nbsp;in.readLine())&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span &gt;&lt;strong&gt;&lt;font color="#7f0055"&gt;null&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;){ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buffer.append(line); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;6.取得我的任务和候选任务。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;jbpm 中我是用hql获取自己的当前任务和候选任务，发现重复记录使用distinct出错，发现出错的原因是在JBPM4_TASK表中的字段为clob类型，我将其修改成nvarchar类型，再使用distinct查询问题解决了。&lt;/p&gt;&#xD;
&lt;p&gt;StringBuffer hqlSb = new StringBuffer();&lt;br /&gt;&amp;nbsp;&amp;nbsp; hqlSb.append("select&amp;nbsp; distinct&amp;nbsp; task from org.jbpm.pvm.internal.task.TaskImpl task left join task.participations pt where task.assignee=?");&lt;br /&gt;&amp;nbsp;&amp;nbsp; hqlSb.append(" or&amp;nbsp; task.assignee is null and&amp;nbsp; ((pt.type = 'candidate' and&amp;nbsp;&amp;nbsp; pt.userId =? )&amp;nbsp; ");&lt;/p&gt;&#xD;
&lt;p&gt;if (groups.length()&amp;gt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hqlSb.append(" or pt.groupId in (" +groups + ")");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hqlSb.append(")");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hqlSb.append(" order by task.createTime desc");&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yg_zhang/aggbug/1935643.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yg_zhang/archive/2011/01/14/1935643.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
