Запуск кода из бизнес-процесса

Добрый день!

Необходимо реализовать следующую задачу.

В моем пакете создан Исходный код следующего содержания:

На странице редактирования записи имеется поле "Скрипт проверки":

Каким образом я могу с помощью бизнес-процесса запустить этот скрипт и выполнить его таким образом, чтобы у меня запустился код из первого скрина и получить значение true? (само содержание Скрипта проверки не обязательно должно быть именно таким)

Нравится

7 комментариев
Лучший ответ

Думаю, Вам нужно использовать Activator.CreateInstance()

Думаю, Вам нужно использовать Activator.CreateInstance()

Безуглый Кирилл Александрович,

А можно немного подробней...

Pavel Litvinovich, 

Вот пример кода:

using System;
using System.Reflection;

namespace ActivatorCreateInstance
{
    class Program
    {
        static void Main(string[] args) {
            var resultOne = Invoker.CreateAndInvoke("ActivatorCreateInstance.MyClass", null, "MethodOne", null);
            var resultTwo = Invoker.CreateAndInvoke("ActivatorCreateInstance.MyClass", null, "MethodTwo", null);
            Console.WriteLine(resultOne);
            Console.WriteLine(resultTwo);
            Console.ReadKey(true);
        }
    }

    public static class Invoker
    {
        public static object CreateAndInvoke(string typeName, object[] constructorArgs, string methodName, object[] methodArgs) {
            Type type = Type.GetType(typeName);
            object instance = Activator.CreateInstance(type, constructorArgs);

            MethodInfo method = type.GetMethod(methodName);
            return method.Invoke(instance, methodArgs);
        }
    }

    public class MyClass
    {
        public static bool MethodOne() {
            return true;
        }

        public static bool MethodTwo() {
            return false;
        }
    }
}
 

При помощи элемента БП "Читать данные" читаете поле "Скрипт проверки"

Безуглый Кирилл Александрович,

Спасибо!

Безуглый Кирилл Александрович,

Данный код необходимо вставить в элемент Задание-сценарий в БП?

данный код создает консольное приложение. Этот код как пример, чтобы вы могли разобраться, как работает Activator.CreateInstance. И да, за основу можно взять тело кода и вставить его элемент БП "Задание-сценарий"

Безуглый Кирилл Александрович,

Спасибо! Разобрался!

Показать все комментарии