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. [代码 ...
随机推荐
- jni 修bug
1. ReferenceTable overflow (max=512) 内存泄露,程序运行一段时间就挂掉了. 在利用反射调用java中的函数需要释放掉查找到的类 void publishJava ...
- mysql的备份与恢复详解
一.为什么要备份 在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据 ...
- WPF知识点全攻略08- 依赖属性
依赖属性是WPF不得不提,不得不会系列又一 先来看一下,自定义依赖属性的写法 public static readonly DependencyProperty IconProperty = Depe ...
- MySQL 实时监控日志
简单的梳理一下为什么要写这边文章,主要是学了ORM之后,发现通过ORM插入数据真的很方便,但是通过ORM生成的SQL语句又是怎么写的呢,百思不得姐.于是就找到了这个办法 首先查看一下查看MySQL 日 ...
- Ueditor1.4.3上传视频IE下无法播放的问题
一:百度编辑器插入视频后,自动生成一段代码: <video class="edui-upload-video vjs-default-skin video-js" contr ...
- Fisherfaces 算法的具体实现源码
/* * Copyright (c) 2011. Philipp Wagner <bytefish[at]gmx[dot]de>. * Released to public domain ...
- 表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的
jQuery代码 <input value="请输入用户名" type="text"> <input value="请输入密码&qu ...
- linux中mysql自带同步
今天打算给一个做主备web服务器.考虑到数据库的同步,现在自己本地虚拟机做个实验. 经过慎重考虑(其实就是参考了下论坛大家的看法). 最后决定用mysql自带的同步设置. 话不多说 配置过程如下.
- laravel模型关联与列表展示
上面这个是一个模型关联的图,其实我们很容易去理解 比如说,一对一,也就是说一个用户对应的是一个手机号. 一对多,比如说一篇文章可以有多条评论 一对多反向:如一篇文章可以有多条评论,但对应每条评论也只针 ...
- java 比较String StringBuffer StringBuilder
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能 ...