38 for (
auto it = waitingTokens.begin(); it != waitingTokens.end(); ) {
39 auto& [token_ptr] = *it;
40 auto token = token_ptr.lock();
45 auto intersect = [](
const std::vector<const BPMNOS::Model::Attribute*>& first,
const std::set<const BPMNOS::Model::Attribute*>& second) ->
bool {
46 for (
auto lhs : first ) {
47 if ( second.contains(lhs) ) {
54 if ( intersect(dataUpdate->
attributes,extensionElements->dataDependencies) ) {
56 if ( extensionElements->conditionsSatisfied(token->status,*token->data,token->globals) ) {
58 engine->
commands.emplace_back(std::bind(&Token::advanceToCompleted,token.get()), token.get());
59 it = waitingTokens.erase(it);