å¦ä½å¨jbpmçhandlerä¸è½å¤ä½¿ç¨ç±spring管ççbean对象
å¦ä½å¨jbpmçhandlerä¸è½å¤ä½¿ç¨ç±spring管ççbean对象å¢ï¼
é¦å å æ¥ç解springä¸å¯¹JavaBeanç管çæºå¶ãSpring容å¨æ管ççbean对象é½æ¯ç±beanFacotryå·¥åæ¥å®ä¾åï¼æ以è¦ä½¿ç¨pring容å¨ä¸beanå®ä¾å¯¹è±¡ï¼å¿ 须该类ä¹æ¯ç±spring容å¨æ管çï¼å¦åæ æ³ä»beanå·¥åä¸å¾å°beanå®ä¾å¯¹è±¡ã
ç解äºä¸é¢çç®åéè¿°ä¹åï¼ä¸é¢ææ¥ççå¨jbpmä¸æ¯å¦ä½è®¿é®spring容å¨ä¸çbean对象ç
å¨ä¸ä¸ªå°jbpméæå°sshæ¶æä¸é¡¹ç®ä¸ï¼è¦æ³å¨ä¸ä¸ªç±jbpmæ管ççjavaç±»ä¸è®¿é®spring容å¨ä¸javabeanï¼å¦ä½è®¿é®å¢ï¼
Struts ææ°çæ¬ä¸æ¯ç±
æ们å æå¼struts2ä¸é¨æ¥çspringï¼é£ä¹æ们就ä»springæ åé ç½®æ件æ¥è¯´èµ·ï¼å¦æä½ è¦åæ个ç±spring管çç对象ä¸æ³¨å ¥ä¸ä¸ªå¯¹è±¡ï¼æ们该å¦ä½å»åå¢?举ä¾è¯´æï¼å¦æç±ä¸¤ä¸ªå¯¹è±¡AãBï¼ç°å¨éè¦å¨B对象ä¸ä½¿ç¨A对象ï¼é£ä¹æ们éè¿ä»ä¹æ¹å¼å°Aæ³¨å ¥å°Bä¸å»å¢ï¼é¦å AãB两个对象é½å¿ é¡»æ¯ç±spring容å¨æ¥ç®¡çï¼é£ä¹æ们就éè¦å¨é ç½®æ件å®ä¹property å±æ§æ¥æ³¨å ¥ï¼ç°å¨AãBé½æspring容å¨æ¥ç®¡ççï¼é£ä¹æå¦ä½å¾å°å ¶ä¸A对象å¢ï¼å 为AB对象é½æ¯ç±spring容å¨æ¥å建çï¼æ以è¦æ³å¾å°A对象ï¼å°±é¦å å¾å°BeanFactory--->GetA(),ç¶åæè½æ¿å°Aï¼è¿æ¶AæåB对象çå¼ç¨ææå¼ï¼æè½æAæ³¨å ¥å°Bä¸ã
ç解äºä¸é¢çspring管çæºå¶åï¼ä¸é¢æ们就æ¥è®¨è®ºå¦ä½å¨jbpmçhandlerä¸è®¿é®ç±spring管ççbean对象å¢ï¼
1ã 第ä¸ç§ä¸æ¨èçæ¹å¼ï¼
å¨springé ç½®æ件ä¸é ç½®å¦ä¸ï¼
Java代ç
<bean id="roleAssignmentHandler" class="com.oa.service.handler.RoleAssignmentHandler">
<property name="userService" ref="userService" />
</bean>
å®ä¹ä¸ä¸ªç±»åé(éæçstatic,è¿ä¸ªç±»çææå®ä¾å ±äº«çåé)ï¼å¯å¨æå¡å¨æ¶ï¼åå§åspringæ¶å°±å建äºBeanFactoryï¼å¨å建BeanFacotryæ¶ï¼å°±å®ä¾åäºææ对象ãä¹å°±è¯´ä¹å°±å建äºä¸ä¸ªroleAssignmentHandler 对象ï¼æ¾å°äºå®èªå·±å®¹å¨çé£åå åä¸ï¼è¿ä¸ªå¯¹è±¡æ¥æä¸ä¸ªæåuserServiceçå¼ç¨ï¼å 为æå¨è¿éå®ä¹çæ¯ç±»åéãçä¸æ¬¡å¨å建è¿ä¸ªå¯¹è±¡æ¶ï¼å¨è¿ä¸ªç±»åéä¸åæ ·æ¯æå¼ãä½æ¯è¿ç§æ¹æ³å¹¶ä¸æ¨èï¼è¿ç§æ¹å¼æç¹æµªè´¹å å空é´ï¼springå·²ç»ç»æ们å建äºå¯¹è±¡ï¼ä½æ¯æ们并没æå»ä½¿ç¨å®ã
Java代ç
public class RoleAssignmentHandler implements AssignmentHandler {
private static UserService userService;
public void setUserService(UserService _userService) {
userService = _userService;
}
â¦â¦
2ã 第äºç§ä¸æ¨èçæ¹å¼ï¼
Pringå®æ¯ä¸ªå®¹å¨ï¼åæ ·å®æ¯ä¸ªBeanå·¥åï¼å¦ææ们springçæ个beanå·¥åçè¯ï¼é£ä¹æå°±å¯ä»¥ä»BeanFactoryä¸å¾å°æ们çbean对象ï¼é£ä¹å¦ä½å»å¾å°BeanFactory对象å¢ï¼
æä¸è½åå¾å¸¸åæµè¯é£æ ·éè¿new ClassPathXmlApplicationContext("");æ¥å建å®ï¼æ们éè¦ä»å½åç¯å¢ä¸å»æ¿ï¼é£ä¹ä»ä»ä¹å°æ¹å»æ¿å¢ï¼é£ä¹å°±å¾æç½å®æ¯å¦ä½å建çï¼ç±è°æ¥å建并管ççï¼å¨æå¡å¨å¯å¨æ¶ï¼å®å°±ä¼åå§åweb.xmlä¸çlinsteneré 置信æ¯ï¼å建ä¸ä¸ªBeanâFactroy对象ï¼å¹¶æè¿ä¸ªå¯¹è±¡æ¾å°äºServletContextä¸ï¼æ们å¯ä»¥å©ç¨springä¸çä¸ä¸ªå·¥å ·ç±»æ¥å¾å°ServletContextä¸çBeanFactory对象ï¼ä½æ¯å¹¶æ¨èï¼å 为ServletActionContextæ¯Strutsä¸çï¼å¨ä¸å¡é»è¾ä¸è¿åä¾èµäºå±ç°å±çå 容ï¼JBPMæ¯ä¸ä¾èµäºå±ç°å±å 容çï¼ä¹ä¸æ¨èäºä¾èµå ³ç³»çåå¨ã
Java代ç
BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext());
UserService userService = factory.getBean("userService");
3ã 第ä¸ç§å¹¶ä¸æ¨èçæ¹å¼
å¨é¡¹ç®å¼åä¸éç¨SSHä¸JBPMéææ¶ï¼ç¨å°äºä¸ä¸ªç¬¬ä¸æ¹çéæå ï¼æ们å¯ä»¥ä»è¿éå¾å°è§£å³æ¹æ¡ï¼ï¼éç¨jbpm3.1æä»¥å ¶ç¬¬ä¸æ¹éæå 为spring-modules-jbpm.jarï¼å¨å ¶ææ¡£ï¼jbpm.htmlï¼ä¸å¯ä»¥äºè§£å°ï¼éç¨å¦ä¸é ç½®ï¼
æµç¨å®ä¹æ件é ç½®
Java代ç
<assignment class="com.oa.service.handler.RoleAssignmentHandler">
<targetBean>roleAssignmentHandler</targetBean>
</assignment>
å¨springé ç½®æ件ä¸å¯ä»¥è¿æ ·å®ä¹å¦ä¸
Java代ç
<bean id="roleAssignmentHandler" class="com.oa.service.handler.RoleAssignmentHandler">
<property name="userService" ref="userService" />
<property name="roleName" value="ç³»ç»ç®¡çå"/>
</bean>
ä½è¿æ¯ç§æ¹æ³å¹¶ä¸æ¯å¾çµæ´»ï¼æäºä¸è¥¿å·²ç»åæ»å¨é ç½®æ件ä¸äºï¼æ以æ们并æ¨èæ¤æ¹å¼ï¼é£ä¹æ们å¦ä½æ¥å¾å°ä¸ä¸ªå¥½ç解å³æ¹æ¡å¢ï¼
4ã 第åç§æ¹å¼ï¼
åè¿å¤´æ¥ï¼æ们æ¥ç继ç»æèä»BeanFactoryä¸å»è·å¾ï¼æµç¨å®ä¹æ件并ä¸å»ä¿®æ¹å®ï¼è¿æ ·å°±ä¸ä¼ç ´åå®ççµæ´»æ§ï¼é£ä¹æ¥ä¸æ¥è¦åæçé®é¢å°±æ¯å¦ä½æ¥è·å¾BeanFactoryå¢ï¼é£å°±å¾æ·±å ¥äºè§£ä¸ä¸springï¼ç°å¨æ¥çä¸ä¸ªé®é¢ï¼å¨ä¸ä¸ªåä¾ä¸å¦ä½è·å¾ä¸ä¸ªéåä¾ç对象å¢ï¼ä¹å°±æ¯å°Bæ³¨å ¥å°Aä¸ Aæ¯åä¾ï¼ä½æ¯Bä¸æ¯åä¾ï¼ç´æ¥éç¨Resourceæå¨é ç½®æ件å©ç¨propertyæ³¨å ¥çè¯ï¼æ¯æ æ³å®ç°çï¼åªè½å°Båæä¸ä¸ªåä¾å¯¹è±¡æ¥ä½¿ç¨ãé£ä¹æ们å¨åä¾å¯¹è±¡ä¸å¦ä½å¨æè·åä¾èµå¯¹è±¡å¢ï¼æä¸ç§æ¹å¼å°±ä»å®çBeanFactoryä¸å»è·å¾å ¶å¯¹è±¡ï¼å¦ä½å¨ç±spring管çç对象ä¸æ¿å°BeanFactoryå¢ï¼ä¹å°±æ¯è¯´å¨å®¹å¨å®ä¾å¯¹è±¡ä¸è®¿é®å®¹å¨æ¬èº«ï¼å¨springä¸æè¿æ ·ä¸ä¸ªBeanFactoryAwareæ¥å£ï¼å¨è¿ä¸ªæ¥å£æ个setBeanFactory(BeanFactory f)æ¹æ³ï¼æ们å¯ä»¥å®ç°è¯¥æ¥å£ï¼éåè¿ä¸ªæ¹æ³ï¼æ¥å¾å°æ们BeanFactoryï¼ä»ä¸å¾å°å¨æçå¾å°BeanFactoryä¸å®ä¾å¯¹è±¡ï¼ä½æ¯æ¾å°jbpmä¸handlerç±»ä¸æ¥ä½¿ç¨ï¼è¿æ¯æ æ³å®ç°çï¼å 为å¨è¿éå®ä¸æ¯æspringæ¥ç®¡ççï¼æ以å³ä½¿å®ç°BeanFactoryæ¥å£ï¼éåå ¶æ¹æ³ï¼ä½æ¯æ æ³å°BeanFactory设置ä¸å¼çï¼å 为å®æ¯ç±springæ¥ç®¡ççï¼æ以ææ æ³ä»ä¸ä¸ªä¸æ¯springæ管ççbeanä¸å»æ³¨å ¥springææä¾çbean对象ãä½æ¯æ们å¯ä»¥éè¿å¦ä¸ç§éå¾æ¥è§£å³è¿ä¸ªé®é¢ï¼å建ä¸ä¸ªè¾ å©ç±»BeanFactroyHelperç±»ï¼è®©å®æ¥å®ç°åæè¿ä¸ªBeanFactoryAwareæ¥å£ï¼å ·ä½å¦ä¸ï¼
Java代ç
public class BeanFactoryHelper implements BeanFactoryAware {
private static BeanFactory factory;
public void setBeanFactory(BeanFactory f) throws BeansException {
factory = f;
}
public static BeanFactory getFactory(){
return factory;
}
}
ç¶åï¼è®©ä¸é¢è¿ä¸ªç±»çº³å ¥springç管çï¼å¨springä¸é ç½®å¦ä¸ï¼
Java代ç
<bean id="beanFactoryHelper" class="com.oa.service.handler.BeanFactoryHelper">
</bean>
æåå¨æ们handlerç±»ä¸ï¼ç´æ¥ä½¿ç¨å°±å¯ä»¥äº
Java代ç
BeanFactory factory = BeanFactoryHelper.getFactory();
è¿ç§æ¹å¼å¯ä»¥ï¼ä½æ¯æ并éç¨è¿ç§æ¹å¼ï¼å 为第åç§æ¹å¼å·²ç»æ人ç»æåäºãæ以æ们就ä¸éè¦å¨éå¤åè¿äºç±»ä¼¼çå·¥ä½äºãæ以è¿ç§æ¹å¼æä¹ä¸ä¼éç¨ã
5ã 第äºç§æ¹å¼ï¼
éè¿ä¸é¢æ说çæ¹å¼ï¼å¨spring-modules.jarè¿ä¸ªç¬¬ä¸æ¹éæå å¼å人ä¸å·²ç»éç¨ç±»ä¼¼çæ¹å¼å®ç°äºãé£ä¹ä»ä»¬æ¯å¦ä½å®ç°çå¢ï¼è¿å°±éè¦æ¥äºè§£ä¸ä¸jbpmHandlerProxyçåºæ¬åçï¼å¨JbpmHandlerProxyç±»ä¸å®ç°äºActionHandler, AssignmentHandler, DecisionHandler, TaskControllerHandlerçæ¥å£ï¼å¨å®ç°ä¸åçæ¥å£ä¼è°ç¨ä¸åå®çä¸åçæ¹æ³executeãassignãdecideâ¦
ServiceLocator,å¨springä¸ä¹æä¾äºä¸ä¸ªServiceLocatorè¿ç§è®¾è®¡æ¨¡å¼çä¸ä¸ªæ¥å£BeanFactoryLocatorã BeanFactoryReferenceæ¥å£ï¼è¦æ³è¯¦ç»äºè§£å ¶å é¨æºå¶éè¦æ们è¿ä¸æ¥è±è´¹ç²¾åå»è§£æå ¶æºç äºãï¼å¨è¿éå°±ä¸è¯¦ç»å»åæäºï¼è¿éæåªæ¯äºè§£jbpmFactoryPorxyç±»ä¸å®ç°æºå¶ç大ä½ææ³,æ以ä¸é¢æå°±é对å¨ä»£çç±»ä¸çå ·ä½å®ç°ææ³å¤§ä½è¯´ä¸ä¸ï¼å¨JbpmHandlerProxyç±»ä¸å¾å°BeanFactory对象ï¼ä¸»è¦æ¯éè¿JbpmFactoryLocatoræ¥å¾å°BeanFactoryReferenceï¼éè¿BeanFactoryReferenceæ¥å¾å°Factoryãé£ä¹å¨JbpmHandlerProxyç±»ä¸çJbpmFactoryLocatoræ¯ä»åªéå¾å°çå¢ï¼æ¥çæºç å¯ä»¥å¾ç¥å¨å ¶JbpmFactoryLocatorç±»ä¸æ个setBeanFactoryï¼ï¼æ¹æ³ï¼é£ä¹è¿ä¸ªæ¹æ³æ¯æè°è°ç¨çå¢ï¼éè¿æ¥çå¾ç¥æ¯LocalJbpmConfigurationFactoryBeanç±»æ¥è°ç¨çã主è¦åæå¾å¦ä¸ï¼
以ä¸å°±jbpmFactoryProxyä¸å é¨æºå¶ã
ä¸é¢æå°±æ¥è¯´ä¸ä¸å ·ä½è§£å³æ¹æ¡æ¯ï¼
é¦å éè¿å©ç¨jbpmFactoryProxyçå®ç°ç±»ä¸retrieveBeanFactoryæ¹æ³çå ·ä½å®ç°æ¹å¼ï¼æ¥å¾å°jbpmä¸å·²ç»æ³¨å ¥çBeanFactory对象ï¼ä¸é¢æå°è¿ä¸æ¥è¿è¡å°è£ æ¥å®ç°èªå¨æ³¨å ¥çåè½ã
å è´´åºå¨jbpmçhandlerç±»ä¸çå ·ä½ä½¿ç¨,åå¨springä¸ä½¿ç¨Bean对象ä¸æ ·ä½¿ç¨ã
Java代ç
/**
* æ¯ç±BaseAutowireèªå¨æ³¨å ¥
*/
@Resource
private UserService userServce;
ä¸é¢ä¸æ®µä»£ç å°æ¯ææ½ååºæ¥çåºç±»ï¼
Java代ç
/**
* èªå¨æ³¨å ¥BeanFactoryåºç±»
* @author lzh
*
*/
public class BaseAutowire {
/**
* å¨è°ç¨åç±»çæ¶ä¼èªå¨è°ç¨
* å¨æé æ¹æ³ä¸è°ç¨retrieveBeanFactory()æ¹æ³å¾å°BeanFactory对象
* å©ç¨å®çå®ç°æ¥å£è®¾ç½®å°è¯¥èªèº«è®¾ç½®ä¸ºèªå¨æ³¨å ¥å°åç±»ä¸
*/
public BaseAutowire() {
((AutowireCapableBeanFactory)retrieveBeanFactory())
.autowireBeanProperties(this, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true);
}
protected BeanFactory retrieveBeanFactory() {
BeanFactoryLocator factoryLocator = new JbpmFactoryLocator();
BeanFactoryReference factory = factoryLocator.useBeanFactory(null);
if (factory == null)
throw new IllegalArgumentException("no beanFactory found under key=" + null);
try {
return factory.getFactory();
}
finally {
factory.release();
}
}
}
以ä¸æ¯æå¨å¦ä¹ jbpmæ¶æè®°å½ä¸ï¼å¸æè½å¤å¯¹ä»åçå·¥ä½èµ·å°ä¸å®ä½ç¨ã
中国免费BPM系统有哪些?
BPM系统没什么用?国内很多的大型政企,已经把它视为新形势下信息化建设的源码源码标配!必须找本地化BPM系统厂商?不提供源码及方法论,免费厂商开你隔壁也没有用,项目项目下载你还是源码源码会处处受制!靠谱的免费如何用源码浏览网站BPM系统,看名头更要看实效,项目项目下载毕竟模特选美,源码源码也无法一开始就取悦每个人!免费好的项目项目下载BPM系统其实不贵,它不是源码源码世界强的特权,只是免费进入中国晚了一些!话不多说,项目项目下载福利请接收!源码源码java架构源码大全一、免费JAVA领域免费BPM系统
广州天翎开启了BPM系统社区版免费送商用Licence活动,笔者对比了一下和付费版本的差异,主要是限制了软件数量,但是重点来了,经过笔者一顿折腾找到了漏洞:一是BPM系统并不限制部署数量、也不限制流程数用户数并发数,如果有必要多部署一套就好啦;二是软件是自定义的,我们完全可以把OA和项目管理等不同系统整合到一个软件下,只要模块命名能区分彼此就好了!
咨询了下客服,这个活动长期有效,另外我在对这款BPM系统进行测评的qt如何修改源码过程中还有意外收获,我原以为我不掏钱应该没人理我吧,结果看见了一个有+会员的技术论坛,还加了一个将近人的技术QQ群,这下可好,我真的可以放肆的撸羊毛了,很多技术问题别人都已经遇见并得到了解决,还能实时互动交流,这真的降低了使用门槛!
二、.NET领域免费BPM系统
上海易正开启了BPM系统基础版免费使用活动,优势很多,不限功能,不限用户,avro源码使用教程虽然流程数量限制在了条以内,但是对很多中小企业来说这已经足够用了,按照客服的说法,以后想要升级也是有优惠的!易正在流程引擎的打磨上和天翎有的一拼,也做了这么多年,再加上足够大的品牌知名度,应该差不了,羊毛能撸就撸一把呗!
逛了又逛,没有找到易正的技术论坛或者技术群,但是并不妨碍我对这款BPM系统进行学习和测评,一方面有个视频培训中心,转串口驱动源码对于BPM系统如何快速应用、如何快速集成都做了较为详尽的说明,另一方面则和天翎一样有在线体验和下载体验,毕竟是骡子还是马拉出来遛一遛就知道了呗!
特别声明!以上不是打广告!是笔者从众多国内BPM系统厂商中经过大量测评筛选出来的,Michael Hammer和James Champy提出的“流程再造带来企业绩效提升”观点给企业经营管控带来了新的思路,我们要做的是把BPM这种借助流程梳理、流程建模、流程E化、流程整合、流程执行、流程监控和流程优化为一体的先进管理工具和方法论向更多的人传播,让更多的人以较低的成本去真实应用,BPM系统对企业经营管控的价值才能真正体现!
低代码开发平台有哪些?
低代码开发平台有:宏天软件、K2、奥哲等。
宏天软件自主研发的J.Office OA 、EST-BPM、JOffice-ENT均向企事单位开放源代码,使用用户能够灵活根据自己的实际情况进行二次开发。这些系列的产品均采用了最流行的SOA/MVC架构设计模式,具有科学的系统框架、体系的层次划分、合理的模块粒度和规范的软件接口,为各个业务插件的调整和扩展奠定关键基础。宏天软件整合了 EXT3、Ajax 、Spring 2.5、Struts2.0.、Spring Security 2.0、Spring AOP、Hibernate 3.3 GA、JBPM4.0、JasperReport 、JAVAMail等众多优秀的开源技术,组成功能强大的开发平台,可以做到跨平台,跨数据库,跨浏览器,并且容易升级扩展,充分考虑了系统的柔性和开放性。因此,可以保证开发系统的质量,同样可以应付不断变化的业务需求。它的出现,扭转了传统高成本、低效率的JAVA企业应用开发的局面,是企业应用开发的首选利器。
想了解更多关于低代码的相关信息,推荐咨询宏天软件。宏天软件门户平台核心要点是建设统一的系统入口、信息门户和业务门户;为管理者聚合各种信息、数据、报表等,便于决策,为普通用户整合业务处理入口,方便办公。用户中心实现用户组织数据和授权信息的统一管理,支持多维组织架构,支持分级授权管理,支持关系矩阵管理。用户中心提供标准的用户组织主数据,提供标准的数据查询接口,提供用户登录、操作过程的日志记录。
2024-12-26 15:32
2024-12-26 15:11
2024-12-26 15:09
2024-12-26 15:05
2024-12-26 13:06