提交 9401bbf2 编写于 作者: O o2null

Merge branch 'feature/index' into 'develop'

修复无法回滚和control中retract的判断

See merge request o2oa/o2oa!1304
......@@ -21,7 +21,9 @@ class ActionGet extends BaseAction {
private static final Logger LOGGER = LoggerFactory.getLogger(ActionGet.class);
ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
LOGGER.debug("execute:{}, id:{}.", effectivePerson::getDistinguishedName, () -> id);
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<Wo> result = new ActionResult<>();
Business business = new Business(emc);
......
......@@ -44,181 +44,193 @@ import com.x.processplatform.core.entity.element.util.WorkLogTree.Nodes;
import com.x.processplatform.core.express.ProcessingAttributes;
import com.x.processplatform.core.express.service.processing.jaxrs.work.V2RetractWi;
/**
* 是否可以召回有三个判断点
* 1.活动环节设置允许召回
* 2.多人活动(串并行)中没有人已经处理过,也就是没有当前活动的已办
* 3.回溯活动如果经过一些非人工环节那么也可以召回.
* 在control中同样进行了这3个点的判断
* @author ray
*/
class V2Retract extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(V2Retract.class);
private WorkLog workLog;
private TaskCompleted taskCompleted;
private Work work;
private String series = StringTools.uniqueToken();
private Record record;
private List<String> existTaskIds = new ArrayList<>();
private EffectivePerson effectivePerson;
ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
ActionResult<Wo> result = new ActionResult<>();
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
this.effectivePerson = effectivePerson;
work = emc.find(id, Work.class);
if (null == work) {
throw new ExceptionEntityNotExist(id, Work.class);
}
Activity activity = business.getActivity(work);
if (null == activity) {
throw new ExceptionEntityNotExist(work.getActivity());
}
WorkLogTree workLogTree = new WorkLogTree(
emc.listEqual(WorkLog.class, WorkLog.JOB_FIELDNAME, work.getJob()));
/* 是否可以召回 */
if (PropertyTools.getOrElse(activity, Manual.allowRetract_FIELDNAME, Boolean.class, false)) {
Node node = workLogTree.location(work);
if (null != node) {
Nodes ups = node.upTo(ActivityType.manual, ActivityType.agent, ActivityType.choice,
ActivityType.delay, ActivityType.embed, ActivityType.invoke, ActivityType.parallel,
ActivityType.split, ActivityType.publish);
for (Node o : ups) {
if (business.entityManagerContainer().countEqualAndEqual(TaskCompleted.class,
TaskCompleted.person_FIELDNAME, effectivePerson.getDistinguishedName(),
TaskCompleted.activityToken_FIELDNAME, o.getWorkLog().getFromActivityToken()) > 0) {
workLog = o.getWorkLog();
break;
}
}
}
}
existTaskIds = emc.idsEqual(Task.class, Task.job_FIELDNAME, work.getJob());
if (null == workLog) {
throw new ExceptionRetractNoWorkLog(work.getId());
}
if (emc.countEqualAndEqual(TaskCompleted.class, TaskCompleted.job_FIELDNAME, work.getJob(),
TaskCompleted.activityToken_FIELDNAME, work.getActivityToken()) > 0) {
throw new ExceptionRetractNoneTaskCompleted(work.getTitle(), work.getId());
}
taskCompleted = findLastTaskCompleted(business);
if (null == taskCompleted) {
throw new ExceptionNoTaskCompletedToRetract(workLog.getId(), effectivePerson.getDistinguishedName());
}
}
this.retract();
this.processing();
this.record();
result.setData(Wo.copier.copy(record));
return result;
}
private TaskCompleted findLastTaskCompleted(Business business) throws Exception {
List<TaskCompleted> list = business.entityManagerContainer().listEqualAndEqualAndEqual(TaskCompleted.class,
TaskCompleted.job_FIELDNAME, workLog.getJob(), TaskCompleted.activityToken_FIELDNAME,
workLog.getFromActivityToken(), TaskCompleted.person_FIELDNAME, effectivePerson.getDistinguishedName());
return list.stream().sorted(Comparator.comparing(TaskCompleted::getStartTime).reversed()).findFirst()
.orElse(null);
}
private void retract() throws Exception {
Req req = new Req();
req.setTaskCompleted(taskCompleted.getId());
req.setWorkLog(workLog.getId());
WrapBoolean resp = ThisApplication.context().applications()
.putQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", "v2", this.work.getId(), "retract"), req, work.getJob())
.getData(WrapBoolean.class);
if (BooleanUtils.isNotTrue(resp.getValue())) {
throw new ExceptionRetract(this.work.getId());
}
}
private void processing() throws Exception {
ProcessingAttributes req = new ProcessingAttributes();
req.setType(ProcessingAttributes.TYPE_RETRACT);
req.setSeries(series);
WoId resp = ThisApplication.context().applications()
.putQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", this.work.getId(), "processing"), req, work.getJob())
.getData(WoId.class);
if (StringUtils.isBlank(resp.getId())) {
throw new ExceptionRetract(this.work.getId());
}
}
private void record() throws Exception {
record = new Record(workLog);
record.setType(Record.TYPE_RETRACT);
record.getProperties().setElapsed(
Config.workTime().betweenMinutes(record.getProperties().getStartTime(), record.getRecordTime()));
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
work = emc.find(work.getId(), Work.class);
if (null != work) {
record.setArrivedActivity(work.getActivity());
record.setArrivedActivityType(work.getActivityType());
record.setArrivedActivityToken(work.getActivityToken());
record.setArrivedActivityName(work.getActivityName());
record.setArrivedActivityAlias(work.getActivityAlias());
record.setIdentity(taskCompleted.getIdentity());
record.setPerson(taskCompleted.getPerson());
record.setUnit(taskCompleted.getUnit());
final List<String> nextTaskIdentities = new ArrayList<>();
List<String> ids = emc.idsEqual(Task.class, Task.job_FIELDNAME, work.getJob());
ids = ListUtils.subtract(ids, existTaskIds);
List<Task> list = emc.fetch(ids, Task.class,
ListTools.toList(Task.identity_FIELDNAME, Task.job_FIELDNAME, Task.work_FIELDNAME,
Task.activity_FIELDNAME, Task.activityAlias_FIELDNAME, Task.activityName_FIELDNAME,
Task.activityToken_FIELDNAME, Task.activityType_FIELDNAME, Task.identity_FIELDNAME));
list.stream().collect(Collectors.groupingBy(Task::getActivity, Collectors.toList())).entrySet().stream()
.forEach(o -> {
Task task = o.getValue().get(0);
NextManual nextManual = new NextManual();
nextManual.setActivity(task.getActivity());
nextManual.setActivityAlias(task.getActivityAlias());
nextManual.setActivityName(task.getActivityName());
nextManual.setActivityToken(task.getActivityToken());
nextManual.setActivityType(task.getActivityType());
for (Task t : o.getValue()) {
nextManual.getTaskIdentityList().add(t.getIdentity());
nextTaskIdentities.add(t.getIdentity());
}
record.getProperties().getNextManualList().add(nextManual);
});
/* 去重 */
record.getProperties().setNextManualTaskIdentityList(ListTools.trim(nextTaskIdentities, true, true));
}
}
WoId resp = ThisApplication.context().applications()
.postQuery(effectivePerson.getDebugger(), x_processplatform_service_processing.class,
Applications.joinQueryUri("record", "job", work.getJob()), record, this.work.getJob())
.getData(WoId.class);
if (StringUtils.isBlank(resp.getId())) {
throw new ExceptionRetract(this.work.getId());
}
}
public static class Req extends V2RetractWi {
}
public static class Wo extends Record {
private static final long serialVersionUID = -5007785846454720742L;
static WrapCopier<Record, Wo> copier = WrapCopierFactory.wo(Record.class, Wo.class, null,
JpaObject.FieldsInvisible);
}
private static final Logger LOGGER = LoggerFactory.getLogger(V2Retract.class);
private WorkLog workLog;
private TaskCompleted taskCompleted;
private Work work;
private String series = StringTools.uniqueToken();
private Record rec;
private List<String> existTaskIds = new ArrayList<>();
private EffectivePerson effectivePerson;
ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
LOGGER.debug("execute:{}, id:{}.", effectivePerson::getDistinguishedName, () -> id);
ActionResult<Wo> result = new ActionResult<>();
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
this.effectivePerson = effectivePerson;
work = emc.find(id, Work.class);
if (null == work) {
throw new ExceptionEntityNotExist(id, Work.class);
}
Activity activity = business.getActivity(work);
if (null == activity) {
throw new ExceptionEntityNotExist(work.getActivity());
}
WorkLogTree workLogTree = new WorkLogTree(
emc.listEqual(WorkLog.class, WorkLog.JOB_FIELDNAME, work.getJob()));
// 是否可以召回
if (BooleanUtils
.isTrue(PropertyTools.getOrElse(activity, Manual.allowRetract_FIELDNAME, Boolean.class, false))) {
Node node = workLogTree.location(work);
if (null != node) {
Nodes ups = node.upTo(ActivityType.manual, ActivityType.agent, ActivityType.choice,
ActivityType.delay, ActivityType.embed, ActivityType.invoke, ActivityType.parallel,
ActivityType.split, ActivityType.publish);
for (Node o : ups) {
if (business.entityManagerContainer().countEqualAndEqual(TaskCompleted.class,
TaskCompleted.person_FIELDNAME, effectivePerson.getDistinguishedName(),
TaskCompleted.activityToken_FIELDNAME, o.getWorkLog().getFromActivityToken()) > 0) {
workLog = o.getWorkLog();
break;
}
}
}
}
existTaskIds = emc.idsEqual(Task.class, Task.job_FIELDNAME, work.getJob());
if (null == workLog) {
throw new ExceptionRetractNoWorkLog(work.getId());
}
if (emc.countEqualAndEqual(TaskCompleted.class, TaskCompleted.job_FIELDNAME, work.getJob(),
TaskCompleted.activityToken_FIELDNAME, work.getActivityToken()) > 0) {
throw new ExceptionRetractNoneTaskCompleted(work.getTitle(), work.getId());
}
taskCompleted = findLastTaskCompleted(business);
if (null == taskCompleted) {
throw new ExceptionNoTaskCompletedToRetract(workLog.getId(), effectivePerson.getDistinguishedName());
}
}
this.retract();
this.processing();
this.record();
result.setData(Wo.copier.copy(rec));
return result;
}
private TaskCompleted findLastTaskCompleted(Business business) throws Exception {
List<TaskCompleted> list = business.entityManagerContainer().listEqualAndEqualAndEqual(TaskCompleted.class,
TaskCompleted.job_FIELDNAME, workLog.getJob(), TaskCompleted.activityToken_FIELDNAME,
workLog.getFromActivityToken(), TaskCompleted.person_FIELDNAME, effectivePerson.getDistinguishedName());
return list.stream().sorted(Comparator.comparing(TaskCompleted::getStartTime).reversed()).findFirst()
.orElse(null);
}
private void retract() throws Exception {
Req req = new Req();
req.setTaskCompleted(taskCompleted.getId());
req.setWorkLog(workLog.getId());
WrapBoolean resp = ThisApplication.context().applications()
.putQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", "v2", this.work.getId(), "retract"), req, work.getJob())
.getData(WrapBoolean.class);
if (BooleanUtils.isNotTrue(resp.getValue())) {
throw new ExceptionRetract(this.work.getId());
}
}
private void processing() throws Exception {
ProcessingAttributes req = new ProcessingAttributes();
req.setType(ProcessingAttributes.TYPE_RETRACT);
req.setSeries(series);
WoId resp = ThisApplication.context().applications()
.putQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", this.work.getId(), "processing"), req, work.getJob())
.getData(WoId.class);
if (StringUtils.isBlank(resp.getId())) {
throw new ExceptionRetract(this.work.getId());
}
}
private void record() throws Exception {
rec = new Record(workLog);
rec.setType(Record.TYPE_RETRACT);
rec.getProperties().setElapsed(
Config.workTime().betweenMinutes(rec.getProperties().getStartTime(), rec.getRecordTime()));
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
work = emc.find(work.getId(), Work.class);
if (null != work) {
rec.setArrivedActivity(work.getActivity());
rec.setArrivedActivityType(work.getActivityType());
rec.setArrivedActivityToken(work.getActivityToken());
rec.setArrivedActivityName(work.getActivityName());
rec.setArrivedActivityAlias(work.getActivityAlias());
rec.setIdentity(taskCompleted.getIdentity());
rec.setPerson(taskCompleted.getPerson());
rec.setUnit(taskCompleted.getUnit());
final List<String> nextTaskIdentities = new ArrayList<>();
List<String> ids = emc.idsEqual(Task.class, Task.job_FIELDNAME, work.getJob());
ids = ListUtils.subtract(ids, existTaskIds);
List<Task> list = emc.fetch(ids, Task.class,
ListTools.toList(Task.identity_FIELDNAME, Task.job_FIELDNAME, Task.work_FIELDNAME,
Task.activity_FIELDNAME, Task.activityAlias_FIELDNAME, Task.activityName_FIELDNAME,
Task.activityToken_FIELDNAME, Task.activityType_FIELDNAME, Task.identity_FIELDNAME));
list.stream().collect(Collectors.groupingBy(Task::getActivity, Collectors.toList())).entrySet().stream()
.forEach(o -> {
Task task = o.getValue().get(0);
NextManual nextManual = new NextManual();
nextManual.setActivity(task.getActivity());
nextManual.setActivityAlias(task.getActivityAlias());
nextManual.setActivityName(task.getActivityName());
nextManual.setActivityToken(task.getActivityToken());
nextManual.setActivityType(task.getActivityType());
for (Task t : o.getValue()) {
nextManual.getTaskIdentityList().add(t.getIdentity());
nextTaskIdentities.add(t.getIdentity());
}
rec.getProperties().getNextManualList().add(nextManual);
});
/* 去重 */
rec.getProperties().setNextManualTaskIdentityList(ListTools.trim(nextTaskIdentities, true, true));
}
}
WoId resp = ThisApplication.context().applications()
.postQuery(effectivePerson.getDebugger(), x_processplatform_service_processing.class,
Applications.joinQueryUri("record", "job", work.getJob()), rec, this.work.getJob())
.getData(WoId.class);
if (StringUtils.isBlank(resp.getId())) {
throw new ExceptionRetract(this.work.getId());
}
}
public static class Req extends V2RetractWi {
}
public static class Wo extends Record {
private static final long serialVersionUID = -5007785846454720742L;
static WrapCopier<Record, Wo> copier = WrapCopierFactory.wo(Record.class, Wo.class, null,
JpaObject.FieldsInvisible);
}
}
......@@ -37,114 +37,117 @@ import com.x.processplatform.core.express.service.processing.jaxrs.work.V2Rollba
class V2Rollback extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(V2Rollback.class);
private Work work;
private WorkLog workLog;
private Wi wi;
private Record record;
private List<String> existTaskIds = new ArrayList<>();
private String series = StringTools.uniqueToken();
ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, JsonElement jsonElement) throws Exception {
wi = this.convertToWrapIn(jsonElement, Wi.class);
ActionResult<Wo> result = new ActionResult<>();
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
work = emc.find(id, Work.class);
if (null == work) {
throw new ExceptionEntityNotExist(id, Work.class);
}
if (!business.canManageApplicationOrProcess(effectivePerson, work.getApplication(), work.getProcess())) {
throw new ExceptionAccessDenied(effectivePerson);
}
workLog = emc.find(wi.getWorkLog(), WorkLog.class);
if (null == workLog) {
throw new ExceptionEntityNotExist(wi.getWorkLog(), WorkLog.class);
}
existTaskIds = emc.idsEqual(Task.class, Task.job_FIELDNAME, work.getJob());
}
this.rollback();
if (wi.getProcessing()) {
this.processing();
}
this.record();
Wo wo = Wo.copier.copy(record);
result.setData(wo);
return result;
}
private void processing() throws Exception {
ProcessingAttributes req = new ProcessingAttributes();
req.setType(ProcessingAttributes.TYPE_ROLLBACK);
req.setSeries(series);
WoId resp = ThisApplication.context().applications()
.putQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", this.work.getId(), "processing"), req, work.getJob())
.getData(WoId.class);
if (StringUtils.isBlank(resp.getId())) {
throw new ExceptionRetract(this.work.getId());
}
}
private void rollback() throws Exception {
V2RollbackWi req = new V2RollbackWi();
req.setProcessing(wi.getProcessing());
req.setWorkLog(workLog.getId());
req.setTaskCompletedIdentityList(wi.getTaskCompletedIdentityList());
WrapBoolean resp = ThisApplication.context().applications()
.putQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", "v2", work.getId(), "rollback"), req, work.getJob())
.getData(WrapBoolean.class);
if (!resp.getValue()) {
throw new ExceptionRollback(work.getId());
}
}
private void record() throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
final List<String> nextTaskIdentities = new ArrayList<>();
record = new Record(workLog);
record.setType(Record.TYPE_ROLLBACK);
record.setArrivedActivity(workLog.getFromActivity());
record.setArrivedActivityAlias(workLog.getFromActivityAlias());
record.setArrivedActivityName(workLog.getFromActivityName());
record.setArrivedActivityToken(workLog.getFromActivityToken());
record.setArrivedActivityType(workLog.getFromActivityType());
List<String> ids = emc.idsEqual(Task.class, Task.job_FIELDNAME, work.getJob());
ids = ListUtils.subtract(ids, existTaskIds);
List<Task> list = emc.fetch(ids, Task.class,
ListTools.toList(Task.identity_FIELDNAME, Task.job_FIELDNAME, Task.work_FIELDNAME,
Task.activity_FIELDNAME, Task.activityAlias_FIELDNAME, Task.activityName_FIELDNAME,
Task.activityToken_FIELDNAME, Task.activityType_FIELDNAME, Task.identity_FIELDNAME));
list.stream().collect(Collectors.groupingBy(Task::getActivity, Collectors.toList())).entrySet().stream()
.forEach(o -> {
Task task = o.getValue().get(0);
NextManual nextManual = new NextManual();
nextManual.setActivity(task.getActivity());
nextManual.setActivityAlias(task.getActivityAlias());
nextManual.setActivityName(task.getActivityName());
nextManual.setActivityToken(task.getActivityToken());
nextManual.setActivityType(task.getActivityType());
for (Task t : o.getValue()) {
nextManual.getTaskIdentityList().add(t.getIdentity());
nextTaskIdentities.add(t.getIdentity());
}
record.getProperties().getNextManualList().add(nextManual);
});
/* 去重 */
record.getProperties().setNextManualTaskIdentityList(ListTools.trim(nextTaskIdentities, true, true));
}
// 生成返回值但是不记录
private static final Logger LOGGER = LoggerFactory.getLogger(V2Rollback.class);
private Work work;
private WorkLog workLog;
private Wi wi;
private Record rec;
private List<String> existTaskIds = new ArrayList<>();
private String series = StringTools.uniqueToken();
ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, JsonElement jsonElement) throws Exception {
LOGGER.debug("execute:{}, id:{}.", effectivePerson::getDistinguishedName, () -> id);
wi = this.convertToWrapIn(jsonElement, Wi.class);
ActionResult<Wo> result = new ActionResult<>();
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
work = emc.find(id, Work.class);
if (null == work) {
throw new ExceptionEntityNotExist(id, Work.class);
}
if (!business.canManageApplicationOrProcess(effectivePerson, work.getApplication(), work.getProcess())) {
throw new ExceptionAccessDenied(effectivePerson);
}
workLog = emc.find(wi.getWorkLog(), WorkLog.class);
if (null == workLog) {
throw new ExceptionEntityNotExist(wi.getWorkLog(), WorkLog.class);
}
existTaskIds = emc.idsEqual(Task.class, Task.job_FIELDNAME, work.getJob());
}
this.rollback();
if (wi.getProcessing()) {
this.processing();
}
this.record();
Wo wo = Wo.copier.copy(rec);
result.setData(wo);
return result;
}
private void processing() throws Exception {
ProcessingAttributes req = new ProcessingAttributes();
req.setType(ProcessingAttributes.TYPE_ROLLBACK);
req.setSeries(series);
WoId resp = ThisApplication.context().applications()
.putQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", this.work.getId(), "processing"), req, work.getJob())
.getData(WoId.class);
if (StringUtils.isBlank(resp.getId())) {
throw new ExceptionRetract(this.work.getId());
}
}
private void rollback() throws Exception {
V2RollbackWi req = new V2RollbackWi();
req.setProcessing(wi.getProcessing());
req.setWorkLog(workLog.getId());
req.setTaskCompletedIdentityList(wi.getTaskCompletedIdentityList());
WrapBoolean resp = ThisApplication.context().applications()
.putQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", "v2", work.getId(), "rollback"), req, work.getJob())
.getData(WrapBoolean.class);
if (!resp.getValue()) {
throw new ExceptionRollback(work.getId());
}
}
private void record() throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
final List<String> nextTaskIdentities = new ArrayList<>();
rec = new Record(workLog);
rec.setType(Record.TYPE_ROLLBACK);
rec.setArrivedActivity(workLog.getFromActivity());
rec.setArrivedActivityAlias(workLog.getFromActivityAlias());
rec.setArrivedActivityName(workLog.getFromActivityName());
rec.setArrivedActivityToken(workLog.getFromActivityToken());
rec.setArrivedActivityType(workLog.getFromActivityType());
List<String> ids = emc.idsEqual(Task.class, Task.job_FIELDNAME, work.getJob());
ids = ListUtils.subtract(ids, existTaskIds);
List<Task> list = emc.fetch(ids, Task.class,
ListTools.toList(Task.identity_FIELDNAME, Task.job_FIELDNAME, Task.work_FIELDNAME,
Task.activity_FIELDNAME, Task.activityAlias_FIELDNAME, Task.activityName_FIELDNAME,
Task.activityToken_FIELDNAME, Task.activityType_FIELDNAME, Task.identity_FIELDNAME));
list.stream().collect(Collectors.groupingBy(Task::getActivity, Collectors.toList())).entrySet().stream()
.forEach(o -> {
Task task = o.getValue().get(0);
NextManual nextManual = new NextManual();
nextManual.setActivity(task.getActivity());
nextManual.setActivityAlias(task.getActivityAlias());
nextManual.setActivityName(task.getActivityName());
nextManual.setActivityToken(task.getActivityToken());
nextManual.setActivityType(task.getActivityType());
for (Task t : o.getValue()) {
nextManual.getTaskIdentityList().add(t.getIdentity());
nextTaskIdentities.add(t.getIdentity());
}
rec.getProperties().getNextManualList().add(nextManual);
});
/* 去重 */
rec.getProperties().setNextManualTaskIdentityList(ListTools.trim(nextTaskIdentities, true, true));
}
// 生成返回值但是不记录
// WoId resp = ThisApplication.context().applications()
// .postQuery(x_processplatform_service_processing.class,
// Applications.joinQueryUri("record", "job", work.getJob()), record, this.work.getJob())
......@@ -152,18 +155,18 @@ class V2Rollback extends BaseAction {
// if (StringUtils.isEmpty(resp.getId())) {
// throw new ExceptionRecord(this.work.getId());
// }
}
}
public static class Wi extends V2RollbackWi {
public static class Wi extends V2RollbackWi {
}
}
public static class Wo extends Record {
public static class Wo extends Record {
private static final long serialVersionUID = -8410749558739884101L;
private static final long serialVersionUID = -8410749558739884101L;
static WrapCopier<Record, Wo> copier = WrapCopierFactory.wo(Record.class, Wo.class, null,
JpaObject.FieldsInvisible);
}
static WrapCopier<Record, Wo> copier = WrapCopierFactory.wo(Record.class, Wo.class, null,
JpaObject.FieldsInvisible);
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册