コード例 #1
0
        private object GetValue(ELContext context, IVariableScope variableScope)
        {
            string expstr = ExpressionString;

            if ((VariableScopeElResolver.EXECUTION_KEY.Equals(expstr) && variableScope is IExecutionEntity) || (VariableScopeElResolver.TASK_KEY.Equals(expstr) && variableScope is ITaskEntity))
            {
                context.IsPropertyResolved = true;
                return(variableScope);
            }
            else if (VariableScopeElResolver.EXECUTION_KEY.Equals(expstr) && variableScope is ITaskEntity entity)
            {
                context.IsPropertyResolved = true;
                return(entity.Execution);
            }
            else if (VariableScopeElResolver.LOGGED_IN_USER_KEY.Equals(expstr))
            {
                context.IsPropertyResolved = true;
                return(Authentication.AuthenticatedUser.Id);
            }

            IScriptingEnginesProvider scriptingEnginesProvider = ProcessEngineServiceProvider.Resolve <IScriptingEnginesProvider>();
            IScriptingEngines         scriptingEngines         = scriptingEnginesProvider.Create(language);

            var execution = variableScope is ITaskEntity te ? te.Execution : variableScope as IExecutionEntity;

            return(scriptingEngines.Evaluate(expstr, execution));
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sequenceFlowId"></param>
        /// <param name="execution"></param>
        /// <returns></returns>
        public virtual bool Evaluate(string sequenceFlowId, IExecutionEntity execution)
        {
            IScriptingEnginesProvider scriptingEnginesProvider = ProcessEngineServiceProvider.Resolve <IScriptingEnginesProvider>();
            IScriptingEngines         scriptingEngines         = scriptingEnginesProvider.Create(language);

            object result = scriptingEngines.Evaluate(expression, execution);

            if (result is null)
            {
                throw new ActivitiException("condition script returns null: " + expression);
            }
            if (!(result is bool))
            {
                throw new ActivitiException("condition script returns non-Boolean: " + result + " (" + result.GetType().FullName + ")");
            }
            return(Convert.ToBoolean(result));
        }