# 运维
# EQL CLI
通过通用查询语言管理单据,可以查询索引,单据字段,卡片字段等
查询语句实例
select dynamics.idNumber_keyword from doc where docType='RAD1';
select data.customer.idNumber from doc where docType='RAD1'
1
2
2
更新语句示例
update doc set data.customer.idCardAdress='哈哈我该地址了' where docId='8d3f96ef-402883b1-018d-3fab8afc-000e'
1
2
2
TIP
执行更新语句需要十分谨慎。该更新记录会被记录在单据变更历史中
# 测试方法调用
该菜单可以执行代码中的方法
执行示例
nkTestImpl.detail("8d454aaa-ff808081-018d-5983fc97-11bb")
1
nkTestImpl 是类 NkTestImpl的组件名称,该类继承了NkAbstractTest抽象类
如果有自定义的实现方法,都要继承NkAbstractTest
抽象类
该类的方法可以将所有的日志信息显示在结果中
代码示例
@Component("nkTestImpl")
public class NkTestImpl extends NkAbstractTest {
@Autowired
@SuppressWarnings("all")
protected NkDocEngine docEngine;
public List<String> detail(String docId) {
LogRunResult<Object> sb = MemoryLogRunner.run(() -> {
docEngine.detail(docId);
log.info("显示日志");
return null;
});
return sb.getLogs();
}
public List<String> 详情(String docId) {
LogRunResult<Object> sb = MemoryLogRunner.run(() -> {
docEngine.detail(docId);
log.info("显示日志");
return null;
});
return sb.getLogs();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 计划任务
计划任务菜单是对定时任务的管理,所有的定时任务都要继承NkAbstractQuartzJob
类
# 添加计划
配置name
字段和cron
字段可以为该定时任务增加执行计划,添加之后,可以在执行计划
显示栏中看到下一次的执行时间
option
字段是对定时任务入参的配置,若没有参数,则填写{}
,添加之后可以单次执行该任务
# 执行计划
点击详情
可查看该执行计划近100次执行情况的描述
若某一次的执行记录的状态为FAILED
,点击可以看到错误的详情日志
代码示例
@Component
@NkScheduled(cron = "0 45 15 * * ?")
@NkNote("任务测试")
@Slf4j
public class NkJobChangeDocTest extends NkAbstractQuartzJob {
@Autowired
private NkDocEngine docEngine;
@Autowired
private NkSecurityRunner runner;
@Autowired
private DocHMapper docHMapper;
@Override
public void doExecute(JobExecutionContext jobExecutionContext, StatusManager function) throws JobExecutionException {
List<DocH> docIds1 = docHMapper.selectByExample(new DocHExample());
List<String> docIds = docIds1.stream().map(DocH::getDocId).collect(Collectors.toList());
if(docIds!=null){
runner.returnAsUser("admin",()->{
docIds.forEach(docId->{
// 逐条执行
try{
docEngine.doUpdate(docId,"",(docHV)->{
System.out.println(1/0);
}
);
function.update(
NkJobTriggerStatus.create((docIds.indexOf(docId)+1) * 100 / docIds.size())
);
}catch(Exception e){
log.error(String.format("JOB[%s]发生错误:%s","任务测试",e.getMessage()),e);
function.update(
NkJobTriggerStatus.create(
(docIds.indexOf(docId)+1) * 100 / docIds.size(),
String.format("修改单据 %s 失败",docId),
e
)
);
}
});
return null;
});
}
}
}
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
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
# 配置邮箱
任务执行失败可以通过邮箱通知相关人员
nk:
scheduled:
email:
#发送方的邮箱,可以增加昵称: 昵称<XX@qq.com>
from: XX@qq.com
#接收方的邮箱,可以配置多个
to:
- AAA@qq.com
- BBB@qq.com
spring:
mail:
#邮箱服务,这里是钉钉企业邮箱,也可以用其他服务:smtp.163.com:163邮箱,smtp.126.com:126邮箱,smtp.qq.com:qq邮箱
host: smtp.qiye.aliyun.com
#发送方的邮箱,与上面的配置一致
username: yangfan@newcore.net.cn
# 设置密码,该处的密码是发送方邮箱开启SMTP的授权码而非密码,钉钉企业邮箱设置版办法,设置-账户安全-开启三方客户端安全密码-生成密码
password: xxxxx
default-encoding: UTF-8
properties:
mail:
smtp:
ssl:
enable: true
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25