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. [代码 ...
随机推荐
- sparkmlib-相关系数
一.基本原理 在stat包中实现了皮尔逊(Pearson)与 斯皮尔曼(Spearman)两类相关系数的计算 (1)Pearson: (x,y)协方差/[(x标准方差)*(y标准方差)] 详情可以 ...
- 5 Options for Distributing Your iOS App to a Limited Audience
http://mobiledan.net/2012/03/02/5-options-for-distributing-ios-apps-to-a-limited-audience-legally/ I ...
- 部署Geoserver tomcat部署geoserver
1. 下载Geoserver War 包. 2.把geoserver.war文件放到 webapps文件夹下 3.添加Tomcat 用户 解压文件conf文件夹下 修改tomcat-users.xml ...
- (五)VMware Harbor 部署之SSL
转自:https://www.cnblogs.com/Rcsec/p/8479728.html 1 .签名证书与自签名证书 签名证书:由权威颁发机构颁发给服务器或者个人用于证明自己身份的东西. 自签名 ...
- Linux中fork函数的例子
- 转 在Qt中用QAxObject来操作Excel
最近写程序中需要将数据输出保存到Excel文件中.翻看<C++ GUI Programming with Qt 4>(Second Edition)发现可以在Qt中运用ActiveX控件, ...
- Freemarker入门小案例(生成静态网页的其中一种方式)
其实生成静态网页的方式有好多种,我昨天看了一下,Freemarker是其中一种,但是Freemarker现在我们都用得比较少了,现在用得ActiveMQ用来发送信息到静态页面,不过想了一下这个小东西, ...
- springboot-i18n国际化
简介 In computing, internationalization and localization are means of adapting computer software to di ...
- html节点类型
<li> nodeType:节点类型: <br> 1--->Element节点: <br> 3--->Text节点: <br> 8---&g ...
- (34)zabbix Queue队列
概述 queue(队列)显示监控项等待刷新的时间,可以看到每种agent类型刷新时间,通过queue可以更好的体现出监控的一个指标.正常情况下,是一片绿色. 如果出现过多红色,那么需要留意一下.我们也 ...