上一页 1 ··· 3 4 5 6 7 8 下一页
摘要: JBPM流程部署之部署环境初始化 流程的部署是流程引擎需要完成的几个重要的任务之一,流程定义是现实中复杂业务需求在流程流转实现的体现;流程部署需要完成xml格式流程定义的校验、流程定义的持久化、流程定义到流程定义实体的转化、流程版本升级和流程实例的迁移等众多的功能; 今天我们来简单的学习一下流程部署的环境初始化;流程部署环境初始化需要完成部署服务、流程部署缓存、流程部署持久化相关对象、流程引擎支持的节点类型等相关binding对象及相关的部署解析器的实例化; 流程引擎支持的节点类型初始化 流程引擎支持众多的节点类型,比如任务节点、状态节点、子流程等等;此过程初始化JBPM默认支持的系统节点类. 阅读全文
posted @ 2011-08-17 01:04 无风听海 阅读(3380) 评论(1) 推荐(0)
摘要: Validation is a powerful tool. It enables you to quickly check that input is roughly in the form you expect and quickly reject any document that is too far away from what your process can handle. If there's a problem with the data, it's better to find out earlier than later.In the context of 阅读全文
posted @ 2011-08-14 06:29 无风听海 阅读(1817) 评论(0) 推荐(0)
摘要: JBPM流程定义校验之java利用XSD校验XML 上篇我们学习了在.net中怎样利用XSD来验证xml,今天我们来看一下在java中怎样实现利用xsd来校验xml! /****/packageWFTH;importjava.io.*;importjavax.xml.transform.Source;importjavax.xml.transform.stream.StreamSource;importjavax.xml.validation.*;importorg.xml.sax.SAXException;/***@author无风听海**/publicclassValidationMan. 阅读全文
posted @ 2011-08-14 01:51 无风听海 阅读(868) 评论(0) 推荐(0)
摘要: JBPM流程定义校验之.net利用XSD校验XML 上篇我们学习了在javascript中怎样利用XSD来验证xml,废话不在多说,今天我们来看一些怎样在.net中怎样实现利用xsd来校验xml! usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Xml.Schema;usingSystem.Xml;usingSystem.Xml.XPath;namespaceWFTH.XMLValidation{publicclassValidationManager{priv. 阅读全文
posted @ 2011-08-14 01:13 无风听海 阅读(481) 评论(0) 推荐(0)
摘要: JBPM流程定义校验之javascript利用XSD校验XML 上篇我们简单的介绍了一下XSD的相关知识,今天我们来学习一下在javascript中怎样利用XSD来验证xml;现在各大浏览器厂商中,好像就微软公布了相应的接口,其他的厂商需要我们自己来实现类库;所以今天我们讲的是在IE下利用XSD来验证xml。 我们先了解一下MSXML个版本对XML验证的支持情况Version Support MSXML仅支持DTD 验证,不支持xsd方式.MSXML 2.0 through 4.0支持XML-Data Reduced (XDR) 验证.MSXML 4.0 and later支持xsd验证方式. 阅读全文
posted @ 2011-08-14 00:58 无风听海 阅读(1358) 评论(0) 推荐(0)
摘要: - JBPM流程定义校验之XSD简介 JBPM的流程定义语言是JPDL,其本身是一种自定义结构的xml;JBPM的流程定义结构比较复杂,不仅元素的类型多样,而且对数据类型也有比较严格的要求,同时有很多元素有着相同的元素和属性等;做为流程引擎应该具有校验流程定义的有效性的能力,从而保证不会再流程流转过程中发生错误;同时流程引擎应该内置这种校验能力,而不能依赖流程设计器的校验!面对如此复杂的xml,JBPM首先使用XSD进行验证,然后再解析流程定义的同时进行一些XSD无法实现的校验!今天简单的介绍一下XSD的相关知识,然后接下来的将分别介绍在javascript、C#、java中怎样利用XSD对x 阅读全文
posted @ 2011-08-13 09:00 无风听海 阅读(592) 评论(0) 推荐(0)
摘要: 在eclipse中运行jbpm4.4的流程测试用例 JBPM的源代码中有一些流程测试用例,对我们理解JBPM的运行机制和以JBPM为流程引擎进行二次开发都有很大的帮助,同时对我们理解JDPL也有一定的帮助。那么我们怎么样才能够在拿到JBPM源代码以后,最快的速度运行其中的测试用例呢?下面将我的方法分享如下: 使用JBPM的jar包 1.新建java project JBPMTest,并选择从已存在源创建,并选择JBPM根目录下的examples中的src即可; 2.单击下一步,选中libraries,并单击选择add external jars,选中JBPM根目录下的JBPM.jar并点击确. 阅读全文
posted @ 2011-08-07 10:00 无风听海 阅读(2221) 评论(0) 推荐(0)
摘要: C#扩展方法,爱你在心口难开 --C#扩展方法深入分析 什么是扩展方法?好几天了打算记录一下,今天我们来深入研究一下,探究一下扩展方法的实现机制;那么到底什么是扩展方法呢? 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。(引自csdn) 也许你并不明白以上的意思,那一点都没有关系,如果我们平时一定经常使用linq标准查询,那么我们就一直在使用扩展方法. 阅读全文
posted @ 2011-08-05 05:26 无风听海 阅读(9936) 评论(3) 推荐(5)
摘要: 利用javascript的面向对象的特性实现限制试用期 Javascript是一种面向对象的脚本语言,其也具有面向对象的三大特性,但是今天我们不详细的讲解javascript的面向对象特性,今天我们简单的了解一下javascript的面向对象特性,然后学习一下怎样实现试用期的限制! 下边是我自己写的一个类,类中有字段、方法 //构造函数functionPerson(name,sex,age){this.name=name;this.sex=sex;this.age=age;};Person.prototype.getName=function(){returnthis.name;};Pers. 阅读全文
posted @ 2011-08-04 00:15 无风听海 阅读(455) 评论(0) 推荐(0)
摘要: 每个人眼中都有一个哈姆雷特 ---记我的根级别数据无效 一千个人眼中有一千个哈姆雷特!看到的是同样一个哈姆雷特,但每个人眼中都会有自己的哈姆雷特,所以平时我们开发中,很多时候即使抛出同样的异常,也往往可能是不同的原因导致的!当我们运用我们以往的经验没有解决这个问题时,那么我们还是老老实实、心平气和的慢慢查找、琢磨问题所在以及解决方法。 上周开发中遇到了著名的“Data at the root level is invalid. Line 1, position 1.” 代码大意 stringxml=st.Split('☎')[0];System.Xml.XmlDocumentd 阅读全文
posted @ 2011-07-17 09:51 无风听海 阅读(2305) 评论(0) 推荐(0)
摘要: JBPM深入解析之变量设计 在流程的流转的过程中,很多时候我们需要根据不同的实际情况传入一些初始化数据,以便完成我们个性化的业务需求;同时很多时候我们需要在不同的节点之间共享一些业务数据,特别是一些节点要以前一节点的输出作为输入等;变量对于流程引擎来说很重要,可以说没有变量,那么我们就不能运行时动态的设置和传入一些数据,这将极大的限制流程的灵活性! 变量类型 全局变量,所有的节点都可以获取并设置该变量的值 局部变量,只在该节点及其子节点可以获取并设置该变量的值 变量的传入 在流程定义中进行变量的定义 <?xmlversion="1.0"encoding="U 阅读全文
posted @ 2011-07-17 08:15 无风听海 阅读(3031) 评论(0) 推荐(0)
摘要: 使用Jasob混淆javascript代码 在平常的web开发中,我们时常需要写一些js的类库,当我们发布自己产品的时候,不得不把源代码分发出去;但是这样就会泄露自己的代码。今天使用了一下Jasob感觉不错; 使用Jasob,我们的JavaScript代码无法被任何人理解从而杜绝剽窃和泄密,别人再也不能在我们的代码上做点修改就成了他的作品了。使用Jasob混淆以后,JavaScript的代码大小将缩小为原来的30%,因此浏览器将用更短的时间下载并执行网页代码。 Jasob分析JavaScript的代码并替换掉描述性的变量和函数名称,例如客户、年薪、姓名等等换成没有意义的d、g、m等等,同时也. 阅读全文
posted @ 2011-07-10 06:14 无风听海 阅读(3436) 评论(2) 推荐(0)
摘要: 在 Visual Studio 中,我们可以创建“Web 应用程序项目”或“网站项目”。每种项目类型各有优缺点,所以我们要选择可以满足需要的最佳项目类型,应了解各项目类型之间的差异。今天将深入的学习这两种项目之间的异同。项目文件结构 Web 应用程序项目使用 Visual Studio 项目文件(.csproj 或 .vbproj)来跟踪有关项目的信息。除其他任务以外,这还使得指定项目中要包含或排除哪些文件,以及因此在生成期间编译哪些文件成为可能。web应用程序项目文件结构 web应用程序物理文件结构 web应用程序项目文件 <?xmlversion="1.0"enc 阅读全文
posted @ 2011-07-08 21:27 无风听海 阅读(2451) 评论(0) 推荐(0)
摘要: JBPM之Environment分析 只要们稍微深入的学习一下JBPM,我们就会发现代码的每个角落都有environment的影子,可见environment的地位之重要,今天我们学习一下environment的作用和使用方法,以及其中的一些运行机制! Environment的作用 线程安全对象,为每个线程维护一系列的资源 我们一般像这样使用Environment获取资源对象 Sessionsession=EnvironmentImpl.getFromCurrent(Session.class); EnvironmentImpl中对应的代码实现//线程安全的真正原因staticThreadLo 阅读全文
posted @ 2011-07-02 00:27 无风听海 阅读(1766) 评论(0) 推荐(0)
摘要: JBPM与软件架构模式之命令模式 前面我们介绍了JBPM的长事务设计,其中用到了职责链模式和命令模式,其中职责链模式我们已经介绍过了,今天我们来看看JBPM是怎样使用命令模式的。 命令模式定义 将请求封装成一个对象,使你可以使用不同的请求对客户端进行参数化;对请求排队和记录请求队列,并支持对请求的撤销操作。命令模式UML类图 命令模式代码示例 packageorg.jbpm.pvm.internal.svc;publicabstractclassCommand{protectedRecieverreviever;publicCommand(Recieverreviever){this.revi 阅读全文
posted @ 2011-06-28 23:25 无风听海 阅读(1815) 评论(0) 推荐(0)
摘要: 主键思维定势导致的惨案 记录一下前段时间工作中遇到的问题,希望这血淋淋的惨案可以警醒与我有相同思维定势的网友。 众所周知一般情况下数据库中的记录是按照主键(主键是整数)递减排列的 select * fromPerson.Address 这种情况下我们直接使用top (100),自然会正确的返回前100条记录select top (100) * from Person.Address所以,我就一直自认为下面的嵌套子查询会返回前100条记录SELECT top (100) [AddressID] ,[AddressLine1] ,[AddressLine2] ,[City] ,[StateProv 阅读全文
posted @ 2011-06-27 23:55 无风听海 阅读(462) 评论(4) 推荐(0)
摘要: --ThreadLocal分析学习 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的 阅读全文
posted @ 2011-06-27 22:34 无风听海 阅读(414) 评论(0) 推荐(0)
摘要: 上篇我们了解并学习了JBPM的长事务实现,其中用到了设计模式中的职责链模式和命令模式;这块还是很有厚重感的,我们可以从中学到很多的东西;今天我们先来学习一下职责链模式。 职责链模式定义 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系;将这些对象连成一条链,并沿这条链传递该请求,直到有一个对象处理该请求。 职责链模式的优点 1.客户提交一个请求,其沿着这条链传递直到得到处理; 2. 发送者和接受者都没有对方的明确信息信息; 3. 链中对象也不知道链的结构,简化了链中对象的链接关系,它仅需要维持其后继者的引用,而不用持有它所有的候选者; 职责链模式UML图 JBPM职责链. 阅读全文
posted @ 2011-06-26 15:51 无风听海 阅读(953) 评论(0) 推荐(0)
摘要: JBPM之长事务设计解析 在企业开发中,很多时候我们需要把一些业务数据持久化到数据库中;在数据要求不是很高的场景下,我们可以不用考虑事务的提交和回滚;但是很多时候,我们面临的很多的数据库脚本需要保证要成功就都执行成功,否则就要回滚;特别是在流程运行中提交时,我们需要处理上一个节点的相关数据,同时也要处理提交到得节点的相关数据,我们需要保证这些数据的正确性和一致性,特别是在发生异常时,我们需要回滚所有的操作。今天我们来分析一下JBPM的事务设计。 JBPM数据库长事务处理是通过拦截器和具体的承载数据库脚本的命令完成的,下面分别进行简单的分析(以下分析是针对hibernate事务进行分析,spin 阅读全文
posted @ 2011-06-25 19:03 无风听海 阅读(2085) 评论(0) 推荐(0)
摘要: 单例模式是我们开发中常用的一种设计模式,今天结合JBPM来学习这个模式。本来打算先分析JBPM中的单例模式,然后总结单例模式;但是JBPM的实现并不是完全符合GOF中队单例模式的完成定义,其实现跟自己的业务有一定的关联。那么我们就先来学习严格意义上的单例模式,然后再分析JBPM实现的单例模式。单例模式定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点让类自己负责实例的生成,并提供访问该实例的方法 在我们实际的开发中,很多时候我们需要控制某个类的实例化,并且需要控制其只能实例化一个实例;其中一个最好的方法就是让这个类负责自己的实例化,并且保证不会有其他的实例被创建,同时向外提供一个访问. 阅读全文
posted @ 2011-06-09 00:42 无风听海 阅读(721) 评论(0) 推荐(0)
摘要: 在应用程序中使用多个线程的一个好处是每个线程都可以异步执行。然而,线程的异步特性意味着必须协调对资源(如文件句柄、网络连接和内存)的访问。否则,两个或更多的线程可能在同一时间访问相同的资源,而每个线程都不知道其他线程的操作。结果将产生不可预知的数据损坏。这个时候我们就需要lock上场了。Lock的作用Lock获取给定对象的互斥锁,保证相应的代码块运行时,不会被其他线程中断;直到该对象被释放时其他线程才能访问相应的代码块;Lock实现本质通过System.Threading.Monitor的enter和exit方法实现的代码实例如下View Code 1publicvoidPrintByInn. 阅读全文
posted @ 2011-06-09 00:30 无风听海 阅读(594) 评论(0) 推荐(1)
摘要: 电脑安装windows server 2008 导致磁盘分区消失解决方法 前段时间买了个本本,本本本身预装dos系统,但是买的时候机子里已经装好了windows 7,自己感觉windows 7并不适合开发使用,就开始重装系统,可以谁想其中遇到不少的问题,用了近一周的时间,最后选中windows server 2008.今天不谈驱动问题。导致原因1.在windows xp里安装windows server 2008 ,选择安装到F盘,文件复制重新启动 安装时提示错误,不能进行安装;2.格式化xp所在盘,但是没有处理E盘,然后安装windows server 2003,安装完毕后然 后安装wind 阅读全文
posted @ 2011-06-04 08:16 无风听海 阅读(3299) 评论(0) 推荐(0)
摘要: 探究.NET的bin引用程序集运行机制 看.NET程序集部署原理新建一个最简单的网站,并引用使用程序集Nhibernate.dll,页面代码为 运行后输出的结果.NET 程序集部署程序集运行机制总结.NET程序集部署方式1. 私有程序集部署将 DLL 作为私有程序集部署是可以采用的最简单的方法。如果设置了 PrivateBinPath 属性,则可以将 DLL 部署到宿主应用程序的 ApplicationBase 目录或者 ApplicationBase 目录的子目录中。其优点是在复制了 ApplicationBase 目录结构以后,就可以运行应用程序;其局限是不能部署到 Application 阅读全文
posted @ 2011-05-16 01:05 无风听海 阅读(1284) 评论(3) 推荐(0)
摘要: JBPM中JPDL深入解析 流程引擎需要根据流程定义进行业务流程的流转,所以提供一种简单直观、易用方便、便于扩展的流程定义方式就显得直观重要了。JBPM提供了自己的一套流程定义语言JPDL,通过对JPDL的分析解决,我们可以了解其架构设计和运行机制,以便根据业务需求进行灵活的扩展。 JBPM中JPDL架构设计1. 定义相关的xsd文件(比如jpdl-4.0.xsd、jpdl-4.2.xsd、jpdl-4.3.xsd、jpdl-4.4.xsd)。Xsd定义了流程定义xml的整体架构,既xml中的元素和属性,其也就决定了我们定义的流程定义的xml的形式;同时在流程发布的时候也会使用xsd进行验证。 阅读全文
posted @ 2011-05-15 17:35 无风听海 阅读(2935) 评论(0) 推荐(0)
摘要: JBPM数据库分析持久化基础知识 持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。 我们可以这样理解: 在一定周期内保持不变就是持久化,持久化是针对时间来说的. 数据库中的数据就是持久化了的数据,只要你不去删除或修改. Session会话中Session对象变量也是不变的,是Session容器中持久化 对象持久化的方式有很多种,根据周期不同有,page,Session,Application, 对象序列化机制对于需要将对象的状态保存到文件 阅读全文
posted @ 2011-05-15 09:22 无风听海 阅读(977) 评论(0) 推荐(0)
摘要: JBPM数据库分析持久化基础知识 持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。 我们可以这样理解: 在一定周期内保持不变就是持久化,持久化是针对时间来说的. 数据库中的数据就是持久化了的数据,只要你不去删除或修改. Session会话中Session对象变量也是不变的,是Session容器中持久化 对象持久化的方式有很多种,根据周期不同有,page,Session,Application, 对象序列化机制对于需要将对象的状态保存到文件 阅读全文
posted @ 2011-05-15 09:21 无风听海 阅读(1398) 评论(0) 推荐(0)
摘要: JBPM Activty深入解析JBPM对于活动结点的架构设计有什么特别之处?JBPM将活动功能分为活动本身的行为(ActivityBehaviour)和活动作为流程元素所共有的一些东西(Activity);这样的架构设计很巧妙,既保证了各种活动自身的独特特性,也保证作为流程元素所共有的功能,保证了最大程度的代码重用!JBPM活动的类型大致分为自由执行结点和外部唤醒结点,可以满足现实中业务流程需要自动业务处理和需要人参与的业务处理要求。JBPM的活动本身是一种复合元素,其可以作为父活动而拥有众多的子活动。这样保证了JBPM提供的单一活动不能满足业务需求时候,我们可以进行活动组合!JBPM的活动 阅读全文
posted @ 2011-04-30 16:45 无风听海 阅读(870) 评论(0) 推荐(0)
摘要: ASP.NET网页代码模型分析1. asp.net网页有两部分组成可视元素,包括标记、服务器控件和静态文本页的编程逻辑,包括事件处理程序和其他代码。2. ASP.NET 提供两个用于管理可视元素和代码的模型,即单文件页模型和代码隐藏页模型。 这两个模型功能相同,两种模型中可以使用相同的控件和代码3. 单文件页模型在单文件页模型中,页的标记及其编程代码位于同一个物理 .aspx 文件中。 编程代码位于 script 块中,该块包含 runat="server" 特性,此特性将其标记为 ASP.NET 应执行的代码。代码文件如下 SinglePage.aspx<%@ Pa 阅读全文
posted @ 2011-04-26 23:23 无风听海 阅读(3188) 评论(0) 推荐(2)
摘要: 为什么流程定义需要版本升级? 在现实业务中,流程可能需要跟随业务的变化进行一些改变,但是这些改变只是一些微小的调整,对流程定义的改变不大!这个时候考虑到系统的用户化,不可能让用户删掉现在的流程,然后重新发布符合新的业务逻辑的流程; 企业新增生产线,但是新生产线与老的生产线某些生产步骤不同,但是最终生产的都是同一产品;并且现在新旧生产线需要同时运行,这是就需要同一流程拥有不同的版本同时运行 流程版本升级设计 阅读全文
posted @ 2011-04-26 21:28 无风听海 阅读(534) 评论(0) 推荐(0)
摘要: 在ASP.NET的开发中,很多时候我们希望webform中的控件能够随窗体的变化而自动调整自己的大小,即可以自动适应页面的大小。我们所要实现的效果就是窗体在最大化和正常大小之间变化时,控件的大小也能做相应的调整。在网上找不到对应的答案,现在记录下来。 原理分析 Webform窗体大小的变化不会触发服务器回发,所有最终的实现需要使用js脚本;所以我们需要在窗体大小变化时,窗体能够智能的通知我们的进行调整控件的大小(winform也好,webform也罢都是这样);这个是实现的本质,这也就是我们所熟悉的事件机制! Js中很多的控件都有onresize事件,只要我们向控件所在的页面注册相应的处理函数 阅读全文
posted @ 2011-04-26 21:25 无风听海 阅读(1633) 评论(0) 推荐(0)
上一页 1 ··· 3 4 5 6 7 8 下一页