mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 16:53:04 +08:00
refactor(context): simplify constructor and inputs encoding of running flow context
This commit is contained in:
@@ -69,7 +69,7 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
|
||||
|
||||
@Override
|
||||
protected void doExecute(@NotNull PartnerRunningFlowContext context) {
|
||||
String input = context.encodeInputsXml();
|
||||
String input = context.encodeInputsBlock().encodeToXmlString();
|
||||
Result<ExtractorResult> result = actionExtractor.execute(input)
|
||||
.onFailure(exp -> {
|
||||
ExceptionReporterHandler.INSTANCE.report(exp, ContextExceptionReporter.REPORTER_NAME);
|
||||
|
||||
@@ -129,7 +129,7 @@ public class CommunicationProducer extends AbstractAgentModule.Running<PartnerRu
|
||||
Element root = document.createElement("input");
|
||||
document.appendChild(root);
|
||||
|
||||
runningFlowContext.appendInputsXml(document, root);
|
||||
document.appendChild(document.importNode(runningFlowContext.encodeInputsBlock().encodeToXml(), true));
|
||||
appendTextElement(document, root, "source", runningFlowContext.getSource());
|
||||
for (Map.Entry<String, String> entry : runningFlowContext.getAdditionalUserInfo().entrySet()) {
|
||||
appendTextElement(document, root, sanitizeTagName(entry.getKey()), entry.getValue());
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
package work.slhaf.partner.runtime
|
||||
|
||||
import org.w3c.dom.Document
|
||||
import org.w3c.dom.Element
|
||||
import work.slhaf.partner.common.base.Block
|
||||
import work.slhaf.partner.framework.agent.interaction.flow.RunningFlowContext
|
||||
|
||||
class PartnerRunningFlowContext private constructor(
|
||||
override val source: String,
|
||||
inputs: List<InputEntry>,
|
||||
firstInputEpochMillis: Long,
|
||||
additionalUserInfo: Map<String, String> = emptyMap(),
|
||||
skippedModules: Set<String> = emptySet(),
|
||||
target: String = source
|
||||
) : RunningFlowContext(inputs, firstInputEpochMillis, additionalUserInfo, skippedModules, target) {
|
||||
firstInputEpochMillis: Long
|
||||
) : RunningFlowContext(inputs, firstInputEpochMillis) {
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -31,6 +31,7 @@ class PartnerRunningFlowContext private constructor(
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun fromUser(userId: String, input: String, receivedAtMillis: Long = System.currentTimeMillis()) =
|
||||
PartnerRunningFlowContext(
|
||||
SourceTag.buildUserSource(userId),
|
||||
@@ -39,6 +40,7 @@ class PartnerRunningFlowContext private constructor(
|
||||
)
|
||||
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun fromSelf(input: String, receivedAtMillis: Long = System.currentTimeMillis()) =
|
||||
PartnerRunningFlowContext(
|
||||
SourceTag.buildAgentSource(),
|
||||
@@ -50,20 +52,21 @@ class PartnerRunningFlowContext private constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun copyWith(
|
||||
inputs: List<InputEntry>,
|
||||
firstInputEpochMillis: Long,
|
||||
additionalUserInfo: Map<String, String>,
|
||||
skippedModules: Set<String>,
|
||||
target: String
|
||||
): RunningFlowContext {
|
||||
override fun recreate(inputs: List<InputEntry>): RunningFlowContext {
|
||||
return PartnerRunningFlowContext(
|
||||
source = source,
|
||||
inputs = inputs,
|
||||
firstInputEpochMillis = firstInputEpochMillis,
|
||||
additionalUserInfo = additionalUserInfo,
|
||||
skippedModules = skippedModules,
|
||||
target = target
|
||||
firstInputEpochMillis = System.currentTimeMillis()
|
||||
)
|
||||
}
|
||||
|
||||
fun encodeInputsBlock(): Block = object : Block("inputs") {
|
||||
override fun fillXml(document: Document, root: Element) {
|
||||
appendRepeatedElements(document, root, "input", inputs) {
|
||||
this.setAttribute("interval-to-first", it.offsetMillis.toString())
|
||||
this.textContent = it.content
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user