📄 vsabase.cs
字号:
using System;
using System.Collections;
using System.IO;
using System.Reflection;
using System.Text;
using DotNetTools.PropertySet;
using DotNetTools.Util;
using log4net;
namespace DotNetTools.Workflow.Util.Vsa
{
/// <summary>
/// Summary description for VsaBase.
/// </summary>
/// <author>jjx</author>
public abstract class VsaBase
{
protected ScriptControl control;
protected static ILog log;
protected static String vbTemplate=@"
Option Strict off
Imports System
Imports DotNetTools.Workflow
Imports DotNetTools.Workflow.Spi
Imports System.Collections
Imports DotNetTools.PropertySet
Imports DotNetTools.Util
{imports}
public Module module1
function execute() as Object
{0}
end function
end Module
";
protected static String jsTemplate=@"
import System;
import DotNetTools.Workflow;
import DotNetTools.Workflow.Spi;
import System.Collections;
import DotNetTools.PropertySet;
import DotNetTools.Util;
{imports}
public class module1{
static function execute()
{
{0}
}
}
";
static VsaBase()
{
log=LogManager.GetLogger(typeof(VsaBase));
}
public VsaBase()
{
}
private String GetJSImports(VsaConfig config)
{
if (config==null) return String.Empty;
System.Text.StringBuilder sb=new StringBuilder();
foreach(String s in config.Imports)
{
sb.Append("import ");
sb.Append(s);
sb.Append(";");
sb.Append("\r\n");
}
return sb.ToString();
}
private String GetVBImports(VsaConfig config)
{
if (config==null) return String.Empty;
System.Text.StringBuilder sb=new StringBuilder();
foreach(String s in config.Imports)
{
sb.Append("Imports ");
sb.Append(s);
sb.Append("\r\n");
}
return sb.ToString();
}
protected void Prepared(IDictionary args, IDictionary objects)
{
VsaConfig config=(VsaConfig)System.Configuration.ConfigurationSettings.GetConfig(VsaHandler.SECTION_NAME);
String language = (String) args[AbstractWorkflow.VSA_LANGUAGE];
if (language==null)
language="Microsoft.VisualBasic.Vsa";
//String source = (String) args[AbstractWorkflow.VSA_SOURCE];
String script = (String) args[AbstractWorkflow.VSA_SCRIPT];
if (script==null || script.Length==0)
log.Info("script argument empty or null ");
control=new ScriptControl("DotNetTools.Workflow.Util.Vsa","myapp://myproject/"+Guid.NewGuid().ToString(),language);
if (config!=null)
{
foreach(String assembly in config.References)
control.AddReference(Assembly.LoadFile(Path.GetFullPath(assembly)));
}
//增加 System
control.AddReference(typeof(Console));
//增加 PropertySet
control.AddReference(typeof(IPropertySet));
// 增加workflow
control.AddReference(typeof(IFunctionProvider));
//增加dotnettools.core
control.AddReference(typeof(Collections));
foreach(String key in objects.Keys)
{
if (objects[key]!=null)
control.AddObject(key,objects[key]);
}
StringBuilder sb=new StringBuilder();
if (language.ToLower()=="microsoft.visualbasic.vsa")
{
sb.AppendFormat(vbTemplate.Replace("{imports}",GetVBImports(config)),script);
}
else
{
sb.Append(jsTemplate.Replace("{0}",script).Replace("{imports}",GetJSImports(config)));
}
if (log.IsDebugEnabled)
log.Debug(sb.ToString());
control.AddCode("module1",sb.ToString());
try
{
control.Run();
}
catch (ScriptCompileException e)
{
String message = "Could not load scripting engine for VSA language: " + language;
throw new WorkflowException(message, e);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -