提交 e708e819 编写于 作者: O o2null

移动'出发了停留事件'触发位置

上级 48f1b4f7
......@@ -232,7 +232,7 @@ public abstract class AbstractProcessor extends AbstractBaseProcessor {
}
}
aeiObjects.commit();
this.executeCommitted(aeiObjects);
this.executeCommitted(aeiObjects, works);
/** 发送在队列中的待办消息, 待办消息必须在数据提交后发送,否则会不到待办 */
if (ListTools.isNotEmpty(works)) {
/** 已经有返回的work将要离开当前环节,执行AfterExecuteScript中的代码 */
......@@ -399,7 +399,7 @@ public abstract class AbstractProcessor extends AbstractBaseProcessor {
protected abstract List<Work> executeProcessing(AeiObjects aeiObjects) throws Exception;
protected abstract void executeCommitted(AeiObjects aeiObjects) throws Exception;
protected abstract void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception;
protected abstract List<Route> inquireProcessing(AeiObjects aeiObjects) throws Exception;
......
......@@ -58,9 +58,9 @@ public abstract class AbstractAgentProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Agent agent = (Agent) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, agent);
this.executingCommitted(aeiObjects, agent, works);
}
@Override
......@@ -81,7 +81,7 @@ public abstract class AbstractAgentProcessor extends AbstractProcessor {
protected abstract List<Work> executing(AeiObjects aeiObjects, Agent agent) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Agent agent) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Agent agent, List<Work> works) throws Exception;
protected abstract List<Route> inquiring(AeiObjects aeiObjects, Agent agent) throws Exception;
......
......@@ -51,7 +51,7 @@ public class AgentProcessor extends AbstractAgentProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Agent agent) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, Agent agent, List<Work> works) throws Exception {
}
......
......@@ -12,7 +12,7 @@ import com.x.processplatform.service.processing.processor.AbstractProcessor;
import com.x.processplatform.service.processing.processor.AeiObjects;
public abstract class AbstractBeginProcessor extends AbstractProcessor {
private static Logger logger = LoggerFactory.getLogger(AbstractBeginProcessor.class);
protected AbstractBeginProcessor(EntityManagerContainer entityManagerContainer) throws Exception {
......@@ -53,9 +53,9 @@ public abstract class AbstractBeginProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Begin begin = (Begin) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, begin);
this.executingCommitted(aeiObjects, begin, works);
}
@Override
......@@ -66,7 +66,7 @@ public abstract class AbstractBeginProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, Begin begin) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Begin begin) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Begin begin, List<Work> works) throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, Begin begin) throws Exception;
}
......@@ -67,7 +67,7 @@ public class BeginProcessor extends AbstractBeginProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Begin begin) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, Begin begin, List<Work> works) throws Exception {
if (StringUtils.isNotEmpty(aeiObjects.getProcess().getAfterBeginScript())
|| StringUtils.isNotEmpty(aeiObjects.getProcess().getAfterBeginScriptText())) {
CompiledScript compiledScript = aeiObjects.business().element().getCompiledScript(
......
......@@ -12,7 +12,7 @@ import com.x.processplatform.service.processing.processor.AbstractProcessor;
import com.x.processplatform.service.processing.processor.AeiObjects;
public abstract class AbstractCancelProcessor extends AbstractProcessor {
private static Logger logger = LoggerFactory.getLogger(AbstractCancelProcessor.class);
protected AbstractCancelProcessor(EntityManagerContainer entityManagerContainer) throws Exception {
......@@ -50,9 +50,9 @@ public abstract class AbstractCancelProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Cancel cancel = (Cancel) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, cancel);
this.executingCommitted(aeiObjects, cancel, works);
}
@Override
......@@ -63,7 +63,7 @@ public abstract class AbstractCancelProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, Cancel cancel) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Cancel cancel) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Cancel cancel, List<Work> works) throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, Cancel cancel) throws Exception;
}
......@@ -5,7 +5,6 @@ import java.util.List;
import java.util.Objects;
import java.util.function.Predicate;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import com.x.base.core.container.EntityManagerContainer;
......@@ -71,7 +70,7 @@ public class CancelProcessor extends AbstractCancelProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Cancel cancel) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, Cancel cancel, List<Work> works) throws Exception {
// 删除后再次检查,如果存在多个副本,且都已经在End状态,那么试图推动一个
if (!aeiObjects.getWorks().isEmpty()) {
Predicate<Work> p = o -> Objects.equals(ActivityType.end, o.getActivityType());
......
......@@ -46,9 +46,9 @@ public abstract class AbstractChoiceProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Choice choice = (Choice) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, choice);
this.executingCommitted(aeiObjects, choice, works);
}
@Override
......@@ -59,7 +59,7 @@ public abstract class AbstractChoiceProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, Choice choice) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Choice choice) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Choice choice, List<Work> works) throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, Choice choice) throws Exception;
}
......@@ -2,12 +2,10 @@ package com.x.processplatform.service.processing.processor.choice;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import javax.script.ScriptContext;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.project.logger.Logger;
......@@ -51,7 +49,7 @@ public class ChoiceProcessor extends AbstractChoiceProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Choice choice) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, Choice choice, List<Work> works) throws Exception {
// nothing
}
......
......@@ -46,9 +46,9 @@ public abstract class AbstractDelayProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Delay delay = (Delay) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, delay);
this.executingCommitted(aeiObjects, delay, works);
}
@Override
......@@ -59,7 +59,7 @@ public abstract class AbstractDelayProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, Delay delay) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Delay delay) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Delay delay, List<Work> works) throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, Delay delay) throws Exception;
}
......@@ -128,7 +128,7 @@ public class DelayProcessor extends AbstractDelayProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Delay delay) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, Delay delay, List<Work> works) throws Exception {
// nothing
}
......
......@@ -46,9 +46,9 @@ public abstract class AbstractEmbedProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Embed embed = (Embed) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, embed);
this.executingCommitted(aeiObjects, embed, works);
}
@Override
......@@ -59,7 +59,7 @@ public abstract class AbstractEmbedProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, Embed embed) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Embed embed) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Embed embed, List<Work> works) throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, Embed embed) throws Exception;
}
......@@ -101,7 +101,7 @@ public class EmbedProcessor extends AbstractEmbedProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Embed embed) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, Embed embed, List<Work> works) throws Exception {
}
public static class WoWorkId extends WoId {
......
......@@ -52,9 +52,9 @@ public abstract class AbstractEndProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
End end = (End) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, end);
this.executingCommitted(aeiObjects, end, works);
}
@Override
......@@ -65,7 +65,7 @@ public abstract class AbstractEndProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, End end) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, End end) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, End end, List<Work> works) throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, End end) throws Exception;
......
......@@ -154,7 +154,7 @@ public class EndProcessor extends AbstractEndProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, End end) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, End end, List<Work> works) throws Exception {
if (StringUtils.isNotEmpty(aeiObjects.getProcess().getAfterEndScript())
|| StringUtils.isNotEmpty(aeiObjects.getProcess().getAfterEndScriptText())) {
aeiObjects.business().element()
......
......@@ -46,9 +46,9 @@ public abstract class AbstractInvokeProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Invoke invoke = (Invoke) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, invoke);
this.executingCommitted(aeiObjects, invoke, works);
}
@Override
......@@ -59,7 +59,7 @@ public abstract class AbstractInvokeProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, Invoke invoke) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Invoke invoke) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Invoke invoke, List<Work> works) throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, Invoke invoke) throws Exception;
}
......@@ -460,7 +460,7 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Invoke invoke) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, Invoke invoke, List<Work> works) throws Exception {
// nothing
}
......
......@@ -75,9 +75,9 @@ public abstract class AbstractManualProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Manual manual = (Manual) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, manual);
this.executingCommitted(aeiObjects, manual, works);
}
@Override
......@@ -88,11 +88,11 @@ public abstract class AbstractManualProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, Manual manual) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Manual manual) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Manual manual, List<Work> works) throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, Manual manual) throws Exception;
private boolean hasManualStayScript(Activity activity) throws Exception {
protected boolean hasManualStayScript(Activity activity) throws Exception {
return StringUtils.isNotEmpty(activity.get(Manual.manualStayScript_FIELDNAME, String.class))
|| StringUtils.isNotEmpty(activity.get(Manual.manualStayScriptText_FIELDNAME, String.class));
}
......
......@@ -13,6 +13,7 @@ import java.util.Optional;
import java.util.stream.Collectors;
import javax.script.Bindings;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import org.apache.commons.collections4.ListUtils;
......@@ -320,8 +321,15 @@ public class ManualProcessor extends AbstractManualProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Manual manual) throws Exception {
// nothing
protected void executingCommitted(AeiObjects aeiObjects, Manual manual, List<Work> works) throws Exception {
// Manual Work 还没有处理完 发生了停留,出发了停留事件
if ((ListTools.isEmpty(works)) && this.hasManualStayScript(manual)) {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = null;
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getActivity(), Business.EVENT_MANUALSTAY);
cs.eval(scriptContext);
}
}
@Override
......
......@@ -46,9 +46,9 @@ public abstract class AbstractMergeProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Merge merge = (Merge) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, merge);
this.executingCommitted(aeiObjects, merge, works);
}
@Override
......@@ -59,7 +59,7 @@ public abstract class AbstractMergeProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, Merge merge) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Merge merge) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Merge merge, List<Work> works) throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, Merge merge) throws Exception;
}
......@@ -227,7 +227,8 @@ public class MergeProcessor extends AbstractMergeProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Merge merge) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, Merge merge, List<Work> works) throws Exception {
// nothing
}
@Override
......@@ -239,25 +240,8 @@ public class MergeProcessor extends AbstractMergeProcessor {
return results;
}
@Override
protected void arriveCommitted(AeiObjects aeiObjects) throws Exception {
Merge merge = (Merge) aeiObjects.getActivity();
this.arrivingCommitted(aeiObjects, merge);
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
Merge merge = (Merge) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, merge);
}
@Override
protected void inquireCommitted(AeiObjects aeiObjects) throws Exception {
Merge merge = (Merge) aeiObjects.getActivity();
this.inquiringCommitted(aeiObjects, merge);
}
@Override
protected void inquiringCommitted(AeiObjects aeiObjects, Merge merge) throws Exception {
// nothing
}
}
\ No newline at end of file
......@@ -46,9 +46,9 @@ public abstract class AbstractMessageProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Message message = (Message) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, message);
this.executingCommitted(aeiObjects, message, works);
}
@Override
......@@ -59,7 +59,8 @@ public abstract class AbstractMessageProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, Message message) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Message message) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Message message, List<Work> works)
throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, Message message) throws Exception;
}
......@@ -46,7 +46,7 @@ public class MessageProcessor extends AbstractMessageProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Message message) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, Message message, List<Work> works) throws Exception {
// nothing
}
......
......@@ -47,9 +47,9 @@ public abstract class AbstractParallelProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Parallel parallel = (Parallel) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, parallel);
this.executingCommitted(aeiObjects, parallel, works);
}
@Override
......@@ -60,7 +60,8 @@ public abstract class AbstractParallelProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, Parallel parallel) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Parallel parallel) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Parallel parallel, List<Work> works)
throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, Parallel parallel) throws Exception;
}
......@@ -2,7 +2,6 @@ package com.x.processplatform.service.processing.processor.parallel;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import javax.script.ScriptContext;
......@@ -105,7 +104,7 @@ public class ParallelProcessor extends AbstractParallelProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Parallel parallel) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, Parallel parallel, List<Work> works) throws Exception {
// nothing
}
......
......@@ -47,9 +47,9 @@ public abstract class AbstractServiceProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Service service = (Service) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, service);
this.executingCommitted(aeiObjects, service, works);
}
@Override
......@@ -60,7 +60,8 @@ public abstract class AbstractServiceProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, Service service) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Service service) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Service service, List<Work> works)
throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, Service service) throws Exception;
}
......@@ -7,6 +7,8 @@ import java.util.List;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import org.apache.commons.lang3.StringUtils;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
......@@ -18,8 +20,6 @@ import com.x.processplatform.core.entity.log.Signal;
import com.x.processplatform.service.processing.Business;
import com.x.processplatform.service.processing.processor.AeiObjects;
import org.apache.commons.lang3.StringUtils;
public class ServiceProcessor extends AbstractServiceProcessor {
private static Logger logger = LoggerFactory.getLogger(ServiceProcessor.class);
......@@ -68,7 +68,7 @@ public class ServiceProcessor extends AbstractServiceProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Service service) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, Service service, List<Work> works) throws Exception {
// Do nothing
}
......
......@@ -46,9 +46,9 @@ public abstract class AbstractSplitProcessor extends AbstractProcessor {
}
@Override
protected void executeCommitted(AeiObjects aeiObjects) throws Exception {
protected void executeCommitted(AeiObjects aeiObjects, List<Work> works) throws Exception {
Split split = (Split) aeiObjects.getActivity();
this.executingCommitted(aeiObjects, split);
this.executingCommitted(aeiObjects, split, works);
}
@Override
......@@ -59,7 +59,7 @@ public abstract class AbstractSplitProcessor extends AbstractProcessor {
protected abstract void arrivingCommitted(AeiObjects aeiObjects, Split split) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Split split) throws Exception;
protected abstract void executingCommitted(AeiObjects aeiObjects, Split split, List<Work> works) throws Exception;
protected abstract void inquiringCommitted(AeiObjects aeiObjects, Split split) throws Exception;
}
......@@ -7,7 +7,6 @@ import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.project.config.Config;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
......@@ -93,7 +92,7 @@ public class SplitProcessor extends AbstractSplitProcessor {
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Split split) throws Exception {
protected void executingCommitted(AeiObjects aeiObjects, Split split, List<Work> works) throws Exception {
// nothing
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册