Polarion工作流插件(自定义)

news2024/12/23 10:38:01
  1. 创建插件
  2. 命名插件

  3. 配置插件



  4. Condition&Function
    package com.polarion.capital.example.conditions;
    
    import com.polarion.alm.tracker.model.IWorkItem;
    import com.polarion.alm.tracker.workflow.IArguments;
    import com.polarion.alm.tracker.workflow.ICallContext;
    import com.polarion.alm.tracker.workflow.ICondition;
    
    /**
     * Each implementation of workflow condition has to implement ICondition class.
     * This condition will simply count number of comments. The workflow condition
     * will be successful if the method 'passesCondition' will return true.
     * 
     * @return true if WI has at least 1 comment, or false otherwise
     * 
     * @author Michal Antolik
     */
    public class ConditionExample implements ICondition {
    
    	public boolean passesCondition(ICallContext context, IArguments arguments) {
    		IWorkItem wi = context.getWorkItem();
    		return !wi.getApprovals().isEmpty();
    	}
    
    }
    public class FunctionExample implements IFunction {
    
    	static final private long day = 24 * 3600 * 1000L;
    	static final private long hour = 3600 * 1000L;
    
    	/*
    	 * (non-Javadoc)
    	 * 
    	 * @see com.polarion.alm.tracker.workflow.IFunction#execute(com.polarion.alm.tracker.workflow.ICallContext,
    	 *      com.polarion.alm.tracker.workflow.IArguments)
    	 */
    	public void execute(ICallContext context, IArguments arguments) {
    
    		String field = arguments.getAsString("field");
    
    		IWorkItem wi = context.getWorkItem();
    		ICustomField cf = wi.getCustomFieldPrototype(field);
    
    		if (cf == null) {
    			throw new UserFriendlyRuntimeException(
    					"Invalid action parameter: Specified field doesn't exist.");
    		}
    
    		IType type = cf.getType();
    		if (!(type instanceof IPrimitiveType)
    				|| !(((IPrimitiveType) type).getTypeName()
    						.equals("java.lang.String"))) {
    			throw new UserFriendlyRuntimeException(
    					"Invalid action parameter: Incorrect field type - expected 'string'");
    		}
    
    		long creationDate = wi.getCreated().getTime();
    		long now = Calendar.getInstance().getTimeInMillis();
    		long diff = now - creationDate;
    
    		long days = diff / day;
    		long hours = (diff - days * day) / hour;
    
    		StringBuffer time = new StringBuffer();
    		if (days > 0) {
    			time.append(days).append(" days ");
    		}
    
    		if (hours > 0) {
    			time.append(hours).append(" hours");
    		}
    
    		if (time.length() == 0) {
    			time.append("less than 1 hour");
    		}
    
    		wi.setCustomField(field, time.toString());
    	}
    
    }

    特别注意:<module id="com.polarion.capital.example" version="1.0.0">
    id设置为项目名称,此处如果不设置会导致插件无法正常使用。

  5. 部署插件

    部署地址目录结构参考:E:\programs\Polarion_2304\polarion\extensions\README.txt


  6. 插件使用

    插件部署后,重启Polarion服务才可以使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628546.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TIME_WAIT的处理方式

TIME_WAIT 是什么 TIME_WAIT 是指在 TCP 连接关闭时&#xff0c;等待所有分组确认被接收的状态&#xff0c;这个状态会持续 2MSL&#xff08;Maximum Segment Lifetime&#xff09;的时间&#xff0c;以确保所有分组都被接收。在这段时间内&#xff0c;该连接不能被重用。MSL …

Jmeter 实现 grpc服务 压测

一、Jmeter安装与配置 网上有很多安装与配置文章&#xff0c;在此不做赘述 二、Jmeter gRPC Request 插件安装 插件下载地址&#xff1a;JMeter Plugins :: JMeter-Plugins.org 将下载文件解压后放到Jmeter安装目录下 /lib/ext 然后在终端输入Jmeter即可打开 Jmeter GUI界面…

搞定“超超超难”剑桥面试数学题番外篇:ARM64汇编

0. 概览 在 有趣的小实验&#xff1a;四种语言搞定“超超超难”剑桥面试数学题 那篇博文中&#xff0c;我们使用 4 种语言&#xff08;x64汇编、C、Swift 以及 Ruby&#xff09;实现了一道算法题。 不过&#xff0c;其中的汇编语言对应的是 intel CPU 上的 x64 指令集&#x…

手把手教你如何把系统的前端页面改成vue 脚手架项目,实现前后端分离

这篇文章从零开始&#xff0c;介绍怎么把现有的一个商城的页面移动到vue脚手架项目上&#xff0c;实现前后端代码的完全分离。 首先&#xff0c;我们需要新建一个vue的脚手架的项目&#xff0c;在此之前&#xff0c;需要安装node.js 打开IntelliJ IDEA或者winR&#xff0c;输入…

【Java基础学习打卡03】计算机中数据的表示、存储与处理

目录 前言一、数据的表示1.数据与信息2.计算机中的数据3.计算机中数据的单位 二、数据的存储三、数据的处理1.进位计数值2.进制间转换 四、字符编码总结 前言 本小节主要介绍在计算机中数据的表示、存储与处理。要知道计算机内部使用二进制数据&#xff0c;也就是0和1组成的数…

STM32单片机+机智云AIoT+智能服药箱

摘要:随着我国老龄化进程的日趋加快&#xff0c;越来越多的老年人步入了快乐并充实的晚年生活。但是随着年龄的增长&#xff0c;各种医药用品也成了老年人生活的必需品&#xff0c;有人每天甚至需要在不同时间服用多种不同的药物&#xff0c;如果子女不在身边&#xff0c;老年人…

一款基于RT-Thread操作系统的自动测温+风扇自动调速+加湿+自动启停的智能风扇项目(附源码下载)

基于 RT-Thread 的智能加湿风扇 作品背景 一款基于 RT-Thread 操作系统的自动检测温湿度情况进行风扇转速自动调节&#xff0c;加湿自动启停的桌面风扇。 所用硬件&#xff1a; 主控&#xff1a;CH32V307 开发板。温湿度检测&#xff1a;AHT10 温湿度模块。风扇主体&#x…

企业开源测试项目实战(附全套实战项目教程+视频+源码)

接口测试项目 1. No matching distribution found for itypes1.1.0 Could not find a version that satisfies the requirement itypes1.1.0 (from -r requirements.txt (line 8)) (from versions: ) No matching distribution found for itypes1.1.0 (from -r requirements.…

Deepspeed Chat项目理解

ChatGPT的广泛使用促进大模型火起来了&#xff0c;深度学习人工智能开启了2.0时代&#xff0c;deepspeed chat是微软开源的大模型训练工具&#xff0c;它充分利用了deepspeed的高效训练的特点&#xff0c;能够自动化的进行多种大模型训练。 言归正传&#xff0c;在博客中我将对…

什么是大数据,常见的大数据应用领域?

现在大数据发展的如火如荼&#xff0c;也有不少小伙伴对于什么是大数据比较感兴趣&#xff0c;那么大数据在比较官方的定义是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力…

ASP.NET Core Web API入门:创建新项目

ASP.NET Core Web API入门&#xff1a;创建新项目 一、引言二、创建新项目三、加入Startup类&#xff0c;并替换Program.cs内容四、编辑Program.cs代码五、修改控制器的路由六、运行项目 一、引言 最近闲着&#xff0c;想着没真正从0-1开发过ASP.NET Core Web API的项目&#…

Navicat for Redis 与 Navicat Premium 16.2 现已正式发布 | 释放 Redis 全部潜能

今天&#xff0c;我们正式发布 Navicat for Redis 与 Navicat Premium 16.2 两款产品。注入 Redis 能力&#xff0c;这对 Navicat 具有里程碑意义。 此次首发的 Navicat for Redis 数据库管理开发工具&#xff0c;将为 Redis 用户的日常工作带来更为便捷、高效的全新体验。同时…

XV-442-57CQB-1-10伊顿触摸屏EATON

​ XV-442-57CQB-1-10伊顿触摸屏EATON XV-442-57CQB-1-10伊顿触摸屏EATON plc的通信模块是用来完成与别的PLC&#xff0c;其他智能控制设备或计算机之间的通信。以下简单介绍FX系列通信用功能扩展板、适配器及通信模块。 &#xff08;1&#xff09;通信扩展板FX2N-232-BD…

第十五章物资需求计划

物料需求计划&#xff08;MRP&#xff09;是物料管理&#xff08;MM&#xff09;和生产计划&#xff08;PP&#xff09;的组成部分。在本章中&#xff0c;您将学习如何使用MRP来优化物流和供应链规划流程。 物料需求计划&#xff08;MRP&#xff09;是一种用途广泛、直观的计划…

44 最佳实践-性能最佳实践-裸设备映射

文章目录 44 最佳实践-性能最佳实践-裸设备映射44.1 概述44.2 配置示例 44 最佳实践-性能最佳实践-裸设备映射 44.1 概述 配置虚拟机存储设备时&#xff0c;除了将文件配置给虚拟机作为虚拟磁盘使用外&#xff0c;还可以将块设备&#xff08;物理LUN、逻辑卷等&#xff09;直…

VXLAN技术应用场景及测试

定义 RFC7348定义了VLAN扩展方案VXLAN&#xff08;Virtual eXtensible Local Area Network&#xff0c;虚拟扩展局域网&#xff09;。 VXLAN采用MAC in UDP&#xff08;User Datagram Protocol&#xff09;封装方式&#xff0c;是NVO3&#xff08;Network Virtualization ove…

设计模式(行为型模式)之:Strategy(策略模式)

文章目录 本质&#xff1a;动机&#xff1a;定义&#xff1a;一个不好的例子策略模式重写总结 本质&#xff1a; 分离算法&#xff0c;选择实现。动机&#xff1a; 在软件构建过程中&#xff0c;某些对象使用的算法可能多种多样&#xff0c;经常改变&#xff0c;如果将这些算…

LeetCode 按摩师 python

目录 1.题目描述 2.普通解法&#xff08;通过部分测试用例&#xff09; ​编辑 3.动态规划解法 3.题目总结 1.题目描述 一个有名的按摩师会收到源源不断的预约请求&#xff0c;每个预约都可以选择接或不接。在每次预约服务之间要有休息时间&#xff0c;因此她不能接受相邻…

(六)CSharp-CSharp图解教程版-委托

一、委托概述 1、什么是委托 委托和类一样&#xff0c;是一种用户定义类型&#xff08;即是一种类&#xff0c;所以也是一个引用类型&#xff09;。在它们组成的结构方面区别是&#xff0c;类表示的是数据和方法的集合&#xff0c;而委托则持有一个或多个方法。 可以把 deleg…

Spring架构篇--2.7.1 远程通信基础--Netty原理--NioEventLoopGroup

前言&#xff1a;在使用Netty 时不管是服务端还是客户端都需要 new NioEventLoopGroup 对象进行工作&#xff0c;NioEventLoopGroup的作用是什么呢&#xff1b; 1 NioEventLoopGroup 类图&#xff1a; 从类名字来看它是一个Nio 流的事件轮询器组&#xff0c;既然是一组顾名思…