Java远程调用BPS流程实现流程运行简单示例
1、简介:略
2、背景:略
3、目的:自我学习笔记
4、实现过程
(1)、画出流程图 如下:
路由活动分支下的条件语句为复杂表达式:
((account<200&&divisionresult.equals("1"))||(account>=200&&account<1000&&directorateresult.equals("1"))||(account>=1000&&VCresult.equals("1")&&directorateresult.equals("1")))
(2)发布流程
(3)在eclipse中新建Java项目,引入BPS client 端依赖的jar包, 这些jar包可以在:
http://product.primeton.com/download/attachments/14911104/Primeton_BPS_7.5_API_Libraries.zip 下载,
下载后解压,右键项目选择properties,然后将3rd 和bps 两个文件夹下的jar包导入新建的remotebpsclient工程。
(4)创建包含main方法的类BPSClient(注意要有包名),在src目录下创建uddi-address.xml。
uddi-address.xml:
<?xml version="1.0" encoding="UTF-8"?> <uddi__address__list>
<uddi__address id="default">
<name>localserver</name>
<logicName>default</logicName>
<type>remote</type>
<description>uddi-config.xml at " Work Space"</description>
<uddiHost>127.0.0.1</uddiHost>
<uddiPort>8080</uddiPort>
<uddiWebContext>default</uddiWebContext>
<uddiUserID>bps</uddiUserID>
<uddiPassword>000000</uddiPassword>
<uddiAdminPort>6200</uddiAdminPort>
</uddi__address>
</uddi__address__list>
BPSClient中代码:
package com.bps.test; import java.util.*; import com.eos.workflow.api.BPSServiceClientFactory;
import com.eos.workflow.api.IBPSServiceClient;
import com.eos.workflow.api.IWFWorkItemManager;
import com.eos.workflow.data.WFWorkItem;
import com.primeton.workflow.api.WFReasonableException;
import com.primeton.workflow.api.WFServiceException; public class BPSClient { public static void main(String[] args) throws WFServiceException, WFReasonableException { BPSServiceClientFactory.getLoginManager().setCurrentUser("1001", "tiger");
IBPSServiceClient client = BPSServiceClientFactory.getDefaultClient();
IWFWorkItemManager workItemManager = client.getWorkItemManager(); //创建流程
long id =client.getProcessInstManager().
createAndStartProcessInstance("com.primeton.test3.newworkflow",
"Process A","Process A");
System.out.println("流程实例ID为:"+id); //项目申请 资金为10W
List<WFWorkItem> workItemList =workItemManager.queryNextWorkItemsByProcessInstID(id, false);
WFWorkItem item = workItemList.get(0);
Map<String,Object> map = new Hashtable<String,Object>();
map.put("applicant", "tiger");
map.put("projectname", "buybook");
map.put("account",10);
workItemManager.finishWorkItemWithRelativeData(item.getWorkItemID(), map, false); //事业部经理审核通过
BPSServiceClientFactory.getLoginManager().setCurrentUser("1001", "tiger");
workItemList =workItemManager.queryNextWorkItemsByWorkItemID(item.getWorkItemID(), false);
item = workItemList.get(0);
map = new Hashtable<String,Object>();
map.put("divisionresult",1);
workItemManager.finishWorkItemWithRelativeData(item.getWorkItemID(), map, false); //立项并结束
BPSServiceClientFactory.getLoginManager().setCurrentUser("1001", "tiger");
workItemList =workItemManager.queryNextWorkItemsByWorkItemID(item.getWorkItemID(), false);
item = workItemList.get(0);
workItemManager.finishWorkItem(item.getWorkItemID(), false); } }
(5)运行结果:
Java远程调用BPS流程实现流程运行简单示例的更多相关文章
- Java[2] 分布式服务架构之java远程调用技术浅析(转http://www.uml.org.cn/zjjs/201208011.asp)
转自:http://www.uml.org.cn/zjjs/201208011.asp 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如: ...
- Java远程调用邮件服务器,实现邮件发送
写这篇文章的背景是公司Android客户端需要实现一个功能,实现类似于密码找回或者用户注册完发送一个邮件给用户的功能,当然这些逻辑客户端只负责请求自己的服务端,自己的服务端再去请求邮件服务器. 邮件服 ...
- java 远程调用 RPC
1. 概念 RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议.它允许像调用本地服务一样调用远程服务.它可以有不同的实现方式.如RMI(远程方法调用).H ...
- java远程调用linux的命令或者脚本
转载自:http://eksliang.iteye.com/blog/2105862 Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar) 使用步骤如下 ...
- Java远程调用
一. 概念: RMI全称是Remote Method Invocation-远程方法调用,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络分布式应用系统的核心解决方案之一.它支持 ...
- java远程调用rmi入门实例
RMI是Java的一组拥护开发分布式应用程序的API.RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol). ...
- 【转】Python中实现远程调用(RPC、RMI)简单例子
远程调用使得调用远程服务器的对象.方法的方式就和调用本地对象.方法的方式差不多,因为我们通过网络编程把这些都隐藏起来了.远程调用是分布式系统的基础. 远程调用一般分为两种,远程过程调用(RPC)和远程 ...
- Python中实现远程调用(RPC、RMI)简单例子
说白了,远程调用就是将对象名.函数名.参数等传递给远程服务器,服务器将处理结果返回给客户端 远程调用使得调用远程服务器的对象.方法的方式就和调用本地对象.方法的方式差不多,因为我们通过网络编程把这 ...
- Java 远程调用之Hessian简例
1. [代码]1.服务接口(Hello.java) package server; public interface Hello { String hello(String name);}2. [代码 ...
随机推荐
- 怎样将英文版的Eclipse转为中文版的?
=====>1.打开eclipse储存文件夹 =====>2.在eclipse文件中找到dropins文件 =====>3.把已经下载好的eclipse汉化包复制到dropins中 ...
- 汇编segment
一个正常的应用程序被由若干个 segment组成. 定义 segment: SECTION .段名 SECTION 也可以小写 如: 定义数据段: section .data 定义代码段: sec ...
- 爬虫_python3_urllib
urlib库为python3的HTTP内置请求库 urilib的四个模块: urllib.request:用于获取网页的响应内容 urllib.error:异常处理模块,用于处理异常的模块 urlli ...
- tcpdump简单使用
1.使用wincap将文件放入系统任意路径, 2.进入系统,赋文件可执行权限, 3.输入命令:./tcpdump -i eth0 -s 0 -w xxx.pcap 4.进行数据交互 5.退出程序运行, ...
- React初识整理(三)--受控组件解决方法
1. 受控组件:组件处于受控制状态,不可更改输入框内的值. 2. 什么情况下会让组件变成受控组件? - 文本框设置了value属性的时候 - 单选框或多选框设置了checked属性的时候. 3. 如何 ...
- 经典的7种排序算法 原理C++实现
排序是编程过程中经常遇到的操作,它在很大程度上影响了程序的执行效率. 7种常见的排序算法大致可以分为两类:第一类是低级排序算法,有选择排序.冒泡排序.插入排序:第二类是高级排序算法,有堆排序.排序树. ...
- luogu 2296 寻找道路 (搜索)
luogu 2296 寻找道路 题目链接:https://www.luogu.org/problemnew/show/P2296 从终点bfs或者dfs,找出所有终点能到达的点. 然后再从1到n看一下 ...
- SpringAOP拦截器的代理机制
要使用方法名匹配AOP切面编程,需要使用到spring中的org.springframework.aop.support.NameMatchMethodPointcutAdvisor这个类,advic ...
- [转]Makefile中的wildcard/notdir/patsubst
1.wildcard : 扩展通配符 2.notdir : 去除路径 3.patsubst :替换通配符 例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd ...
- shell中的$(( )) 的用途:主要用在整数的运算$(( a+b*c ))
$ a=5; b=7; c=2 $ echo $(( a+b*c ))//注意在进行这些运算时必须是双括号 $ echo $(( (a+b)/c )) $ echo $(( (a*b)%c))