省过配置直奔主题,如果你第一次开发工作流或者没有用过JBPM,见意你先去下载JBPM,他里面有一个和JBOSS绑好的service,启动,先感受一下工作流,这个过程网上有很多的文档,我这里就省过,这个对你在liferay中开发工作流很重要。
JBPM-WEB不能导出到ext工程里,这个很郁闷,在liferay源码中开发,他eclipse完全把这些文件当作是普通的文件,报错提示什么也没有,错了也不知道,我的做法是先在外面建一个普通的WEB工程,然后把JBPM-WEB下面的src拷到我面的WEB工程里然后把要的包导进来,这样开发起来就舒服多了,其他的工作和JBPM普通的开发一样了,先写一个工作流文件,你也可以装上jbpm-designer插件来画图,然后把工作流文件贴到workflow新增工作流的输入框里,保存就生成了一个工作流了,如果你要写上actionHandler就在外面的web工程里写好再把文件贴到liferay里面来,保存发布就可以了。
正常情况下是生成instance然后在触发一些事件,而我这几天开发的是在liferay原有的日志文章的工作流,在文章增加的时候生成一个事例,这样属于反向驱动工作流,liferay里面本身是封了所有JBPM的API的,只能通过他给的接口来操作工作流,他所提供的操作API全在com.liferay.portlet.workflow.service.impl这个包下面,一共四个,应该能满足我们的操作,他自已定了WorkflowTask,WorkflowInstance,WorkflowDefinition,WorkflowToken这几个和JBPM提供的ProcessDefinition ,ProcessInstance ,Token ,Task是没有关系的,不要受他表面的迷惑。
JBPM在输入中文的时候会出现乱码,解决方案是com.liferay.util.Http
556行改:
method.addRequestHeader(
"Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
645行改:
return new String(URLtoByteArray(location, cookies, parts, post),"UTF-8");
打包放在mule-web和jbpm-web下面,ROOT/WEB-INF下面要不要换就看你本身liferay操作是不是乱码。还有在eclipse下面启动,操作工作流会报SocketTimeOutException,不管他,刷新就OK,用tomcat启动是没有这个问题的。
最后我有个郁闷的地方,在写实现ActionHandler类的时候,在里面操作一些持久化操作的时候,总是报权限不足,明明是同一个用户在别的portlet中操作这个持久化操作就可以成功,到这工作流里面也操作这个持久化的操作他就会报权限错误,郁闷。希望有经验的朋友不吝赐教。谢谢!!
JBPM-WEB不能导出到ext工程里,这个很郁闷,在liferay源码中开发,他eclipse完全把这些文件当作是普通的文件,报错提示什么也没有,错了也不知道,我的做法是先在外面建一个普通的WEB工程,然后把JBPM-WEB下面的src拷到我面的WEB工程里然后把要的包导进来,这样开发起来就舒服多了,其他的工作和JBPM普通的开发一样了,先写一个工作流文件,你也可以装上jbpm-designer插件来画图,然后把工作流文件贴到workflow新增工作流的输入框里,保存就生成了一个工作流了,如果你要写上actionHandler就在外面的web工程里写好再把文件贴到liferay里面来,保存发布就可以了。
正常情况下是生成instance然后在触发一些事件,而我这几天开发的是在liferay原有的日志文章的工作流,在文章增加的时候生成一个事例,这样属于反向驱动工作流,liferay里面本身是封了所有JBPM的API的,只能通过他给的接口来操作工作流,他所提供的操作API全在com.liferay.portlet.workflow.service.impl这个包下面,一共四个,应该能满足我们的操作,他自已定了WorkflowTask,WorkflowInstance,WorkflowDefinition,WorkflowToken这几个和JBPM提供的ProcessDefinition ,ProcessInstance ,Token ,Task是没有关系的,不要受他表面的迷惑。
JBPM在输入中文的时候会出现乱码,解决方案是com.liferay.util.Http
556行改:
method.addRequestHeader(
"Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
645行改:
return new String(URLtoByteArray(location, cookies, parts, post),"UTF-8");
打包放在mule-web和jbpm-web下面,ROOT/WEB-INF下面要不要换就看你本身liferay操作是不是乱码。还有在eclipse下面启动,操作工作流会报SocketTimeOutException,不管他,刷新就OK,用tomcat启动是没有这个问题的。
最后我有个郁闷的地方,在写实现ActionHandler类的时候,在里面操作一些持久化操作的时候,总是报权限不足,明明是同一个用户在别的portlet中操作这个持久化操作就可以成功,到这工作流里面也操作这个持久化的操作他就会报权限错误,郁闷。希望有经验的朋友不吝赐教。谢谢!!