package com.lxzn.activiti;
|
|
import com.lxzn.base.service.IDncPassLogService;
|
import com.lxzn.framework.domain.base.DncPassLog;
|
import com.lxzn.framework.domain.base.SysLogMessageDto;
|
import com.lxzn.framework.domain.base.SysLogTypeObjectDto;
|
import com.lxzn.framework.utils.FileClient;
|
import com.lxzn.framework.utils.SyslogClient;
|
import com.lxzn.framework.utils.date.DateUtil;
|
import com.lxzn.framework.utils.file.FileUtil;
|
import org.activiti.engine.ProcessEngine;
|
import org.activiti.engine.RepositoryService;
|
import org.activiti.engine.RuntimeService;
|
import org.activiti.engine.TaskService;
|
import org.activiti.engine.repository.Deployment;
|
import org.activiti.engine.runtime.ProcessInstance;
|
import org.activiti.engine.task.Task;
|
import org.apache.commons.lang3.StringUtils;
|
import org.junit.Test;
|
import org.junit.runner.RunWith;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.test.context.junit4.SpringRunner;
|
|
import java.io.File;
|
import java.net.InetAddress;
|
import java.net.UnknownHostException;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@RunWith(SpringRunner.class)
|
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
public class TestActiviti {
|
@Autowired
|
private RuntimeService runtimeService;
|
@Autowired
|
private TaskService taskService;
|
@Autowired
|
private ProcessEngine processEngine;
|
|
@Autowired
|
private IDncPassLogService dncPassLogService;
|
|
@Test
|
public void fileClientTxtOrNc() {
|
dncPassLogService.fileClientTxtOrNc();
|
}
|
|
|
/**
|
* 流程定义的部署
|
* activiti表有哪些?
|
* act_re_deployment 部署信息
|
* act_re_procdef 流程定义的一些信息
|
* act_ge_bytearray 流程定义的bpmn文件及png文件
|
*/
|
@Test
|
public void testDeployment() {
|
//ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
|
RepositoryService repositoryService = processEngine.getRepositoryService();
|
Deployment deployment = repositoryService.createDeployment().addClasspathResource("processes/assign_nc_to_device.bpmn") //添加bpmn资源
|
.name("指派NC文档到设备")
|
.deploy();
|
System.out.println(deployment.getName());
|
System.out.println(deployment.getId());
|
}
|
|
/**
|
* 启动流程实例:
|
* 前提是先已经完成流程定义的部署工作
|
*
|
* 背后影响的表:
|
* ACT_HI_ACTINST 已完成的活动信息
|
* ACT_HI_DETAIL 历史详情
|
* ACT_HI_IDENTITYLINK 参与者信息
|
* ACT_HI_PROCINST 流程实例
|
* ACT_HI_TASKINST 任务实例
|
* ACT_HI_VARINST 历史变量
|
* ACT_RU_IDENTITYLINK 执行时 参与者信息
|
* ACT_RU_EXECUTION 执行表
|
* ACT_RU_TASK 当前任务
|
* ACT_RU_VARIABLE 执行时 参数信息
|
*/
|
@Test
|
public void testStartInstance() {
|
//3.创建流程实例 流程定义的key需要知道 holiday
|
String applyUser = "1255172650880737281";
|
//String[] approveUsers = {"1254773336467689474", "1254966905669160962"};
|
String approveUsers = "1254773336467689474, 1254966905669160962";
|
String businessKey = "111111";
|
String key = "assign_nc_to_device";
|
Map<String, Object> map = new HashMap<>();
|
|
map.put("apply_user", applyUser);
|
map.put("approve_users", approveUsers);
|
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(key, businessKey, map);
|
|
//4.输出实例的相关信息
|
System.out.println("流程部署ID"+processInstance.getDeploymentId());//null
|
System.out.println("流程定义ID"+processInstance.getProcessDefinitionId());//holiday:1:4
|
System.out.println("流程实例ID"+processInstance.getId());//2501
|
System.out.println("活动ID"+processInstance.getActivityId());//null
|
}
|
|
/**
|
* 从ACT_RU_TASK表中获取当前用户的任务列表
|
* 从ACT_RU_TASK表中获取taskId的任务
|
*/
|
@Test
|
public void testCompleteTask() {
|
//获取用户的任务列表
|
//List<Task> taskList = taskService.createTaskQuery().taskAssignee("1255172650880737281").list();
|
Task task = taskService.createTaskQuery().taskId("7509").singleResult();
|
if(task != null) {
|
//4.任务列表的展示
|
System.out.println("流程实例ID:"+task.getProcessInstanceId());
|
System.out.println("任务ID:"+task.getId()); //5002
|
System.out.println("任务负责人:"+task.getAssignee());
|
System.out.println("任务名称:"+task.getName());
|
taskService.complete(task.getId());
|
}
|
}
|
|
@Test
|
public void testCandidateUser() {
|
String key = "assign_nc_to_device";
|
String candidate_user = "1254773336467689474";
|
// List<Task> taskList = taskService.createTaskQuery().processDefinitionKey(key).taskCandidateUser(candidate_user)//设置候选用户
|
// .list();
|
// taskList.forEach(System.out::println);
|
Task task = taskService.createTaskQuery().processDefinitionKey(key)
|
.taskCandidateUser(candidate_user).singleResult();
|
if(task != null) {
|
taskService.claim(task.getId(), candidate_user);
|
System.out.println("拾取任务成功");
|
taskService.complete(task.getId());
|
System.out.println("完成任务成功");
|
}
|
}
|
|
@Value("${securedoc.serverIp}")
|
private String serverIp;
|
@Value("${securedoc.serverPort}")
|
private String serverPort;
|
@Value("${securedoc.username}")
|
private String usernameService;
|
@Value("${securedoc.pwd}")
|
private String pwdService;
|
@Value("${securedoc.addressToken}")
|
private String addressToken;
|
@Value("${securedoc.addressUploadFile}")
|
private String addressUploadFile;
|
@Value("${securedoc.localFilePath}")
|
private String localFilePathC;
|
@Value("${securedoc.servicePath}")
|
private String servicePathS;
|
@Value("${securedoc.copyFilePath}")
|
private String newFilePathC;
|
@Value("${securedoc.logIp}")
|
private String logIp;
|
@Value("${securedoc.logPort}")
|
private String logPort;
|
|
@Test
|
public void fileClientTest() {
|
/*SysLogMessageDto message = new SysLogMessageDto();
|
message.setSystemName("DNC");
|
message.setDatetime(DateUtil.format(DateUtil.getNow(),DateUtil.STR_DATE_TIME_SMALL));
|
message.setLocation("成发工业园");
|
message.setTypes("info");
|
message.setAbstract1("abstract");
|
message.setSourceAddress("");
|
*/
|
String host = "127.0.0.1";
|
if (StringUtils.isNotBlank(serverIp)) {
|
host = serverIp;
|
}
|
|
String port = "8299";
|
if (StringUtils.isNotBlank(serverPort)) {
|
port = serverPort;
|
}
|
String username = "admin";
|
if (StringUtils.isNotBlank(usernameService)) {
|
username = usernameService;
|
}
|
String pwd = "123";
|
if (StringUtils.isNotBlank(pwdService)) {
|
pwd = pwdService;
|
}
|
//文件本地地址,根据地址找到文件,将文件解析成文件流
|
String localFilePath = "E:\\test\\a\\";
|
if (StringUtils.isNotBlank(localFilePathC)) {
|
localFilePath = localFilePathC;
|
}
|
//文件上传目的地址,将文件上传到该地址
|
String servicePath = "E:\\test\\b\\";
|
if (StringUtils.isNotBlank(servicePathS)) {
|
servicePath = servicePathS;
|
}
|
//第一步,获取token
|
String token = null;
|
try {
|
token = FileClient.getToken(host,port,username,pwd,addressToken);
|
} catch (Throwable throwable) {
|
throwable.printStackTrace();
|
}
|
|
//若获取token成功,再进行上传文件接口调用
|
if (!token.equals("")){
|
try {
|
File f3 = new File(localFilePath);
|
File[] files = f3.listFiles();
|
for (File fi : files){
|
if (fi.isFile()){
|
SysLogTypeObjectDto objectName = new SysLogTypeObjectDto();
|
objectName.setDateTime(DateUtil.format(DateUtil.getNow(),DateUtil.STR_DATE_TIME_SMALL));
|
objectName.setFileName(fi.getName());
|
objectName.setFileSize(FileUtil.changeFileFormatKb(String.valueOf(new File(localFilePath).length())));
|
objectName.setSourceAddress(localFilePath);
|
//顺序号
|
DncPassLog passLog = dncPassLogService.getById("num0001");
|
if (passLog == null) {
|
passLog = new DncPassLog();
|
passLog.setId("num0001");
|
passLog.setSequenceNumber(1);
|
objectName.setFileNum(Integer.toString(1));;
|
dncPassLogService.save(passLog);
|
} else {
|
Integer number = passLog.getSequenceNumber()+1;
|
dncPassLogService.removeById("num0001");
|
objectName.setFileNum(Integer.toString(number));
|
|
passLog = new DncPassLog();
|
passLog.setId("num0001");
|
passLog.setSequenceNumber(number);
|
dncPassLogService.save(passLog);
|
}
|
|
InetAddress address = null;
|
try {
|
address = InetAddress.getLocalHost();
|
String ip = address.getHostAddress();
|
objectName.setSourceAddress(ip);
|
} catch (UnknownHostException e) {
|
objectName.setSourceAddress("127.0.0.1");
|
}
|
objectName.setDestination(host);
|
objectName.setResult("失败");
|
//获取某个文件下的所有文件
|
String loFilePath = localFilePath + "\\" + fi.getName();
|
String servicePathName =servicePath + "\\" + fi.getName();
|
String b = FileClient.uploadFile(host,port,token,fi.getName(),servicePathName,loFilePath,addressUploadFile);
|
//文件备份删除
|
if (b == null) {
|
try {
|
objectName.setResult("失败");
|
SyslogClient.sendClient(logIp,Integer.valueOf(logPort),objectName.toString());
|
}catch (Exception e) {
|
return;
|
}
|
}
|
else if ( b.equals("成功")) {
|
//备份数据
|
boolean fCopy = FileUtil.copyNcFile(loFilePath,newFilePathC + "/" + DateUtil.format(DateUtil.getNow(),
|
DateUtil.STR_YEARMONTHDAY) + "/" +fi.getName());
|
if (fCopy) {
|
FileUtil.deleteNcFile(loFilePath);
|
}
|
try {
|
objectName.setResult("成功");
|
SyslogClient.sendClient(logIp,Integer.valueOf(logPort),objectName.toString());
|
}catch (Exception e) {
|
return;
|
}
|
} else {
|
try {
|
objectName.setResult("失败");
|
SyslogClient.sendClient(logIp,Integer.valueOf(logPort),objectName.toString());
|
}catch (Exception e) {
|
return;
|
}
|
}
|
}
|
}
|
|
} catch (Throwable throwable) {
|
throwable.printStackTrace();
|
}
|
}
|
}
|
|
|
}
|