Lombardi WebAPI 详解

项目上需要使用Lombardi即IBM Websphere BPM7.5,就由我承担起了研究和部署、实施的任务。由于公司之前没有使用过该平台,所以几乎没有现成的资源。只能从IBM的开发网站上下载英文资料进行研究。值得高兴的是最终成功的完成了lombardi的的部署和实施任务。

下面是之前研究Lombardi中所整理的一些关于WebAPI的一些资料,希望对需要使用lombardi的人有所帮助。

1. WebAPI相关接口和类说明

以下是Lombardi提供的WebAPI所有内容。在这里对每个类做了概要说明,详细内容需要参考相关文档。并且每个类的具体应用方法和能够达到的效果需要在通过实践才能最终确定。


接口


WebAPI


主要用于连接lombardi,从而获取必要的数据信息;以及涉及到流程的具体操作:

1)获取流程实例、当前用户、所有角色、任务分配;

2)优先级更改;

3)到期日期的修改;

4)终止流程、流程暂停;

5)启动一个新的流程;

6)开始执行任务、关闭任务;

7)执行搜索获取流程实例;

8)创建、删除文档等



Action


ActionPermission


确定用户是否可以执行特定的操作与过程实例或任务。可以获取和设置该值


BusinessData


用来获取流程本身定义的变量及其值。


ChartData


ChartData包含的是在记分板中被引用的图像数据。


ClientInfo


获取客户端的信息。


ComplexValue


ComplexValue用于包装复杂类型的值传递给WebAPI操作,并且可以包含任何命名空间中的单个元素。该类是用来传递复杂类型对象的值。


CustomProperty


已字符串键/值对的形式获取和设置用户自定义属性。


Document


保存跟流程实例相关的文件类。


DocumentProperty


已字符串键/值对的形式获取文档中附带的属性。


ExposedItem


ExposedItemType


ExternalActivity


实现活动的自定义属性、输入和输出参数。


ExternalActivityAttachment


用来连接外部活动的定义和外部活动数据


ExternalActivityData


封装和传递ExternalActivityAttachment所需要的变量


Favorite


我的最爱定义了一种用户启动一个进程或服务中的成员的喜爱。


FavoriteType


InfoPathForm


支持office的infopath在线表单


InfoPathFormAttachment


Infopath表单相关附件


InfoPathFormData


Infopath表单相关数据


Parameter


为流程和活动定义参数


Priority


标示任务的重要性


Process


一个过程是业务流程的定义,可用于启动新的流程实例或组返回的过程实例,通过这个API的各种操作。


ProcessInstance


流程实例


ProcessInstanceStatus


流程实例状态


Report


Role


角色


SavedSearch


客户端使用一个SavedSearch执行搜索来获取进程实例和/或任务


Scoreboard


用户可以通过Scoreboard 查看自己的工作效率等信息


ScoreboardData


ScoreboardData包含实际数据


Search


用来搜素流程实例运行和任务中的数据


SearchableProcessColumn


流程搜索列


SearchableProcessInstanceColumn


流程实例搜索列


SearchableTaskColumn


任务搜索列


SearchableType


搜索类型


SearchColumn


一个SearchColumn是用于指定搜索传递列,条件和排序。


SearchColumnMetaData


SearchCondition


搜索条件


SearchMetaData


SearchMetaData用来描述信息,需要执行搜索和搜索结果的描述。


SearchOperator


SearchOrder


SearchOrdering


一个用于指定SearchOrdering,搜索结果中的列进行排序的升序或降序排列。


SearchResultRow


在一个SearchResultRow包含的一组值 - 符合搜索条件的搜索中的每个列的值。


SearchResults


一个SearchResults对象包含在搜索中指定的列和行包含每一列的值的列表的搜索排序排序的列元数据。


SendTaskInfo


SendTaskInfo可用于构建和发送与流程实例没有直接相关的任务。


ServerInfo


描述服务的相关信息


Service


一个任务要执行的服务


Task


任务是包含信息有关的活动的一个实例,通常与流程实例相关联。


TaskListSyncInput


TaskListSyncInput用于同步客户端在服务器上执行已保存的搜索结果。


TaskListSyncOutput


TaskListSyncOutput包含客户端需要同步的任务列表在服务器上的当前状态保存的搜索列表的变化。


TaskStatus


任务状态


TaskSyncAction


TaskSyncItem


一个TaskSyncItem指示客户端应该怎样做同步的任务列表中保存的搜索结果。


UpdateDocument


UpdateDocumentResponse


User


用户


UserConfiguration


UserConfiguration用于从服务器检索有关当前用户在单个操作中的的信息。


Variable


变量

2. Web API 的使用场景及具体实现

下面将使从3个场景进行讲解WebAPI。分别是使用 Web API 查询待办任务、使用 Web API 获取业务数据、使用 Web API 更新流程数据并推动流程继续流转。

2.1 WebAPI初始化

具体介绍如何灵活使用 Web API 完成与客户自定义 Web 应用的整合。这里提到的客户自定义应用泛指开发商自行开发的应用或第三方应用。本稿将会介绍如何实现最常用的 Web API 接口,关于更多接口请参考 LombardiInstallDir\web-api 目录。

在使用 Web API 之前,需要先初始 Web API 对象。WebSphere Lombardi Edition 将流程及相关数据封装成 Web Service,并提供了访问 Web Service 的 JAX-PRC 接口的 WebAPIFactory 类。我们可以通过构建 WebAPIFactory 实例来初始 Web API 对象。下面代码 1 用于初始 Web API 对象。

代码 1. 初始 Web API 对象


private WebAPI WebAPI;

public static String ServerRoot="http://localhost:19086/";

/** initialize WebAPI object **/

public void initWebAPI(String username, String password){

WebAPIFactory WebAPIFactory;

try {

WebAPIFactory = WebAPIFactory.newInstance(this.getProperties(username, password));

WebAPI = WebAPIFactory.newWebAPI();

}catch (Exception e) {

e.printStackTrace();

}

}

/** Set process properties **/

public Properties getProperties(String username, String password){

Properties properties = new Properties();

properties.put("javax.xml.rpc.security.auth.username", username );

properties.put("javax.xml.rpc.security.auth.password", password);

properties.put("javax.xml.rpc.service.endpoint.address",

this.ServerRoot + "WebAPI/services/WebAPIService");

properties.put("javax.xml.rpc.session.maintain", "true");

properties.put("com.lombardisoftware.includeNullArrayElements", "true");

return properties;

}

代码中 username,password 为可访问 WLE 流程的用户。

2.2 使用 Web API 查询待办任务

Web API 提供了 Search 类帮助我们查询流程实例或任务。我们可以通过 Search 类的 setSearchColumn 指定需要查询的项目,通过 setSearchConditions 指定查询条件,通过 setOrderBy 指定查询结果排序。代码 2 是查询待办任务的代码示例。

代码 2. 查询待办任务


/** Search inbox tasks **/

public SearchResults searchMyTask() throws Exception {

//Create a new search instance

Search search = new Search();

//Set it to be organized by Task

search.setOrganizedByType(SearchableType._Task);

//Specify the columns to return

search.setColumns(new SearchColumn[] {

new SearchColumn(SearchableType._Process, SearchableProcessColumn._Name, null),

new SearchColumn(SearchableType._ProcessInstance,

SearchableProcessInstanceColumn._Id, null),

new SearchColumn(SearchableType._Task, SearchableTaskColumn._Id, null),

new SearchColumn(SearchableType._Task, SearchableTaskColumn._Status, null),

new SearchColumn(SearchableType._Task, SearchableTaskColumn._Subject, null),

new SearchColumn(SearchableType._Task, SearchableTaskColumn._Activity, null),

new SearchColumn(SearchableType._Task, SearchableTaskColumn._ReceivedDate, null),

new SearchColumn(SearchableType._Task, SearchableTaskColumn._ClosedDate, null),

new SearchColumn(SearchableType._Task, SearchableTaskColumn._AssignedToUser, null),

});

//Set the conditions - search tasks with status of new or received

search.setConditions(new SearchCondition[] {

new SearchCondition(

new SearchColumn(SearchableType._Task, SearchableTaskColumn._Status, null),

SearchOperator._EQUALS,

TaskStatus._New_or_Received),

new SearchCondition(

new SearchColumn(SearchableType._Process, SearchableProcessColumn._Name, null),

SearchOperator._NOT_EQUALS,

null)

});

//Set the results to be ordered by task ID ascending

search.setOrderBy(new SearchOrdering[] {

new SearchOrdering(

new SearchColumn(SearchableType._Task, SearchableTaskColumn._Id, null),

SearchOrder.ASCENDING)

});

//Execute the inbox saved search, retrieving the first 20 results

SearchResults results = WebAPI.executeSearch(search, 20, null);

return results;

}

本稿以 JSP 作为客户端页面,介绍如何在客户自定义的表单里使用上面定义的 SearchResults 类获取查询结果(代码 3)。

代码 3. 将待办任务查询结果返回 JSP 页面


<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<%@ page language="java" import="com.myWebAPI.*,teamworks.samples.client.WebAPIFactory,

com.lombardisoftware.WebAPI.*"%>

<%

HttpSession sessionObj= request.getSession();

String username = (String)sessionObj.getAttribute("userName");

String password = (String)sessionObj.getAttribute("password");

MyWebAPI WebAPI = new MyWebAPI();

String ServerRoot=WebAPI.getServerRoot();

WebAPI.initWebAPI(username,password);

SearchResults results = null;

results= WebAPI.searchMyTask();

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

-- 省略 --

</head>

<body>

<table border="2">

<%

for( int i=0; i<results.getRows().length; i++ ){

SearchResultRow row=results.getRows()[i];

%>

<tr>

<%

String processName = (String)row.getValues(0);

long piId = ((Long)row.getValues(1)).longValue();

long taskId = ((Long)row.getValues(2)).longValue();

String status = (String)row.getValues(3);

Task task = WebAPI.getTaskByID(taskId);

String activity = (String)row.getValues(6);

String subject = (String)row.getValues(4);

String AssignedToUser = (String)row.getValues(11);

%>

<td>

<%=piId%>

</td>

<td>

<%=processName%>

</td>

<td>

<%=taskId%>

</td>

<td>

<%=activity%>

</td>

<td>

<%=AssignedToUser%>

</td>

<td>

</tr>

<% } %>

</table>

</body>

</html>

时间: 2024-11-06 03:34:00

Lombardi WebAPI 详解的相关文章

WebApi 接口参数不再困惑:传参详解

转自:http://www.cnblogs.com/landeanfen/p/5337072.html 阅读目录 一.get请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 4.“怪异”的get请求 二.post请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 4.后台发送请求参数的传递 三.put请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 四.delete请求 五.总结 正文 前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如

C#进阶系列——WebApi 接口参数不再困惑:传参详解

C#进阶系列--WebApi 接口参数不再困惑:传参详解

[转]C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

本文转自:http://www.cnblogs.com/landeanfen/p/5501487.html 阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T content) 2.Ok(). Ok(T content) 3.NotFound() 4.其他 5.自定义IHttpActionResult接口的实现 三.HttpResponseMessage 四.自定义类型 五.总结 正文 前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学

基础拾遗------webservice详解

基础拾遗 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗------接口详解 基础拾遗------泛型详解 前言 工作当中常用的服务接口有三个wcf,webservice和webapi.首先第一个接触的就是webservice,今天大致总结一下. 1.webservice概念相关 1.1.Web Service也叫XML Web Service WebService 是一种可以接收从Inter

Web Api 接口返回值不困惑:返回值类型详解

前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 WebApi 接口参数:传参详解,这篇博文内容本身很基础,没想到引起很多园友关注,感谢大家的支持.作为程序猿,我们都知道参数和返回值是编程领域不可分割的两大块,此前分享了下WebApi的传参机制,今天再来看看WebApi里面另一个重要而又基础的知识点:返回值.还是那句话:本篇针对初初使用WebApi的同学们,比较基础,有兴趣的且看看. 使用过Webapi

C#依赖注入控制反转IOC实现详解

原文:C#依赖注入控制反转IOC实现详解 IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责将这些联系在一起. 举个例子,组件A中有类ClassA,组件B中有接口IB和其对应的实现类B1和B2. 那么,现在ClassA需要利用IB接口来做一些事情,例如: public class ClassA { public void DoSomething() { IB b = ??? b.DoWork(); }} 现

Spring事务管理(详解+实例)

写这篇博客之前我首先读了<Spring in action>,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下: Spring事务机制详解 Spring事务配置的五种方式 Spring中的事务管理实例详解 1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都

转载:DenseNet算法详解

原文连接:http://blog.csdn.net/u014380165/article/details/75142664 参考连接:http://blog.csdn.net/u012938704/article/details/53468483 本文这里仅当学习笔记使用,具体细节建议前往原文细度. 论文:Densely Connected Convolutional Networks 论文链接:https://arxiv.org/pdf/1608.06993.pdf 代码的github链接:h

MariaDB(MySQL)创建、删除、选择及数据类型使用详解

一.MariaDB简介(MySQL简介略过) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB. MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL A