Jbpm+WebService实践项目1——流程化调用“数加”“数减”两个服务(CallNumberPlusSubtract)

 

【功能设计】

设计一个流程调用“数加”和“数减”两个WebService,并将给流程发布成一个WebService,测试该流程。

【实现流程】

1.       发布“数加(NumberPlus)”“数减(NumberSubtract)”两个WebService,并进行测试;

1) 建立WebServiceProject

2) 建立WebService

3) 发布该WebService

4) 测试该WebService

2.       设计流程调用“数加”“数减”两个服务,部署该流程;

1) 设计流程;

将变量设计在节点内,将服务的调用写在TransitionAction中;

2) Actioncom.NumberPlusSubt.action);

(1)       将节点中得到的变量(Object)转换为int ;

(2)       调用WebService,具体流程为:

Step1Service接口抓到本地

Step2:对象服务工程利用该接口创建一个服务模版;

 Step3:创建一个代理工厂;

 Step4:该工厂仿照该模版创建一个Service接口;

 Step5:利用该接口调用服务;

(3)       将调用WebService得到的结果传给该流程的全局变量,在下一个节点中使用;

3) 部署流程(com.NumberPlusSubt.deploy);

部署一次如果对于流程没有修改就不需要再部署了

(1)       导入MySQLDriver

(2)       配置Hibernate

(3)       main()方法主要完成流程的部署工作,其实质就是在JBPM数据库中进行记录,要在测试前先部署;具体流程:

Step1:得到JBPM配置实例;

Step2:根据配置实例得到JBPM的上下文;

Step3:将流程定义文件转化为InputStream,再根据ProcessDefinition的方法得到一个流程定义;

Step4:将该ProcessDefinition部署在Jbpm上下文中;

4) 调用流程(com.services.client);

(1)       在构造方法中初始化流程参数;

(2)       写调用各个action的方法:

Step1:得到流程实例和上下文实例;

Step2.:接受参数;

 Step3:执行相应的action

Step4:返回相应流程的ID,(在下一方法中使用以保证为同一个流程);

(3)       写一个调用各个方法的总方法,返回结果;

3.       将该流程封装成WebServicecom.service.callNumberPlusSubtract),并写测试程序调用该WebService

1)       增加WebService功能;

增加XFire的架包;

配置services.xml文档;

2)       增加Web功能(只有WebProject能在Server上部署);

配置Web.xml文档,指定截获请求的Servlet的实现类;

4.       写调用该WebServiceClient程序(CallNumberPlusSubtractClient);

1)       引进架包——XFire Http Client(如果在前面已经引进了就省去该步);

2)       WebService接口抓到本地;

3)       建立一个class在其中写main()

【小结】

1.       工程之间是不能通信的;

2.       任何工程都可以增加WebService功能,从而将其发布为一个WebService

3.       调用WebService要把接口抓到本地来用;

4.       写每个类一定要写构造器(无论是含参数还是不含参数的),在定义一个参数的时候一定要初始化(如果是对象就要用该类的构造器);

5.       一个类中有main()在运行时提示没有main()方法:打开“Run As“——》”Open Run Dialog…“在其中弄弄(我这次调试的时候也不知道怎么弄的再运行就又好了);

6.       processInstance.findToken():这个方法我还是不知道其中的参数是什么,就才用曲线救国分方式,Token token = processInstance.getRootToken();//每次使token回到流程的开始;

7.                token.signal("to_end")//再是token执行相关路径;

你可能感兴趣的:(webservice)