开发Restful服务

创建服务实现类

创建一个class,添加下列注解和代码,配置接口访问的入口,需要注意的是Path中的路径必须是与web.xml中resteasyservlet配置的相同,否则将无法访问到接口,此处我们配置在/rest/services下

image-20210220101202007
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package com.xcmg.service;

import java.util.*;

import javax.sql.DataSource;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import com.alibaba.fastjson.JSON;
import com.eos.common.connection.DataSourceHelper;
import com.eos.engine.component.ILogicComponent;
import com.eos.foundation.data.DataObjectUtil;
import com.eos.workflow.api.BPSServiceClientFactory;
import com.primeton.components.rest.annotation.JSONParam;
import com.primeton.ext.engine.component.LogicComponentFactory;
import com.xcmg.getRsInfo;

import commonj.sdo.DataObject;


@Path("/rest/services/RoleService")
@Produces({"application/json"})
public class ProcessStartService {

@POST
@Path("/addProcess")
//新增数据
public String addRole(@JSONParam("role")DataObject[] role)throws Throwable{
//获取后台返回值
Map ms= new HashMap();
//调用数据模型
role = DataObjectUtil.convertDataObjects(role,"com.primeton.eos.Advice.Advice",false);
System.err.println(role.length);
for (int i = 0; i < role.length; i++) {
Object[] inParameters = {
role[i].get("proposer"),
role[i].get("department"),
role[i].get("phone"),
role[i].get("category"),
role[i].get("carrydepartment"),
role[i].get("proposal"),
role[i].get("actuality"),
role[i].get("improvement")
};
//打印数据
Object[] params = new Object[1];
params[0] = role;
Object[] result = null;
//设置登录用户
String userid= (String)role[i].get("state");
BPSServiceClientFactory.getLoginManager().setCurrentUser(userid, "sysadmin");

//构件名称
ILogicComponent logicComponent = LogicComponentFactory.create("com.primeton.eos.phoneProcess");
//逻辑流名称
result = logicComponent.invoke("StartProcess", inParameters);
String count = (String)result[0];
Long id = (Long)result[1];
System.err.println("-----------------------》》"+count);
if(count.equals("1")){
ms.put("errorCode","00100");
ms.put("errorMsg", "新增数据成功");
ms.put("value",id);
}else{
//更新数据
ms.put("errorCode","00200");
ms.put("errorMsg", "新增数据失败");
ms.put("value","");
}
}
return JSON.toJSONString(ms);
}

@GET
@Path("/getProcess/{productCode}")
//查询数据是否存在
public String selectEngineNumberInfoCount(@PathParam("productCode")String productCode) throws Throwable{
Map ms= new HashMap();
DataSource db = DataSourceHelper.getDataSource("default");
//查询用户
String vininfo = "SELECT a.PROCESSINSTID,a.PROPOSER,b.NAME DEPARTMENT,a.PHONE,c.NAME CATEGORY,d.NAME CARRYDEPARTMENT,a.PROPOSAL,a.ACTUALITY,a.IMPROVEMENT,a.SUBMITTIME,a.OPINION1,a.CHECKTIME,a.OPINION2,a.RECHECKTIME,a.STATE FROM ((ADVICE a LEFT JOIN DEPARTMENT b ON a.DEPARTMENT=b.DID)LEFT JOIN CATEGORY c ON a.CATEGORY=c.ID)LEFT JOIN CARRYDEPARTMENT d ON a.CARRYDEPARTMENT=d.ID WHERE PHONE = '"+productCode+"' ORDER BY PROCESSINSTID DESC"; //获取密码
List list = getRsInfo.getRsListbySql(vininfo, db.getConnection());

return JSON.toJSONString(list);
}
}

创建配置文件

在编辑的java同目录下创建文件restconfig.properties并录入以下内容(等号后是对应的类全名)

1
resteasy.resources=com.xcmg.service.ProcessStartService
image-20210220101724380

编辑web.xml文件

编辑web.xml文件,在rest.config.locations下的param-value标签下新增restconfig.properties对应路径,需要增加英文逗号与已有内容分开,保存编辑后需要右键web.xml文件进行部署。

image-20210220101923074

注意事项:

1.修改了web.xml要手动部署web.xml
2.web.xml中的servlet-mapping下的url-pattern要和配置访问的地址对应
3.在rest.config.locations下的param-value标签下新增restconfig.properties对应路径