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)); }
/// <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)); }