33 for (
auto it = waitingTokens.begin(); it != waitingTokens.end(); ) {
34 auto& [token_ptr] = *it;
35 auto token = token_ptr.lock();
40 auto intersect = [](
const std::vector<const BPMNOS::Model::Attribute*>& first,
const std::set<const BPMNOS::Model::Attribute*>& second) ->
bool {
41 for (
auto lhs : first ) {
42 if ( second.contains(lhs) ) {
49 if ( intersect(dataUpdate->
attributes,extensionElements->dataDependencies) ) {
51 if ( extensionElements->conditionsSatisfied(token->status,*token->data,token->globals) ) {
53 engine->
commands.emplace_back(std::bind(&Token::advanceToCompleted,token.get()), token.get());
54 it = waitingTokens.erase(it);