Oracle BPM,在设计流程图的时候使用Complex User Task,对应的Human Task在分配对象的时候会采用外部路由,即自定义分配实现。
自定义类要实现oracle.bpel.services.workflow.task.IAssignmentService接口,代码如下:
package dasproject;
/* $Header: TestAssignmentService.java 24-may-2006.18:26:16 Exp $ */
/* Copyright (c) 2004, 2006, Oracle. All rights reserved. */
/*
DESCRIPTION
Interface IAssignmentService defines the callbacks an assignment
service implements. The implementation of the IAssignmentService
is called by the workflow service
PRIVATE CLASSES
<list of private classes defined - with one-line descriptions>
NOTES
<other useful comments, qualifications, etc.>
MODIFIED (MM/DD/YY)
*/
/**
* @version $Header: IAssignmentService.java 29-jun-2004.21:10:35 Exp
$
*
*
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import oracle.bpel.services.workflow.metadata.routingslip.model.*;
import oracle.bpel.services.workflow.metadata.routingslip.model.Participants;
import oracle.bpel.services.workflow.metadata.routingslip.model.ParticipantsType.*;
import oracle.bpel.services.workflow.task.IAssignmentService;
import oracle.bpel.services.workflow.task.ITaskAssignee;
import oracle.bpel.services.workflow.task.model.Task;
public class TestAssignmentService implements oracle.bpel.services.workflow.task.IAssignmentService {
static int numberOfApprovals = 0;
static String[] users = new String[] { "zhangsan", "dangan", "liangban" };
@Override
public Participants onInitiation(Task task, Map propertyBag) {
return createParticipant();
}
@Override
public Participants onReinitiation(Task task, Map propertyBag) {
return null;
}
@Override
public Participants onOutcomeUpdated(Task task, Map propertyBag,
String updatedBy, String outcome) {
return createParticipant();
}
@Override
public Participants onAssignmentSkipped(Task task, Map propertyBag) {
return null;
}
@Override
public List getAssigneesToRequestForInformation(Task task,
Map propertyBag) {
List rfiUsers = new ArrayList();
rfiUsers.add("jcooper");
rfiUsers.add("zhangsan");
rfiUsers.add("dangan");
rfiUsers.add("liangban");
return rfiUsers;
}
@Override
public List getReapprovalAssignees(Task task, Map propertyBag,
ITaskAssignee infoRequestedAssignee) {
List reapprovalUsers = new ArrayList();
reapprovalUsers.add("zhangsan");
reapprovalUsers.add("dangan");
reapprovalUsers.add("liangban");
return reapprovalUsers;
}
private Participants createParticipant() {
if (numberOfApprovals > 2) {
numberOfApprovals = 0;
return null;
}
String user = users[numberOfApprovals++];
ObjectFactory objFactory = new ObjectFactory();
Participants participants = objFactory.createParticipants();
Participant participant =
objFactory.createParticipantsTypeParticipant();
participant.setName("Loan Agent");
ResourceType resource2 = objFactory.createResourceType(user);
resource2.setIsGroup(false);
resource2.setType("STATIC");
participant.getResource().add(resource2);
participants.getParticipantOrSequentialParticipantOrAdhoc().add(participant);
return participants;
}
}
在流程项目属性上增加SOA Workflow的库依赖。
TestAssignmentService要放到SCA-INF/classes路径下。
编辑实现Complex User Task的Human Task对象,在Assignment的Tab页,设置class name为dasproject.TestAssignmentService。
发布流程项目,Complex User Task就会按照自定义类TestAssignmentService来分配任务给指定对象。
onInitiation方法,是指任务初始化的时候分配给谁。
onOutcomeUpdated方法,是指任务被更新结果的时候分配给谁。
getAssigneesToRequestForInformation方法,是指用户请求信息的时候参与方有哪些人。
分享到:
相关推荐
在Laravel框架中,JavaScript路由(laravel-js-routing)是一个非常实用的功能,它允许你在前端JavaScript代码中直接访问后端定义的路由,从而实现前后端的无缝协作。这个功能尤其适用于那些采用SPA(单页应用)架构...
自动路由自动生成Vue路由器路由。 您可能要使用 ,其中包含有关路由的所有有用功能。安装$ npm install -D vue-auto-routing要求webpack> = v... use ( Router )export default new Router ( { // Pass the generat
HCIP-Datacom-Advanced Routing & Switching Technology V1.0 培训教材 HCIP-Datacom-Advanced Routing Switching Technology V1.0 考试大纲 HCIP-Datacom-Advanced Routing Switching Technology V1.0 实验手册
4.5.1 Packet Tracer - Inter-VLAN Routing Challenge Cisco Packet Tracer 思科模拟器 正确答案文件 可直接上交正确答案文件 本答案版权归mewhaku所有,严禁再次转载!!! Copyright @mewhaku 2022 All Rights ...
这篇文章介绍了一种新的用于胶囊网络的路由算法,题为“CAPSULES WITH INVERTED DOT-PRODUCT ATTENTION ROUTING”,是作为计算机视觉领域的开源论文在ICLR 2020会议上发布的。文章的作者包括来自苹果公司和卡内基...
华为数通高级工程师认证HCIP-Datacom-Advanced Routing & Switching Technology V1.0 培训教材,已经解除密码保护,可以自由的更改、添加书签、笔记。
华为HCIP-Datacom-Advanced Routing & Switching Technology V1.0考试大纲培训手册和实验教材
HCIP-Datacom-Advanced Routing Switching Technology V1.0 培训材料 HCIP-Datacom-Advanced Routing Switching Technology V1.0 实验室搭建指南.docx HCIP-Datacom-Advanced Routing Switching Technology V1.0 ...
您可以通过运行以下命令来安装此插件: # If you did not install router plugin yet$ vue add router# Install vue-cli-plugin-auto-routing$ vue add auto-routing 添加插件后,文件结构如下。 src/├── pages/...
《HCIP-Datacom-Advanced Routing & Switching Technology》是华为认证互联网专家(HCIP-Datacom)课程中关于高级路由与交换技术的部分,旨在帮助网络专业人士深入理解并掌握复杂网络环境下的路由与交换原理及实践...
tora_dest.h - destinations the routing protocol knows about tora_neighbor.h - per destination neighbors tora_packet.h - packet definitions tora.cc - basic TORA functionality tora_api.cc - TORA ...
《华为HCIP-Routing & Switching V2.5:数通技术深度解析》 华为的HCIP(Huawei Certified ICT Professional)认证是针对中级网络专业人士的权威认证,其中的Routing & Switching方向专注于网络路由与交换技术。V...
4.2.7 Packet Tracer - Configure Router-on-a-Stick Inter-VLAN Routing Cisco Packet Tracer 思科模拟器 正确答案文件 可直接上交正确答案文件 本答案版权归mewhaku所有,严禁再次转载!!! Copyright @...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
《Python库:edx-event-routing-backends-4.1.1》 在信息技术领域,Python以其易读性、可维护性和丰富的库支持而受到广大开发者的喜爱。本篇将深入探讨"edx-event-routing-backends-4.1.1"这一Python库,它是一个...
PSIRP(Publish-Subscribe Internet Routing Paradigm)项目是一个为期33个月的研究计划,旨在探索和开发发布-订阅模式在互联网路由中的应用。该项目由欧盟第七框架计划资助,自2008年1月开始,至2010年9月结束。...
离线安装包,亲测可用
开源项目-go-ozzo-ozzo-routing.zip,ozzo-routing: An extremely fast and very clean HTTP router that supports regular expression route matching