[已更新Demo附件]生命周期组件框架——关系型状态机服务

阅读更多
 

让写业务代码变得再简单一些!

 

关系型状态机服务的生命周期(Lifecycle)组件框架开启一个新的维度,与各种框架提供的通用非功能服务(比如事务服务,安全性服务)等略有区别,它更贴近于业务建模本身,而又能通过代码以元数据的形式描述一组业务对象的生命周期。元数据的表达使得对状态机的实现更像是文档而非指令式的源代码。如果要更改业务对象的生命周期,只需要更改这份元数据描述,增加或修改相应的业务方法,而不包括对生命周期状态的检查和赋值,这将减少很多代码修改量,并且更安全可靠。该框架的代码量很小,但可以在另一个基础层面提供强大的服务。

 

生命周期组件框架,透明的帮助业务逻辑进行业务对象本身的生命周期状态检测以及关系生命周期的检测。后者尤为重要,往往是一个系统开发了5~6年大量的推广普及以后,最终发现面临很多新的功能或者增强的功能时,开发者都是那么的无力回天,多次研讨会议最终也是说如果当初那样设计就不会造成现在的局面;产品经理们最后面对这头大象也只能装作没有看见。而生命周期组件框架在运行时,作为一个高“情商”的顾问,会在“不适合发生”方法调用时阻止方法调用,保护应用程序的正确状态。

 

此外,生命周期组件框架还提供丰富的事件和回调机制。对于业务对象本身,生命周期组件框架提供状态转换的回调方法,可以极大的利用业务对象本身的上下文来极为方便的表达和完成更多的任务和工作。而对于其他业务模块对三大事件源之一的状态变化事件的需求,生命周期组件框架同样提供松耦合的事件传播。

 

对于一个长时间运行的进程或者过程,往往它的完整性约束和一致性约束不能由系统的事务服务来满足。尤其是宕机出现时,这些进程或者过程大多都表现为不准确的状态。解决这些问题,这更是生命周期组件框架大显身手的战场,在与系统的生命周期事件结合之后,生命周期组件框架可以帮助那些“在飞行的”进程或者过程完美的恢复,而程序员只需要提供很简单的元数据描述以及相应的纯粹的业务方法,甚至是现有的可重用的方法。

生命周期组件框架可以集成不同环境下的锁机制,比如JavaSE环境下的简单的可重入锁,比如JavaEE环境下的JPA的锁,尤其是乐观读写锁,它在验证庞大的关系层级生命周期时,尤为重要。当你深入的了解到生命周期组件框架在关系生命周期的验证方面所做的工作之后,相信你一定更加清楚的认识到过去所写的业务代码的正确性是多麽的有限。如果这一切都不能满足,还可以自定义锁机制,毕竟并发的情况可以非常的复杂,生命周期组件框架只做它应该做的一部分,不需要的情况下它不会多管闲事。

 

生命周期组件框架并不需要业务对象POJO实现任何多余的接口只需要对现有的POJO进行标注即可。就像很多流行的组件框架一样,它在运行时在字节码层面拦截方法执行。除了添加生命周期描述以外,就只有减少代码量。

 

最重要的是生命周期组件框架是开源的,免费的,任意修改发行的。开源地址如下:

https://github.com/zhongdj/Swordfish/tree/master/Platform/Lifecycle 


此刻Lifecycle Framework核心功能第一个版本现在可以尝试了。虽然它的测试覆盖率还没有超过90%,或许性能也还有很大提升的空间,与其他流行组件框架的兼容性还需要进一步测试。但这都只是时间的问题。与其所提供的概念和服务相比,那都是微不足道的。生命周期组件框架可以像其他组件框架一样,提供一种基础层面的服务,这种基础的服务,不仅仅可以减少编码量,还可以产生新的编程实践,使得架构更简洁,促使应用程序设计变得更健壮。希望生命周期状态机服务可以成为JCP的一个规范,使得更多的开发者从中受益。

 

注:如需要尝试需要注意两方面: 

  1. 正确打包和配置manifest文件。目前如果checkout整个工程,那么该部分工作pom文件已经帮您做了。
  2. 运行时需要正确的依赖jar包类路径的正确设置,应该跟manifest文件保持一致。目前如果checkout整个工程,那么该部分工作pom文件已经帮您做了。

详情请参看pom文件。

 

  • 简单状态机示例代码
  • 复合状态机示例代码
  • 关系型状态机示例代码
  • 继承状态机示例代码
  • 条件转移以及生命周期回调示例代码
  • 生命周期事件示例代码
  • 简单状态机并发加解锁示例代码 
  • 关系型状态机加解读写锁示例代码 
  • 带有多个状态机的实现类示例代码

目前添加了部分代码示例到附件中,可以使用JDK7 + Eclipse打开

  • LifecycleDemos.zip (3.1 MB)
  • 下载次数: 3

你可能感兴趣的:(java,框架,编程,生命周期设计,状态转换图)