diff --git a/Library/NodeAttribute.cs b/Library/NodeAttribute.cs
index 8101672..68da2fd 100644
--- a/Library/NodeAttribute.cs
+++ b/Library/NodeAttribute.cs
@@ -58,7 +58,7 @@ namespace Serein.Library
/// 表示该类中存在节点信息
///
[AttributeUsage(AttributeTargets.Class)]
- public class DynamicFlowAttribute : Attribute
+ public sealed class DynamicFlowAttribute : Attribute
{
public DynamicFlowAttribute(string name = "",bool scan = true)
{
@@ -82,7 +82,7 @@ namespace Serein.Library
/// 如果是Task类型的返回值,将会自动进行等待
///
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
- public class NodeActionAttribute : Attribute
+ public sealed class NodeActionAttribute : Attribute
{
public NodeActionAttribute(NodeType methodDynamicType,
string methodTips = "",
@@ -113,17 +113,25 @@ namespace Serein.Library
}
+ ///
+ /// 节点参数设置
+ ///
+ [AttributeUsage(AttributeTargets.Parameter)]
+ public sealed class NodeParamAttribute : Attribute
+ {
+ ///
+ /// 显示名称
+ ///
+ public string Name;
- //[AttributeUsage(AttributeTargets.Field)]
- //public class BindTypeAttribute : Attribute
- //{
- // public Type Type { get; }
+ ///
+ /// 是否显式设置(此设置对于有入参默认值的参数无效)
+ ///
+ public bool IsExplicit;
+
+
+ }
- // public BindTypeAttribute(Type type)
- // {
- // Type = type;
- // }
- //}
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
public class BindValueAttribute : Attribute
@@ -136,6 +144,8 @@ namespace Serein.Library
}
}
+
+
///
/// 枚举值转换器,要求枚举项标记的BindValueAttribute特性,与搭配的参数类型一致,否则参数不会传入
///
diff --git a/Library/SereinBaseFunction.cs b/Library/SereinBaseFunction.cs
index 3237df8..c0d8961 100644
--- a/Library/SereinBaseFunction.cs
+++ b/Library/SereinBaseFunction.cs
@@ -17,51 +17,11 @@ namespace Serein.Library
[DynamicFlow(Name ="[基础功能]")]
public class SereinBaseFunction
{
- //[NodeAction(NodeType.Action,"条件节点")]
- //private bool SereinConditionNode(IDynamicContext context,
- // object targetObject,
- // string exp = "ISPASS")
- //{
- // var isPass = SereinConditionParser.To(targetObject, exp);
- // context.NextOrientation = isPass ? ConnectionInvokeType.IsSucceed : ConnectionInvokeType.IsFail;
- // return isPass;
- //}
-
- //[NodeAction(NodeType.Action, "表达式节点")]
- //private object SereinExpNode(IDynamicContext context,
- // object targetObject,
- // string exp)
- //{
-
- // exp = "@" + exp;
- // var newData = SerinExpressionEvaluator.Evaluate(exp, targetObject, out bool isChange);
- // object result;
- // if (isChange || exp.StartsWith("@GET",System.StringComparison.OrdinalIgnoreCase))
- // {
- // result = newData;
- // }
- // else
- // {
- // result = targetObject;
- // }
- // context.NextOrientation = ConnectionInvokeType.IsSucceed;
- // return result;
- //}
-
-
-
+
[NodeAction(NodeType.Action, "键值对组装")]
- private Dictionary SereinKvDataCollectionNode(/*NodeModelBase nodeModel, */
- string argName,
+ private Dictionary SereinKvDataCollectionNode(string argName,
params object[] value)
{
- //var paramsArgIndex = nodeModel.MethodDetails.ParamsArgIndex;
- //var pds = nodeModel.MethodDetails.ParameterDetailss;
- //var length = pds.Length - paramsArgIndex;
- //for(int i = paramsArgIndex; i < pds.Length; i++)
- //{
- // var pd = pds[i];
- //}
var names = argName.Split(';');
var count = Math.Min(value.Length, names.Length);
@@ -90,7 +50,9 @@ namespace Serein.Library
}
[NodeAction(NodeType.Action, "逻辑分支")]
- private object SereinLogicalBranch(bool @bool, object t_value,object f_value)
+ private object SereinLogicalBranch([NodeParam(IsExplicit = false)]bool @bool,
+ object t_value,
+ object f_value)
{
return @bool ? t_value : f_value;
}
@@ -141,7 +103,7 @@ namespace Serein.Library
[NodeAction(NodeType.Action, "设置/更新全局数据")]
- private object SereinAddOrUpdateFlowGlobalData(string name,object data)
+ private object SereinAddOrUpdateFlowGlobalData(string name, object data)
{
SereinEnv.AddOrUpdateFlowGlobalData(name, data);
return data;
diff --git a/NodeFlow/Tool/NodeMethodDetailsHelper.cs b/NodeFlow/Tool/NodeMethodDetailsHelper.cs
index fffa778..7fbfe1f 100644
--- a/NodeFlow/Tool/NodeMethodDetailsHelper.cs
+++ b/NodeFlow/Tool/NodeMethodDetailsHelper.cs
@@ -267,7 +267,7 @@ public static class NodeMethodDetailsHelper
#endregion
}).ToArray();
- foreach(var pd in tempParams)
+ /* foreach(var pd in tempParams)
{
var argType = pd.DataType;
// 运行环境
@@ -285,9 +285,8 @@ public static class NodeMethodDetailsHelper
{
continue;
}
- pd.IsExplicitData = true;
- }
+ }*/
return tempParams;
}
@@ -311,7 +310,26 @@ public static class NodeMethodDetailsHelper
{
dataType = parameterInfo.ParameterType;
}
- var description = parameterInfo.GetCustomAttribute()?.Description ?? "";
+ isExplicitData = true;
+ string description = string.Empty; // 入参描述
+ var nodeParmsAttribute = parameterInfo.GetCustomAttribute();
+ if(nodeParmsAttribute is not null)
+ {
+ if (!parameterInfo.HasDefaultValue)
+ {
+ isExplicitData = nodeParmsAttribute.IsExplicit; // 设置是否是显式参数
+ }
+ if (string.IsNullOrEmpty(nodeParmsAttribute.Name))
+ {
+ description = nodeParmsAttribute.Name; // 设置显示的名称
+ }
+
+ }
+ else
+ {
+ description = parameterInfo.GetCustomAttribute()?.Description ?? string.Empty; // 判断是否存在注释特性
+ }
+
var inputType = GetInputType(explicitParemType);
var items = GetExplicitItems(explicitParemType, inputType);
diff --git a/Workbench/Services/WorkbenchEventService.cs b/Workbench/Services/WorkbenchEventService.cs
index 7e91d60..33bbd94 100644
--- a/Workbench/Services/WorkbenchEventService.cs
+++ b/Workbench/Services/WorkbenchEventService.cs
@@ -68,9 +68,9 @@ namespace Serein.Workbench.Services
///
///
public WorkbenchEventService(IFlowEnvironment flowEnvironment,
- IFlowEEForwardingService flowEEForwardingService,
- IKeyEventService keyEventService,
- FlowNodeService flowNodeService)
+ IFlowEEForwardingService flowEEForwardingService,
+ IKeyEventService keyEventService,
+ FlowNodeService flowNodeService)
{
this.flowEnvironment = flowEnvironment;
this.flowEEForwardingService = flowEEForwardingService;
@@ -81,11 +81,17 @@ namespace Serein.Workbench.Services
private void InitEvents()
{
+ flowEEForwardingService.OnProjectLoaded += FlowEEForwardingService_OnProjectLoaded;
flowEEForwardingService.OnProjectSaving += SaveProjectToLocalFile;
flowEEForwardingService.OnEnvOut += FlowEEForwardingService_OnEnvOut;
keyEventService.OnKeyDown += KeyEventService_OnKeyDown; ;
}
+ private void FlowEEForwardingService_OnProjectLoaded(ProjectLoadedEventArgs eventArgs)
+ {
+
+ }
+
private void KeyEventService_OnKeyDown(System.Windows.Input.Key key)
{