Skip to main content
deleted 30 characters in body
Source Link
Pierre.Vriens
  • 36k
  • 40
  • 50
  • 182

Note that I also added the Rules Condition Entity has field to make that field available for further processing in this Rules Component. That's also what is mentioned in the Rules UI when you're adding a "data comparison" condition: somewhere it says "The data selector helps you drill down into the data available to Rules. To make entity fields appear in the data selector, you may have to use the condition 'entity has field' (or 'content is of type')". For a video tutorial that illustrates the importance of this Entity has field condition, refer to Data types and data selectionData types and data selection, especially what is shown between about 13:30 and 17:30 in that video.

If you're not familiar with how to do so, have a look at the video about Using Rules components with VBOUsing Rules components with VBO". If you want even more, then also watch the subsequent "Using Rules components with more than one parameterUsing Rules components with more than one parameter" video.

Attention: to process 100.000 nodes at once is quite a challenge (memory requirements, etc). Therefor you might want to also watch the video about "More details about VBO settingsMore details about VBO settings" ... Before you are tempted to use VBO for processing them all at once ...

If you're not familiar (enough/yet) with Rules, checkout the 32 (!!!) great, and free, video tutorials Learn the Rules framework, organized in 7 chaptersLearn the Rules framework.

Note that I also added the Rules Condition Entity has field to make that field available for further processing in this Rules Component. That's also what is mentioned in the Rules UI when you're adding a "data comparison" condition: somewhere it says "The data selector helps you drill down into the data available to Rules. To make entity fields appear in the data selector, you may have to use the condition 'entity has field' (or 'content is of type')". For a video tutorial that illustrates the importance of this Entity has field condition, refer to Data types and data selection, especially what is shown between about 13:30 and 17:30 in that video.

If you're not familiar with how to do so, have a look at the video about Using Rules components with VBO". If you want even more, then also watch the subsequent "Using Rules components with more than one parameter" video.

Attention: to process 100.000 nodes at once is quite a challenge (memory requirements, etc). Therefor you might want to also watch the video about "More details about VBO settings" ... Before you are tempted to use VBO for processing them all at once ...

If you're not familiar (enough/yet) with Rules, checkout the 32 (!!!) great, and free, video tutorials Learn the Rules framework, organized in 7 chapters.

Note that I also added the Rules Condition Entity has field to make that field available for further processing in this Rules Component. That's also what is mentioned in the Rules UI when you're adding a "data comparison" condition: somewhere it says "The data selector helps you drill down into the data available to Rules. To make entity fields appear in the data selector, you may have to use the condition 'entity has field' (or 'content is of type')". For a video tutorial that illustrates the importance of this Entity has field condition, refer to Data types and data selection, especially what is shown between about 13:30 and 17:30 in that video.

If you're not familiar with how to do so, have a look at the video about Using Rules components with VBO". If you want even more, then also watch the subsequent "Using Rules components with more than one parameter" video.

Attention: to process 100.000 nodes at once is quite a challenge (memory requirements, etc). Therefor you might want to also watch the video about "More details about VBO settings" ... Before you are tempted to use VBO for processing them all at once ...

If you're not familiar (enough/yet) with Rules, checkout the 32 (!!!) great, and free, video tutorials Learn the Rules framework.

Add link to video tutorials
Source Link
Pierre.Vriens
  • 36k
  • 40
  • 50
  • 182
  • This Rules Component will be used in the subsequent step.

    This Rules Component will be used in "Step 2" below.

  • In my case I have a selection list field with machine name field_optionlist.

    In my case I have a selection list field with machine name field_optionlist.

  • This field actually has 3 possible values, like so:

    This field actually has 3 possible values, like so:

    • A (=Advanced).
    • B (=Basic).
    • C (=Custom).
  • As a sample, I decided to use a Rules Condition "The selected value must NOT be Advanced" (assume that's the value I do not want to reset).

    As an example, I decided to use a Rules Condition "The selected value must NOT be Advanced" (assume that's the value I do not want to reset).

  • For any other value of that field I want the Rules Action to change the value of that field to Basic.

    For any other value of that field I want the Rules Action to change the value of that field to Basic.

If you want, just grab (copy) the exported rule above, change all occurences of the machine name of that field to match the machine name of your field (and adapt the possible values like 'A' and 'B' in my example, and then). After doing so you can simply import this Rules Component in your own environment.

After you didimported this Rules Component, you can navigate to admin/config/workflow/rules/components in your own site, and then. Then use the hyperlink "execute" to qa-test it in your own site. After you use that link, use the button that says Switch to direct input mode. Then you'll be able to enter some Node identifier and hit the Execute modebutton. Depending on the node id you selected (ifi.e. if it has that field, and if the Rules Condition is satisfied), your node will be updated accordingly.

After you're confident your ruleRules Component works perfect for all variations of your nodes, move on to the next step 2 below.

This step is pretty easy ... Just create an appropriate view of all your about 100.000 nodes to be processed, and transform it into a Views Bulk Operations view. The clue to what you want VBO to do as an operation is ... you guessed it: Execute the Rules Component from Step 21.

Attention: to process 100.000 nodes at once is quite a challenge (memory requirements, etc). Therefor you might want to also watch the video about "More details about VBO settings" ... Before you are tempted to use VBO for processing them all at once ...

Video tutorials

If you're not familiar (enough/yet) with Rules, checkout the 32 (!!!) great, and free, video tutorials Learn the Rules framework, organized in 7 chapters.

  • This Rules Component will be used in the subsequent step.
  • In my case I have a selection list field with machine name field_optionlist.
  • This field actually has 3 possible values, like so:
    • A (=Advanced).
    • B (=Basic).
    • C (=Custom).
  • As a sample, I decided to use a Rules Condition "The selected value must NOT be Advanced" (assume that's the value I do not want to reset).
  • For any other value of that field I want the Rules Action to change the value of that field to Basic.

If you want, just grab (copy) the exported rule above, change all occurences of the machine name of that field to match the machine name of your field (and adapt the possible values like 'A' and 'B' in my example, and then you can simply import this Rules Component in your own environment.

After you did this, you can navigate to admin/config/workflow/rules/components in your own site, and then use the hyperlink "execute" to qa-test it in your own site. After you use that link, use the button that says Switch to direct input mode. Then you'll be able to enter some Node identifier and hit the Execute mode. Depending on the node id you selected (if it has that field, and if the Rules Condition is satisfied, your node will be updated.

After you're confident your rule works perfect for all variations of your nodes, move on to the next step below.

This step is pretty easy ... Just create an appropriate view of all your about 100.000 nodes to be processed, and transform it into a Views Bulk Operations view. The clue to what you want VBO to do as an operation is ... you guessed it: Execute the Rules Component from Step 2.

Attention: to process 100.000 nodes at once is quite a challenge (memory requirements, etc). Therefor you might want to also watch the video about "More details about VBO settings" ... Before you are tempted to use VBO for processing them all at once ...

  • This Rules Component will be used in "Step 2" below.

  • In my case I have a selection list field with machine name field_optionlist.

  • This field actually has 3 possible values, like so:

    • A (=Advanced).
    • B (=Basic).
    • C (=Custom).
  • As an example, I decided to use a Rules Condition "The selected value must NOT be Advanced" (assume that's the value I do not want to reset).

  • For any other value of that field I want the Rules Action to change the value of that field to Basic.

If you want, just grab (copy) the exported rule above, change all occurences of the machine name of that field to match the machine name of your field (and adapt the possible values like 'A' and 'B' in my example). After doing so you can simply import this Rules Component in your own environment.

After you imported this Rules Component, navigate to admin/config/workflow/rules/components in your own site. Then use the hyperlink "execute" to qa-test it in your own site. After you use that link, use the button that says Switch to direct input mode. Then you'll be able to enter some Node identifier and hit the Execute button. Depending on the node id you selected (i.e. if it has that field, and if the Rules Condition is satisfied), your node will be updated accordingly.

After you're confident your Rules Component works perfect for all variations of your nodes, move on to step 2 below.

This step is pretty easy ... Just create an appropriate view of all your about 100.000 nodes to be processed, and transform it into a Views Bulk Operations view. The clue to what you want VBO to do as an operation is ... you guessed it: Execute the Rules Component from Step 1.

Attention: to process 100.000 nodes at once is quite a challenge (memory requirements, etc). Therefor you might want to also watch the video about "More details about VBO settings" ... Before you are tempted to use VBO for processing them all at once ...

Video tutorials

If you're not familiar (enough/yet) with Rules, checkout the 32 (!!!) great, and free, video tutorials Learn the Rules framework, organized in 7 chapters.

Source Link
Pierre.Vriens
  • 36k
  • 40
  • 50
  • 182

Question refinement

This answer ALSO takes into account the answer to my extra comment like "What should the updated value become for a node that currently has value No? Should it become Yes or remain No?". And to which you answered like "Good question :) For this case, every node should have the Yes value. But for other cases we should check the current value first and then change if needed, you're right".

Step 1: Create a Rules Component

Have a look at this example of a Rules Component (in Rules export format):

{ "rules_set_an_initial_value_for_a_text_field" : {
    "LABEL" : "Set an initial value for a text field",
    "PLUGIN" : "rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "USES VARIABLES" : { "node" : { "label" : "Node", "type" : "node" } },
    "IF" : [
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_optionlist" } },
      { "NOT data_is" : { "data" : [ "node:field-optionlist" ], "value" : "A" } }
    ],
    "DO" : [
      { "data_set" : { "data" : [ "node:field-optionlist" ], "value" : "B" } }
    ]
  }
}

Some more details to further explain the above above example:

  • This Rules Component will be used in the subsequent step.
  • In my case I have a selection list field with machine name field_optionlist.
  • This field actually has 3 possible values, like so:
    • A (=Advanced).
    • B (=Basic).
    • C (=Custom).
  • As a sample, I decided to use a Rules Condition "The selected value must NOT be Advanced" (assume that's the value I do not want to reset).
  • For any other value of that field I want the Rules Action to change the value of that field to Basic.

Note that I also added the Rules Condition Entity has field to make that field available for further processing in this Rules Component. That's also what is mentioned in the Rules UI when you're adding a "data comparison" condition: somewhere it says "The data selector helps you drill down into the data available to Rules. To make entity fields appear in the data selector, you may have to use the condition 'entity has field' (or 'content is of type')". For a video tutorial that illustrates the importance of this Entity has field condition, refer to Data types and data selection, especially what is shown between about 13:30 and 17:30 in that video.

Note that I've not added a Rules condition here about selected content types, that's possibly an extra condition you might want to add also. But if the selection list field is only used for the content types you're interested in, then the Entity has field condition should be sufficient already.

If you want, just grab (copy) the exported rule above, change all occurences of the machine name of that field to match the machine name of your field (and adapt the possible values like 'A' and 'B' in my example, and then you can simply import this Rules Component in your own environment.

After you did this, you can navigate to admin/config/workflow/rules/components in your own site, and then use the hyperlink "execute" to qa-test it in your own site. After you use that link, use the button that says Switch to direct input mode. Then you'll be able to enter some Node identifier and hit the Execute mode. Depending on the node id you selected (if it has that field, and if the Rules Condition is satisfied, your node will be updated.

After you're confident your rule works perfect for all variations of your nodes, move on to the next step below.

Step 2: Let VBO to the bulk of the work

This step is pretty easy ... Just create an appropriate view of all your about 100.000 nodes to be processed, and transform it into a Views Bulk Operations view. The clue to what you want VBO to do as an operation is ... you guessed it: Execute the Rules Component from Step 2.

If you're not familiar with how to do so, have a look at the video about Using Rules components with VBO". If you want even more, then also watch the subsequent "Using Rules components with more than one parameter" video.

Of course there are multiple variations of the above approach, like processing by component type, narrowing down your Views output to only "a" specific value, etc. But that should be straight forward, and up to your own imagination.

Attention: to process 100.000 nodes at once is quite a challenge (memory requirements, etc). Therefor you might want to also watch the video about "More details about VBO settings" ... Before you are tempted to use VBO for processing them all at once ...

Happy VBO-ing while Rules-ing!