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流程实现流程运行简单示例的更多相关文章

  1. Java[2] 分布式服务架构之java远程调用技术浅析(转http://www.uml.org.cn/zjjs/201208011.asp)

    转自:http://www.uml.org.cn/zjjs/201208011.asp 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如: ...

  2. Java远程调用邮件服务器,实现邮件发送

    写这篇文章的背景是公司Android客户端需要实现一个功能,实现类似于密码找回或者用户注册完发送一个邮件给用户的功能,当然这些逻辑客户端只负责请求自己的服务端,自己的服务端再去请求邮件服务器. 邮件服 ...

  3. java 远程调用 RPC

    1. 概念 RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议.它允许像调用本地服务一样调用远程服务.它可以有不同的实现方式.如RMI(远程方法调用).H ...

  4. java远程调用linux的命令或者脚本

    转载自:http://eksliang.iteye.com/blog/2105862 Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar) 使用步骤如下 ...

  5. Java远程调用

    一.  概念: RMI全称是Remote Method Invocation-远程方法调用,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络分布式应用系统的核心解决方案之一.它支持 ...

  6. java远程调用rmi入门实例

    RMI是Java的一组拥护开发分布式应用程序的API.RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol). ...

  7. 【转】Python中实现远程调用(RPC、RMI)简单例子

    远程调用使得调用远程服务器的对象.方法的方式就和调用本地对象.方法的方式差不多,因为我们通过网络编程把这些都隐藏起来了.远程调用是分布式系统的基础. 远程调用一般分为两种,远程过程调用(RPC)和远程 ...

  8. Python中实现远程调用(RPC、RMI)简单例子

    说白了,远程调用就是将对象名.函数名.参数等传递给远程服务器,服务器将处理结果返回给客户端   远程调用使得调用远程服务器的对象.方法的方式就和调用本地对象.方法的方式差不多,因为我们通过网络编程把这 ...

  9. Java 远程调用之Hessian简例

    1. [代码]1.服务接口(Hello.java) package server; public interface Hello { String hello(String name);}2. [代码 ...

随机推荐

  1. ios invalid put policy encoding 七牛上传报错

    获取七牛token的时候deadline不能为NSString类型 NSDictionary *infoDic = @{@"scope":@"yangtao", ...

  2. Lesson1

    #ifdef __cplusplus #include <cstdlib> #else #include <stdlib.h> #endif #include <SDL/ ...

  3. MIPS简单入门

    What ‘s the MIPS? 汇编语言 汇编语言是一类语言的总称,因处理器不同,而对应的不同机器的指令集也不同,产生了很多种汇编语言. 目前最流行的是ARM,MIPS,x86.ARM用于大量的移 ...

  4. Kernel Stack Overflow(转)

    0x00 漏洞代码 stack_smashing.c #include <linux/init.h> #include <linux/module.h> #include &l ...

  5. What is the difference between try/except and assert?

    assert only check if a condition is true or not and throw an exception. A try/except block can run a ...

  6. vue引用文件

    1)css引入在vue页面中<style scoped> @import url("../assets/css/home.css");</style>2)j ...

  7. ios软件设计中注意点

    1.取消系统自带渲染效果 2.取消屏幕旋转 3.项目中搜索丢失文件

  8. vue 使用element-ui实现城市三级联动

    <template> <div> <el-select v-model="prov" style="width:167px;margin-r ...

  9. 【倍增】7.11fusion

    非常奇妙的倍增题 题目描述 知名科学家小A在2118年在计算机上实现了模拟聚变的过程.我们将她研究的过程简化.核子共有26种,可以用a到z共26个字母表示.核子聚变的过程可以用一个字符串描述.按照顺序 ...

  10. 常用模块之configpaser与shutil

    configparser模块 定义:configparser翻译为配置解析,即它是用来解析配置文件的 配置文件:用于编写程序的配置信息的文件 配置文件编写格式 配置文件中只允许出现两种类型的数据 se ...